【问题标题】:locationManager:didExitRegion: not called when screen is offlocationManager:didExitRegion: 屏幕关闭时不调用
【发布时间】:2014-03-02 11:18:02
【问题描述】:

当用户退出一个区域时,我正在使用区域监控来运行一些代码。当应用程序在前台或后台运行且设备屏幕位于locationManger:didExitRegion: 时,会按预期调用。但是,当屏幕关闭时,我通常在通过单击电源按钮打开屏幕之前不会收到回调,此时会立即调用locationManger:didExitRegion:。所有测试均在 iPhone 5s 上完成。

我是这样设置区域的:

self.monitoredRegion = [self setupGeoFenceWithCenter:self.currentLocation radius:200];
[self.locationManager startMonitoringForRegion:self.monitoredRegion];

-(CLRegion *)setupGeoFenceWithCenter:(CLLocation *)center radius:(CGFloat)radius
{
    if (radius > self.locationManager.maximumRegionMonitoringDistance)
    {
        radius = self.locationManager.maximumRegionMonitoringDistance;
    } 
    CLRegion * region =  [[CLCircularRegion alloc] initWithCenter:center.coordinate
                                                           radius:radius
                                                       identifier:@"geofence"];
    return region;
}

这是委托回调:

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
    NSLog(@"Exited Region");
}

这是CLLocationManager 的初始化:

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
self.locationManager.distanceFilter = kCLDistanceFilterNone;

另外,最近我注意到locationManager:monitoringDidFailForRegion:withError: 方法被更频繁地调用并出现以下错误描述:

Error Domain=kCLErrorDomain Code=5 "无法执行该操作 完全的。 (kCLErrorDomain 错误 5.)"

但即使出现此错误,当应用程序处于前台时,它仍按预期工作。 这是区域监控的预期行为吗?有人遇到过这种情况么?这可能是我遇到的错误的结果吗?

谢谢!

【问题讨论】:

  • 我正在使用 iOS 模拟器的高速公路驾驶模拟对其进行测试。我的代表永远不会被召唤……有什么想法吗?我已经设置了委托,并且 CLLocationManager 对象也被保留了......

标签: ios iphone objective-c core-location geofencing


【解决方案1】:

您是否尝试等待几分钟(4 到 15 分钟)? PS:在关闭 iDevice 之前,您的应用程序应该在前台。这是基于 iBeacon 测试...希望它对您的情况有所帮助。

【讨论】:

  • 4-15 分钟似乎太长了。文档里有写吗?另外,你为什么说应用程序必须在前台?根据 Apple 的说法,即使应用程序被终止,一旦跨越区域边界,应用程序就会启动并收到通知。
猜你喜欢
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
相关资源
最近更新 更多