繁体   English   中英

locationManager:didExitRegion:屏幕关闭时不调用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM