[英]locationManager didExitRegion or locationManager didEnterRegion never called
[英]locationManager:didExitRegion: not called when screen is off
当用户退出区域时,我正在使用区域监视来运行一些代码。 当应用程序在设备屏幕位于locationManger:didExitRegion:
的前台或后台运行时,将按预期方式调用。 但是,当屏幕关闭时,通常在单击电源按钮后才打开屏幕,才得到回调, 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:
方法:
错误域= kCLErrorDomain代码= 5“无法完成该操作。(kCLErrorDomain错误5。)
但是即使出现此错误,当应用程序位于前台时,它仍可以按预期运行。 这是区域监视的预期行为吗? 有人遇到过这种情况么? 这可能是我收到的错误的结果吗?
谢谢!
您是否尝试等待几分钟(4到15)? PS:关闭iDevice之前,您的应用应处于前台状态。 这是基于iBeacon测试的……希望它对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.