我正在使用适用于iOS的Google Maps SDK和CoreLocation框架的区域监视来实现iOS7应用。注册监视区域后,调用requestStateForRegion方法,但是我对设备(iOS7.0.4,iPhone5S)上的didDetermineState:forRegion方法没有任何反应。
它可以接收didUpdateLocation方法,因此我认为委派过程运行良好。在模拟器上,didDetermineState:forRegion方法已正确调用。
我应该怎么做才能解决这个问题?
初始化代码如下。
任何建议表示赞赏。提前致谢。
- (void)viewDidLoad
{
if (locManager == nil ) {
locManager = [CLLocationManager new];
}
locManager.delegate = self;
CLLocationCoordinate2D targetCenter;
targetCenter.latitude = LATITUDE_CENTER;
targetCenter.longitude = LONGITUDE_CENTER;
CLLocationDegrees radius = TARGET_RADIUS;
if ( locManager.maximumRegionMonitoringDistance < TARGET_RADIUS ){
radius = locManager.maximumRegionMonitoringDistance;
}
self.targetRegion = [[CLCircularRegion alloc]
initWithCenter:targetCenter
radius:radius
identifier:@"TargetRegion"];
BOOL monitoringAvailability = [CLLocationManager isMonitoringAvailableForClass:[self.targetRegion class]];
if( monitoringAvailability ) {
if( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized ) {
[locManager startMonitoringForRegion:self.targetRegion];
}
}
[locManager requestStateForRegion:self.targetRegion];
}
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
if (state == CLRegionStateInside){
NSLog(@"is in target region");
self.isInTargetRegion = YES;
}else{
NSLog(@"is out of target region");
self.isInTargetRegion = NO;
}
}
最佳答案
我自己找到了答案。
在iPhone设备上,
设置->常规->后台应用刷新
启用应用程序的后台应用程序刷新,然后正确调用didDetermineState。
关于ios - CLLocationManager:didDetermineState:forRegion未调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20068083/