gpt4 book ai didi

ios - 地理围栏 didEnterRegion,didExitRegion 函数不在 iphone 5S iOS8.1 中调用

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:44 25 4
gpt4 key购买 nike

我调试了一整天,delegate 确实被调用了。

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region

这是我调用监视器的标准代码。使用 CoreLocation.framework。

[locationManager startMonitoringForRegion:geofence];

并将这些注册到我的 plist 中。

<key>NSLocationAlwaysUsageDescription</key>
<string>Lugang</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Lugang</string>

启用后台应用刷新,但我没有在其中看到我的应用。

我曾尝试在 LocationManager 实例中打印我的 monitoredRegions 并且有我的监控区域。

NSLog(@"%@" ,locationManager.monitoredRegions);

并且 regionMonitoringAvailable 为真。

NSLog(@"%d" , [CLLocationManager regionMonitoringAvailable] );

在 iOS 8 中,我请求了 requestAlwaysAuthorization

[locationManager requestAlwaysAuthorization];

我试过三种状态,应用在前台,应用在后台,应用未激活。这些州都没有打电话。

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

根本没有收到任何错误。

我试过了

[locationManager requestStateForRegion:geofence];

工作正常。

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region

确实在我的 requestStateForRegion 中触发了。

我不知道是什么让 didEnterRegion 没有被调用,我知道在 iOS 7 和更高版本的设备中工作,但我现在没有这样的设备来作证。

也许 requestStateForRegion 可以满足我的要求,但我仍然无法弄清楚 DidEnterRegion 是如何工作的。这些都不会触发任何错误消息来告诉开发人员进行调试。

最佳答案

我遇到了同样的问题,以下是我遵循并获得成功的步骤。

  • locationmanager 中添加您的地理围栏数组数据之后。使用下面的代码。

    for (CLRegion *monitored in [locationManagerGeofence monitoredRegions])
    {
    [locationManagerGeofence stopMonitoringForRegion:monitored];
    }
    self.geofencesArray = [NSMutableArray arrayWithArray:[self buildGeofenceData]];
    if([CLLocationManager regionMonitoringAvailable])
    {
    for (CLRegion *region in self.geofencesArray)
    {
    [locationManagerGeofence startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyBest];
    }
    }
    else
    {
    [BB_Global displayAlertWithTitle:@"" message:@"This app requires region monitoring features which are unavailable on this device."];
    }
  • 确保您的 wifi 已开启。
  • 与以下代表一起检查您对区域的开始监控。

    -(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
    {
    NSLog(@"Started monitoring %@ region", region.identifier);
    }
  • 将这两个委托(delegate)方法用于地理围栏。 1) DidEnter 2)DidExit

  • 在一些移动或其他地方测试您的设备(确保将您的地理围栏设置为半径为 100 米的不同位置)。同样,您在 DidEnterDidExit 方法中实现了本地通知,因此无需调试。一旦你的方法被调用,本地通知就会被触发。
  • 取得成功:)

关于ios - 地理围栏 didEnterRegion,didExitRegion 函数不在 iphone 5S iOS8.1 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27521220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com