使用iPhone作为外设时的连接问题

我正在使用iPhone作为外设来暴露蓝牙低能量的一些价值,并使用浅蓝色(在另一个iphone上)进行debugging。 我所看到的是20秒​​后aprox与外设的连接丢失了吗? 有任何想法吗?

外设iPhone:5c iOS 8.1中央iPhone与浅蓝色应用程序:5s iOS 8.1

另外,当我用我的Mac Book Pro OS X 10.9.5与浅蓝色桌面应用程序与外围设备的连接丢失。

我也尝试了另一个我写的检查连接错误的应用程序,我得到'外设已经从我们断开连接'的错误信息,这个应用程序与其他BLE设备正常工作。 所以问题是iPhone处于外设模式时。

在连接之前的20秒延迟是安全pipe理员问题的典型症状。

安全pipe理器协议是为BLE添加的新块。 链路层将允许连接,然后有20秒的差距,而安全pipe理器有一个看看是否存储了长期密钥,它应该与它现在连接的设备配对后存储。 如果没有find这些密钥,则会终止链路层连接。

如果您不需要安全连接,请在创build设备属性时删除“EncryptionRequired”属性:

self.cp_charac = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:CONTROL_POINT_CHARAC] properties:CBCharacteristicPropertyRead | CBCharacteristicPropertyWrite | CBCharacteristicPropertyWriteWithoutResponse | CBCharacteristicPropertyNotify value:nil permissions:CBAttributePermissionsReadEncryptionRequired | CBAttributePermissionsWriteEncryptionRequired ]; 

你可以在权限下面的代码片段中看到它们。

来自BT SIG的Security_Manager.pdf的第16页 BT SIG网站的Security_Manager.pdf第16页(doc by thomas.t.muller@nmp.nokia.com)。

另请参阅Core_v4.1.pdf的BT Spec, https ://www.bluetooth.org/en-us/specification/adopted-specifications页面631

如果安全pipe理器计时器达到30秒,程序将被视为失败,并通知本地上层。