iOS什么时候显示“需要绑定”对话框?

时间:2018-03-09 18:26:28

标签: ios bluetooth-lowenergy pairing

我正在编写一个iOS应用程序,它与我们正在开发的BLE设备进行通信。大多数通信不需要绑定,但有一些安全功能需要绑定。我已将这些安全功能放在一个单独的服务中,该服务已被标记为需要绑定,当我尝试访问该服务时,iOS会正确启动绑定过程。

我遇到的问题是,我希望能够准确控制何时发生这种绑定,以便我可以适当地设计我的UI。大多数情况下,iOS会在我开始绑定过程之前等待我尝试访问安全服务,但是在调用CBPeripheral.DiscoverCharacteristics()之后不久我也看到了绑定对话框,并且在我实际使用安全服务之前很久任何东西。如果我已经粘贴一次然后在iOS和远程BLE设备中删除了绑定,那么当我重新运行应用程序时,绑定对话框似乎会出现在后面。

我猜测iOS正在缓存服务/特征信息,因此在第一次连接后我调用CBPeripheral.DiscoverCharacteristics()时它实际上并没有与远程BLE设备通信,因此不会触发绑定的需要

关于如何在OSX上清除蓝牙缓存有一个discussion,但iOS没有类似的东西。我试过这个:

  1. iOS中的Unbond设备
  2. 关闭蓝牙
  3. 关闭iPad
  4. 重新开启iPad
  5. 重新打开蓝牙
  6. 但是绑定请求对话框仍然会出现,我猜这意味着缓存实际上没有被清除。

1 个答案:

答案 0 :(得分:1)

如果设备未绑定且外围设备发送SMP"安全请求",它将显示弹出窗口。

当您尝试与受保护的特征进行交互时,它也会显示它。