核心蓝牙-在iOS14上保持连接



总之,我有一个设备通过ble与我的应用程序通信。该应用程序使用Corebluetooth来处理连接和通信。

问题:

当设备超出范围时,它将断开连接->它调用didisconnect((函数,在那里我检查它是否超时,并再次调用central.connect。

然后它将启动连接,并立即在某些设备上(仅iOS14(,此时它将转到didfailto连接,并显示一个错误:

"错误域=CBErrorDomain代码=15";加密连接失败,连接意外超时"UserInfo={NSLocalizedDescription=加密连接失败,连接意外超时

据我所见,似乎只存在于iOS14设备上。

我还测试了阻塞信号,如果我阻塞来自设备的信号,问题就不明显了。如果我屏蔽了来自手机的信号,问题就显而易见了。不知道这是怎么回事,感觉他们都触发了超时。

其他地方可能也有问题,但在我的iOS13设备上似乎处理得很好。(主要在4部手机上测试,每个版本2部(

同样需要澄清的是,应用程序充当中心,设备充当外围。

如果我正确解释了来自CBErrorEncryptionTimedOut(15(的错误消息,这意味着设备启动了连接,然后,在iOS设备启动加密程序后,连接突然终止。

因此,应该以与CBErrorConnectionTimeout(6(大致相同的方式来处理它。

如果这种情况一直发生,你应该使用BLE嗅探器来查看发生了什么;也许是iOS中的某个错误。

最新更新