iOS 7.1 地理围栏和 iBeacons 停止工作

Posted

技术标签:

【中文标题】iOS 7.1 地理围栏和 iBeacons 停止工作【英文标题】:iOS 7.1 Geofencing and iBeacons stop working 【发布时间】:2014-04-10 03:57:46 【问题描述】:

我正在开发一个定位服务应用程序,并且发现了一些奇怪的行为。一旦用户确认使用定位服务,地理围栏图标就会出现在状态栏中。一切正常,无论应用程序正在运行、在后台运行还是不在后台运行,我都会收到进入和退出区域事件。但是在某些时候,地理围栏图标消失了,我的设备对信标不敏感。在我重新启动设备之前,是否存在禁用地理围栏的任何情况?电源循环确实可以恢复。

【问题讨论】:

我也有同样的经历。不幸的是,简单地重新启动应用程序并不能解决问题。我“只是”不得不禁用并重新启用蓝牙,所以 iBeacons 像以前一样工作。然后我不得不重新启动应用程序。到目前为止,这确实只发生在 ios7.1 上,在 iOS7.0 上找不到这种行为 【参考方案1】:

这是 CoreLocation 中新引入的错误。不幸的是,没有已知的自动化方法来解决这个问题。它需要重启电源或蓝牙关闭/开启序列才能解决。

见here。

【讨论】:

【参考方案2】:

我遇到了类似的问题。我的应用程序将在初始运行时工作并定位信标。当我重新启动时,应用程序按预期打开到 ScanViewController 但未检测到信标。

我参考了 *** 上的文章 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 

我运行了应用程序。它没有返回失败错误。我检查了设置。蓝牙已启用并正在检测 BT 设备。

我检查了地理围栏图标的状态栏。存在地理围栏图标。

我等了超过 2 分钟,然后应用检测到信标并按预期工作。呆滞是轻描淡写。我知道重启应该根据我在 *** 和其他资源中阅读的所有 iOS 7.1 文章进行。

我重新启动并等待应用程序检测到信标。平均需要 2 分钟才能检测到信标。我不确定是什么导致了这种缓慢的响应。由于必须在几分之一秒内测量应用程序的响应,我相信开发人员可能会认为他们的应用程序无法正常工作。

如果您的应用未检测到信标或返回失败错误,我建议您等待 2 分钟,看看您的应用是否会检测到信标。我希望这会有所帮助。

【讨论】:

以上是关于iOS 7.1 地理围栏和 iBeacons 停止工作的主要内容,如果未能解决你的问题,请参考以下文章

关闭应用程序时的 iOS 7.1 CoreLocation 和地理围栏

ibeacons 和地理围栏结合 swift

ios 7.1 上的 ibeacon - 应用程序在一段时间后停止收听信标

地理围栏不再从 ios7 中的终止状态重新启动应用程序?

地理围栏有效,但一段时间后停止触发

应用程序终止时停止地理围栏