我正在编写一个iOS应用程序,它与我们正在开发的BLE设备进行通信。大多数通信不需要绑定,但有一些安全功能需要绑定。我已将这些安全功能放在一个单独的服务中,该服务已被标记为需要绑定,当我尝试访问该服务时,iOS会正确启动绑定过程。
我遇到的问题是,我希望能够准确控制何时发生这种绑定,以便我可以适当地设计我的UI。大多数情况下,iOS会在我开始绑定过程之前等待我尝试访问安全服务,但是在调用CBPeripheral.DiscoverCharacteristics()之后不久我也看到了绑定对话框,并且在我实际使用安全服务之前很久任何东西。如果我已经粘贴一次然后在iOS和远程BLE设备中删除了绑定,那么当我重新运行应用程序时,绑定对话框似乎会出现在后面。
我猜测iOS正在缓存服务/特征信息,因此在第一次连接后我调用CBPeripheral.DiscoverCharacteristics()时它实际上并没有与远程BLE设备通信,因此不会触发绑定的需要
关于如何在OSX上清除蓝牙缓存有一个discussion,但iOS没有类似的东西。我试过这个:
但是绑定请求对话框仍然会出现,我猜这意味着缓存实际上没有被清除。
答案 0 :(得分:1)
如果设备未绑定且外围设备发送SMP"安全请求",它将显示弹出窗口。
当您尝试与受保护的特征进行交互时,它也会显示它。