我有一个 iOS 和 macOS 应用程序,大量使用核心蓝牙。该应用程序的核心功能包括将中央设备 (
CBCentralManager
) 连接到外围设备 (CBPeripheralManager
),检索一些数据,然后断开连接。无论是 macOS 还是 iOS,任何设备都可以充当中央设备或外围设备,具体取决于谁需要数据。
起初我以为我的代码有问题,但在使用两个 iOS 设备测试应用程序后,即使外围设备被锁定且应用程序处于后台,其中一个也能够连接外围设备并从外围设备提取数据。现在根据“蓝牙外设后台执行模式”下有关 iOS 后台广告的文档,这是预期的:
...只有明确扫描它们的 iOS 设备才能发现它们。有没有办法让 macOS 应用程序发现外围设备,即使它们处于后台?我确信我编写的代码是正确的,因为它在 iOS 和 macOS 上都是相同的。
更新1
此发现是从我的 iOS 设备上有关来自我的
peripheralManager(CBPeripheralManager, didReceiveRead: CBATTRequest)
的读取请求的日志中得到验证的。