【发布时间】:2018-08-18 09:23:49
【问题描述】:
我正在编写一个与我们正在开发的 BLE 设备通信的 iOS 应用程序。大多数通信不需要绑定,但有一些安全功能需要绑定。我已将这些安全功能放在一个单独的服务中,该服务已被标记为需要绑定,当我尝试访问该服务时,iOS 会正确启动绑定过程。
我遇到的问题是,我希望能够准确控制这种绑定发生的时间,以便我可以适当地设计我的 UI。大多数情况下,iOS 会等到我尝试访问安全服务后再开始绑定过程,但我也看到绑定对话框在我调用 CBPeripheral.DiscoverCharacteristics() 后不久出现,并且在我实际使用安全服务之前很久任何事物。如果我在已经绑定一次后重新运行应用程序,然后在 iOS 和远程 BLE 设备中删除绑定,则绑定对话框似乎稍后会出现。
我猜 iOS 正在缓存服务/特征信息,所以在第一次连接后,当我调用 CBPeripheral.DiscoverCharacteristics() 时,它实际上并没有与远程 BLE 设备通信,因此不会触发绑定的需要.
有一个discussion 关于如何清除 OSX 上的蓝牙缓存,但对于 iOS 没有类似的。我试过这个:
- 在 iOS 中解除绑定设备
- 关闭蓝牙
- 关闭 iPad
- 重新开启 iPad
- 重新开启蓝牙
但是绑定请求对话框仍然稍后出现,我猜这意味着缓存实际上并没有被清除。
【问题讨论】:
标签: ios bluetooth-lowenergy pairing