swift - 如何在 Swift 中检测未连接的外设是否离开范围?

标签 swift bluetooth-lowenergy core-bluetooth

使用 CoreBluetooth 在 Swift 中编写应用程序,有没有办法在不不断重新扫描的情况下检测我未连接的外围设备是否不再在附近。

最佳答案

与语言无关,如果您未连接到外围设备,那么当外围设备不再处于范围内时,不会有简单的通知。

唯一的解决方案是在 scanForPeripheralsWithServices 的选项中使用 CBCentralManagerScanOptionAllowDuplicatesKey 并维护已知外设的列表,当它们停止报告时将它们从列表中老化。

例如 -

  • 创建字典
  • 当报告外设时,将其添加到 Int 值为 30 的字典中(使用 ID 的字符串作为键)
  • 创建一个每秒触发的 NSTimer
  • 当计时器触发时,迭代字典,递减每个 Int。
  • 如果 Int 达到零,则从字典中删除该外设

关于swift - 如何在 Swift 中检测未连接的外设是否离开范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855931/

相关文章:

swift - 如何在 curried 函数中指定 `weak` self

ios - 如何使用 Swift/iOS 获取 App Store 中可用的最新应用程序版本的版本字符串属性内容?

ios - Alamofire 和并发操作队列

swift - 使用存储的服务扫描特定的 ble 设备

linux - 将 BlueZ Stack 用作外设(广告商)

ios - 在 iOS 中检测 CBPeripheral 对象状态从 "Connected"到 "Disconnected"的变化

ios - 试图了解 L2CAP channel

swift - 从一个 View Controller 访问一组图像到另一个 View Controller ,以添加滑动手势识别器

android - 低功耗蓝牙 (BTLE) 设备支持

ios - iOS BLE特征控制点写入-ATT错误