在 iOS 上获取有关配对不成功的 BLE 配对对话框

Get BLE pairing dialog on unsuccesful pairing on iOS

我有一个特定 BLE 设备的应用程序,但问题是该设备需要配对才能正常工作。所以第一个配对弹出窗口是自动的,但用户可能无法输入正确的 PIN 或意外关闭它,我现在无法再次显示它。我知道当通过测试写入一个特征来配对不成功并且它失败时,问题不仅是在不重置整个应用程序 and/or 设备的情况下再次向用户显示配对对话框。

怎么做?

我又费了好几个小时才找到解决办法。 第一个设备需要断开连接: cancelPeripheralConnection(_ peripheral: CBPeripheral) 等待来自委托的断开连接响应,然后调用连接: func connect(_ peripheral: CBPeripheral, options: [String : Any]? = nil) 这将再次触发配对对话框。

配对的另一个问题是: - 从 phone 取消应用程序内的设备配对 - 它不起作用,除非您转到 phone 设置和 "forget" 那里的设备或终止应用程序并重新开始。 - 没有配对对话框的回调或事件。作为开发人员,您永远无法知道配对是否成功。我所能做的就是设置一个计时器,并在 15 秒后检查配对是否成功(写一些东西来测试特性),但这给代码带​​来了更多麻烦。遗憾的是,Apple 似乎只是忘记了 iOS 上的配对,而对于 macOS,IOBluetooth 中有配对委托。