当我使用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设备连接到不再具有绑定参考的外围设备时,我们可以成功连接。但是,在我成功连接后,我发现了特性,将其设置为通知并且没有响应,也没有配对消息。解决此问题的唯一解决方案是进入“设置”和“忘记”设备,然后尝试重新连接。
还有其他人遇到此问题吗?建议?
谢谢!