在iOS中的后台实现BLE扫描

时间:2015-05-23 14:45:38

标签: ios objective-c ios7 ibeacon

我有一个关于在iOS应用中扫描BLE设备的查询。

我们的应用程序的用例是每隔15分钟的时间间隔将分配给每个用户的一组BLE设备的位置连续地分享到特定服务器,而不管应用程序的状态如何(终止状态除外)。

关于我们的BLE设备,它每隔4秒钟发送一次广告数据。

我们尝试使用"使用蓝牙LE配件"背景模式,我们不断地使用CBCentralManager中的scanForPeripharal方法和BLE设备的UUID扫描BLE设备。

我们甚至可以在后台获取已扫描设备的列表。 但是当我们锁定设备并且屏幕变为非活动状态/关闭时,我们无法获取扫描设备列表。

在另一个解决方案中,我们尝试使用后台提取,但它非常不一致(实际上它永远不会在给定的时间间隔内被调用)。

我们需要一个解决方案,我们应该能够做到以下几点, 每15分钟一次。 扫描我们附近的BLE外围设备。 获取用户的当前位置。 与MQTT服务器共享。

1 个答案:

答案 0 :(得分:0)

有两种选择:

  1. 如果您有自定义BLE设备,您可以修改它以定期发送iBeacon广告流,比如每15分钟发送10个数据包。使用CoreLocation查找iBeacon的应用每15分钟会在后台唤醒,然后您可以使用CoreBluetooth阅读其他广告。

  2. 您可以让您的应用请求位置后台模式,并请求精确的位置更新。这可能允许您在收到位置更新事件的回调后获取BLE设备发现。缺点是您需要让AppStore评论员满意您的应用程序是一个消费者导航应用程序,以便在AppStore中获取它。