我正在开发一个位置服务应用程序,并且发现了一些奇怪的行为。用户确认使用位置服务后,状态栏中会显示地理围栏图标。一切都很好,无论应用程序是在后台运行,还是在后台运行,我都会进入和退出区域事件。但在某些时候,地理围栏图标消失了,我的设备对灯塔不敏感。在我重启设备之前,是否存在禁用地理围栏的条件?而动力循环确实将它带回来。
答案 0 :(得分:1)
这是CoreLocation中新引入的错误。不幸的是,没有已知的自动方法来解决这个问题。它需要电源循环或蓝牙关/开序列来解决。
请参阅here。
答案 1 :(得分:0)
我遇到了类似的问题。我的应用程序将在初始运行时工作并找到信标。当我重新启动时,应用程序按预期打开到ScanViewController,但没有检测到信标。
我参考了StackOverflow上的文章,iBeacon: didRangeBeacons stops getting called, must reset device for it to work again并回顾了Apple的WWDC 2013视频会议“Corelocation中的新功能”https://developer.apple.com/videos/wwdc/2013/index.php?id=307
我找到了其他CLLocation委托方法:
如果设置了
,则在启动信标区域时 notifyEntryStateOnDisplay = YES;
//The following delegate method will be called:
-(void) locationManager: (CLLocationManager *) manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region {
if (state ==CLRegionStateInside) {
[_locationManager startRangingBeaconsInRegion:region]:
}
//Your alternative code
}
//To help trouble shoot, I added this delegate methods
-(void) locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *) region withError: (NSError *)error {
}
and
-(void) locationManager:(CLLocationManager *)manager rangingBeaconsDidFailForRegion:(CLRegion *) region withError: (NSError *)error {
}
我跑了app。它没有返回任何失败错误。我检查了设置。已启用蓝牙并检测BT设备。
我检查了状态栏的地理围栏图标。存在地理围栏图标。
我等了2分多钟,然后应用程序检测到信标并按预期工作。缓慢是轻描淡写。我知道重启应该根据我在StackOverFlow和其他资源中阅读的所有iOS 7.1文章工作。
我重新启动并等待应用程序检测信标。平均需要2分钟直到信标检测。我不确定是什么导致这种缓慢的反应。由于必须以几秒为单位测量应用响应,我相信开发人员可能会认为他们的应用无法正常工作。
我建议如果您的应用未检测到信标或返回失败错误,请等待2分钟,以查看您的应用是否会检测到信标。我希望这会有所帮助。