iOS 7.1 Geofencing和iBeacons停止工作

时间:2014-04-10 03:57:46

标签: ios ibeacon ios7.1 geofencing

我正在开发一个位置服务应用程序,并且发现了一些奇怪的行为。用户确认使用位置服务后,状态栏中会显示地理围栏图标。一切都很好,无论应用程序是在后台运行,还是在后台运行,我都会进入和退出区域事件。但在某些时候,地理围栏图标消失了,我的设备对灯塔不敏感。在我重启设备之前,是否存在禁用地理围栏的条件?而动力循环确实将它带回来。

2 个答案:

答案 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分钟,以查看您的应用是否会检测到信标。我希望这会有所帮助。