手机重启后 iBeacon 监控/测距

Posted

技术标签:

【中文标题】手机重启后 iBeacon 监控/测距【英文标题】:iBeacon monitoring/ranging after phone restarts 【发布时间】:2014-04-01 14:45:27 【问题描述】:

重启手机后,我的应用停止接收 CoreLocation 委托回调,这是预期的行为吗?我想我记得读过你仍然可以获得回调。如果是这样,文档中是否有任何地方说明它是否可能?

【问题讨论】:

您能说出您使用的是哪个版本的 ios 吗? iOS 7 还是 iOS 7.1?使用 iOS 7.1 重新启动后,监控应该可以工作。 iBeacon 测距仅在应用程序处于活动状态(显示在屏幕上)时起作用。 哦对了忘了提,7.1 【参考方案1】:

这不正常。一个应用程序应该在您的手机重启后获得对 CoreLocation 方法的回调,我已将此功能内置到多个应用程序中并验证它是否有效。

三个因素使这很难测试,因此请确保您考虑到这些:

    iOS 设备重新启动后,它不会立即执行蓝牙扫描来查找 iBeacons。我不知道确切的时间,但可能需要一分钟或更长时间。

    即使经过上述时间,当您的应用程序未在前台搜索 iBeacon 时,扫描 iBeacon 也不会持续进行。请确保您等待最多 15 分钟(重新启动后 16 分钟),然后再声明您没有收到后台通知。

    在典型设置中,重新启动后您将看不到日志记录语句。因此,您很可能会收到回调,但结果是没有任何可见的事情发生。确保你在你的回调中做一些测试,比如一个无条件的本地通知,这样你就可以确定你是否收到了回调。

【讨论】:

哦,嘿,大卫,感谢您一直花时间回答与信标相关的问题……我有关于信标测距的本地通知,等了 20 多分钟,仍然没有通知……我也是对这种行为感到兴奋,不知道该怎么做或测试 等等...你说你“有关于信标测距的本地通知”。您是说监控吗?即使您不重新启动,您通常也根本无法在后台获得测距回调。只能获取监控回调。 就像在 iOS 7.1 中一样,现在您可以在后台获取范围回调,并且据我所知现在可以完全运行......而且,我在 CoreLocation 委托方法中都有通知(didDetermineState:、didEnterRegion: 和didExitRegion:) 能否贴出代码说明:(1)如何在CoreLocation中设置监控,(2)显示本地通知的回调方法。 @davidgyoung :这又与重启后的监控信标有关。因此,如果开始新线程,请考虑在这里发表评论。 1.是否强制使用 UIBackgroundModes - 位置和设备功能 - info.plist 中的位置服务在重启后接收信标监控通知(进入/退出区域)? 2.我在重启设备时在信标区域内。我正在做任何边界穿越。一旦我重启手机,我会再次收到进入区域通知吗?

以上是关于手机重启后 iBeacon 监控/测距的主要内容,如果未能解决你的问题,请参考以下文章

设备重启后的 IOS8 iBeacon 监控

在对iBeacons进行测距和监控之后,蓝牙设备无法连接,直到重置蓝牙

在蓝牙重置之前,蓝牙设备在测距和监控 iBeacons 后无法连接

iOS 在后台监控/测距信标会消耗大量电池

iBeacon 监控无法正常工作

Estimote iBeacons 监控无法在 iOS 9.0.2 上运行