使用 CoreBluetooth 在 Swift 中编写应用程序,有没有办法在不不断重新扫描的情况下检测我未连接的外围设备是否不再在附近。
最佳答案
与语言无关,如果您未连接到外围设备,那么当外围设备不再处于范围内时,不会有简单的通知。
唯一的解决方案是在 scanForPeripheralsWithServices
的选项中使用 CBCentralManagerScanOptionAllowDuplicatesKey
并维护已知外设的列表,当它们停止报告时将它们从列表中老化。
例如 -
- 创建字典
- 当报告外设时,将其添加到 Int 值为 30 的字典中(使用 ID 的字符串作为键)
- 创建一个每秒触发的 NSTimer
- 当计时器触发时,迭代字典,递减每个 Int。
- 如果 Int 达到零,则从字典中删除该外设
关于swift - 如何在 Swift 中检测未连接的外设是否离开范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855931/