好的,iOS6在处理蓝牙LE断开连接方面有什么问题?以前设备会立即断开连接,但现在由于某种奇怪的原因,设备等待大约30-60秒才会断开连接。我需要立即断开连接!
我已经在互联网上搜索了很久,试图找出如何从外围设备发起立即断开连接的方法,我找到了this nifty email,其中解释了一种解决方法,即取消订阅服务特征的通知。
现在我认为我正在这样做...当我想要断开连接时,我调用[connected_device setNotifyValue:NO forCharacteristic:connected_characteristic]
然后,在didUpdateNotificationStateForCharacteristic功能中,我有...
if((int)characteristic.isNotifying == 0){
[manager cancelPeripheralConnection:peripheral];
}
在函数 didDisconnectPeripheral 中...
connected_peripheral = nil;
connected_characteristic = nil;
[connected_peripheral release];
[connected_characteristic release];
我也仔细研究了苹果的CoreBluetooth温度传感器示例,但并没有什么帮助......任何关于此的帮助都将是惊人的!! 我只是不知道我缺少了什么.....
更新:看起来应用程序需要连接到蓝牙设备至少一分钟才能允许断开连接。如果应用程序连接超过一分钟,则在发送命令时立即断开连接。否则,它将等待到那个一分钟标记才实际断开连接。
更新:当我尝试在一分钟标记之前断开连接时,当设备实际断开连接时,日志会输出以下内容。
Oct 24 16:49:35 Christophers-iPhone awdd[8168] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
Oct 24 16:49:35 Christophers-iPhone awdd[8168] <Error>: CoreLocation: CLClient is deprecated. Will be obsolete soon.
[self.peripheralManager stopAdvertising]
和[self.peripheralManager removeAllServices]
,但它仍然不能立即断开连接。直到60秒后,我仍然可以看到右上角有一个白色填充的蓝牙图标... - achow