后台 CBPeripheral 无法保持可读性

Backgrounded CBPeripheral doesn't stay readable

我有一个应用程序可以广播带有少量文本的 CBPeripheral。 我使用bluetooth-peripheral后台模式让它在后台播放。

当我从另一台设备扫描时,在前台工作正常。我检测外围设备、连接、发现服务,然后从服务中读取数据。

然而,在后台,有些事情不太对劲。我用我的服务扫描外围设备,发现没问题。我连接也很好。然后我 discoverServices 使用我的服务,当 didDiscoverServices 回调被调用时,我的服务也很好。然而在这个回调中,外设有没有个服务! peripheral.services 为空。 如果没有这项服务,它就不会走到这一步,那有什么好处呢? 这个回调中的error也是nil

在 iOS 12

上播放 CBPeripheral 时一切正常

编辑 ----- 说得太早了,现在我的 iOS 12 设备似乎开始出现相同的症状。片刻之后,CBPeripheral 无法正常工作。

问题已通过在 CBPeripheralManager 上调用 startAdvertising 时添加 CBAdvertisementDataLocalNameKey 键解决。如果您希望 CBPeripheral 在后台继续广播,似乎需要此密钥。苹果文档没有提到这一点。