BLE在后台

我正在使用iBeacon开展一个项目,要求应用程序在后台不断运行。 没关系这个的实用性,请。 iBeacon API不允许应用程序在不同的背景范围内,或者接收除了进入/退出事件以外的任何其他通信(在设置needsDisplay标志的情况下接受,但这不是我所需要的被动方式)。 一旦进入特定区域,似乎无法检测到应用程序完全背景的情况下您最接近哪个信标。

为了破解这个工作,我build立了一些iOS设备作为CoreBluetooth外围设备,插入,并始终保持应用程序可以不断“发现”。 由于用于外围设备的BLEconfiguration文件是“可连接的”,因此应用程序可以在后台无限期地保持,而iBeacon范围可能全天都在。 为了启动,我已经看到了非常短的电池寿命减less。

现在的问题是,隔天左右,应用程序退出并没有被进入/退出事件唤醒,也没有被其他BLE设备在范围内唤醒。

我明白,用这样的解决办法,肯定会有无数的问题,但是对于我来说,我无法缩小可能造成这种情况的因素。 思考?

每隔一段时间,CoreLocation将挂起,不报告任何新的进入/退出事件。 重新启动手机通常可以解决这个问题。 轶事报告的增加表明,自从iOS 7.1发布以来(在过去的几周中,我看到了另外两个关于StackOverflow的问题,并且我们在Radiusnetworking上对这个问题已经得到了很多的支持请求),这可能更为常见。但没有确凿证据certificate7.1的变化影响了这一点。

编辑:其他地方收集的其他数据显示,当这些挂断事件发生时,蓝牙继续正常工作,它仍然可能作为一个iBeacon传输挂断的设备。 这表明CoreLocation中的一个错误,导致定期的蓝牙LE扫描寻找iBeacons停止。 到目前为止,唯一已知的修复方法是重启受影响的手机。

这个问题非常罕见,我从来没有能够表征它的根源。 这是蓝牙问题吗? 一个CoreLocation问题? 您的设置可能会产生一个find问题的理想方法。

只要你重现这个问题,这是我会做的:

  1. 启动另一个iBeacon扫描程序,如定位iBeacon ,并使其在该区域的任何iBeacons(确保您的接近UUIDsconfiguration。)你看到它们? 如果是的话,蓝牙和CoreLocation的工作,所以这个问题可能与您的应用程序。

  2. 如果您在(1)中看不到任何iBeacon,请转至设置>蓝牙,然后扫描附近的其他设备(即使是传统的蓝牙设备)。 使您的Macbook或蓝牙耳机可见,以便于testing。 如果您没有看到任何设备,则蓝牙挂断。 尝试closures并重新打开。

  3. 如果您在(2)中看到蓝牙设备,但在(1)中看不到iBeacons,则操作CoreLocation可能会遇到操作系统问题。

我有兴趣了解你所看到的。 上面的程序不能解决你的问题,但它可能会给出更多的证据,说明正在进行的修复是否可能。

以下是用户报告类似问题的其他问题:

带有iBeacon的iOS应用程序必须重新启动设备

ibeacon不会在iPhone 4S中出现