5

当我使用 iPhone 6S 在 iOS 9.1 上使用加密连接到 BLE 外围设备时,BLE 外围设备会立即断开连接。我已经验证这适用于 iOS 8 和 9.02。我已验证正在调用 CBCentralManager didConnect 委托方法,并且正在返回有效的 CBPeripheral 对象。

BLE 外设立即断开连接。在断开连接之前,我什至无法继续发现任何服务或特征。调用了 CBCentralManager didDisconnect 方法,但没有返回错误。

还有人看到这个吗?这已经正常工作了一年多,就像我说的那样,只有在 iPhone 6S 上使用 iOS 9.1 时才会发生这种情况。9.1 上没有任何其他外围设备可供测试。

更新

根据 Apple 的说法,这个问题正在发生,因为我们没有将外围设备与 iPhone 绑定。所以我们已经更新了外围设备上的固件,现在正在绑定。这提出了围绕维护电话和外围设备之间的绑定对的不同问题。我们的外设内存有限,因此我们无法保持无限量的键引用。为了处理这种情况,外设最多允许存储 8 个 BLE 绑定。当它收到第九个请求时,第一个绑定将从绑定设备的外围设备列表中删除。这带来了一个问题,因为 iPhone 不知道此绑定已被删除,并且当我尝试与第一台设备连接并与特征交互时,系统不会提示我配对。据我了解,这是启动加密过程的原因。

我想知道是否有办法从 iPhone 的绑定设备列表中删除绑定/设备,然后进入蓝牙设置并“忘记”设备。

更新#2

Apple 已确认由于安全问题,无法从应用程序的蓝牙设置中的“我的设备”部分删除绑定的外围设备。

基于此,场景现在变成了以下内容。iOS 设备在“我的设备”下引用了曾经绑定的外围设备,但是该外围设备在其绑定的设备表中不再引用 iOS 设备。

当我尝试将仍然具有绑定引用的 iOS 设备连接到不再具有绑定引用的外围设备时,我们可以成功连接。但是,在我连接成功后,我发现了该特征,将其设置为通知并接收无响应和无配对消息。解决此问题的唯一解决方案是进入“设置”和“忘记”设备,然后尝试重新连接。

有没有其他人遇到过这个问题?建议?

谢谢!

4

0 回答 0