CoreBluetooth - 在没有 LightBlue 的情况下不会调用后台模式下的 didDiscoverPeripheral

Posted

技术标签:

【中文标题】CoreBluetooth - 在没有 LightBlue 的情况下不会调用后台模式下的 didDiscoverPeripheral【英文标题】:CoreBluetooth - didDiscoverPeripheral in background mode not called without LightBlue 【发布时间】:2017-04-21 21:56:58 【问题描述】:

我正在尝试在后台扫描 BLE 设备,但我的 didDiscoverPeripheral 方法没有被调用。我已经等了 5 分钟,但什么也没发生,但是当我打开其他蓝牙应用程序(如“LightBlue”)时,我的 didDiscoverPeripheral 立即被调用。每次都会发生这种情况。如何在不运行 LightBlue 的情况下完成这项工作?

这是我的扫描代码: central.scanForPeripherals(withServices: [cbuuid], options: nil)

项目具有正确的后台设置,因为在启动 LightBlue 后 didDiscoverPeripheral 正在后台工作。

【问题讨论】:

【参考方案1】:

我已经发现问题出在哪里了。

蓝牙设备有两种广告,一种是无服务uuid​​。在后台 ios 跳过没有服务 uuid 的广告。我已将设备内的所有广告包更改为具有服务 uuid,现在一切正常。

【讨论】:

以上是关于CoreBluetooth - 在没有 LightBlue 的情况下不会调用后台模式下的 didDiscoverPeripheral的主要内容,如果未能解决你的问题,请参考以下文章

Mac App 中的 CoreBluetooth 权利

CoreBluetooth - 未为服务设置 UUID

是否可以使用 CoreBluetooth 找到 3.0 蓝牙设备?

iOS CoreBluetooth 获取唯一的外设 ID

CoreBluetooth 知道广告何时停止

CoreBluetooth stop 广告不停止