我正在使用带有 IOS 7.1 的 iPhone5s 进行测试。我使用 locationManagerDidPauseLocationUpdates 委托来调用方法来设置地理围栏。
- (void) monitorForDepartureFromLastKnownStoppedLocation:(Locations *)lastKnownLocation
{
CLLocationCoordinate2D lastLocation = CLLocationCoordinate2DMake(lastKnownLocation.latitude, lastKnownLocation.longitude);
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:lastLocation
radius:300
identifier:@"departure from last stopped location"];
region.notifyOnEntry = NO;
region.notifyOnExit = YES;
[monitorSignificantChangeObject.locationManager startMonitoringForRegion:region];
}
- (void) locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
然后在用户退出该区域时调用委托方法。
在以下情况下一切正常。
- 应用程序在前台。
- 应用程序在后台。
- 屏幕在后台或前台被应用程序锁定。
它在以下情况下无法正常工作:
地理围栏已经退出(即 didExitregion 应该触发)并且屏幕被锁定并且屏幕被关闭(即屏幕是黑色的,这会在屏幕锁定后几秒钟发生)在这种情况下 didExitRegion 根本不会触发。但是,只要我按下主页按钮,屏幕就会打开(仍然锁定),didexitRegion 会立即触发。
这是正常行为还是我错过了什么?