【问题标题】:Implement BLE scan in the background in iOS在 iOS 后台实现 BLE 扫描
【发布时间】:2015-05-23 14:45:37
【问题描述】:

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

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

关于我们的 BLE 设备,它每 4 秒间隔传输一次广告数据。

我们尝试使用“使用蓝牙 LE 附件”后台模式,并且我们能够使用 CBCentralManager 中的 scanForPeripharal 方法和 BLE 设备的 UUID 连续扫描 BLE 设备。

即使在后台,我们也能够获取扫描设备的列表。 但是当我们锁定设备并且屏幕变为非活动/关闭时,我们无法获取扫描设备的列表。

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

我们需要一个解决方案,使用它我们应该能够执行以下操作, 对于每 15 分钟的时间间隔。 扫描我们附近的 BLE 外围设备。 获取用户的当前位置。 与 MQTT 服务器共享。

【问题讨论】:

    标签: ios objective-c ios7 ibeacon


    【解决方案1】:

    几个选项:

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

    2. 您可以使您的应用程序请求位置后台模式,并请求精细的位置更新。这可能允许您在接收到位置更新事件的回调后获得 BLE 设备发现。缺点是您需要让 AppStore 审核者相信您的应用是消费者导航应用,才能在 AppStore 中获得它。

    【讨论】:

    • 嗨,David,我相信 CoreLocation 使用名为 ProximityUUID 的属性监控提到的信标区域,它如何获取这些 BLE 设备的 ProximityUUID。
    猜你喜欢
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2018-12-30
    相关资源
    最近更新 更多