那么iOS6及其如何处理蓝牙LE断开是怎么回事?在设备立即断开之前,但由于某些奇怪的原因,设备等待断开约30-60秒。我需要它来断开ASAFP!
我一直在互联网上试图弄清楚如何立即断开与外围设备的连接,我发现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];
我也很仔细地看了一下Apple的CoreBluetooth Temperature Sensor例子,但它并没有太多帮助......
对此的任何帮助都会很棒!!我只是不知道我错过了什么......
更新:看起来应用程序需要连接到蓝牙设备至少一分钟才能断开连接。如果应用程序连接超过一分钟,它将在发送命令时立即断开连接。否则,它将等到那一分钟标记实际断开。
更新:当我尝试在一分钟标记之前断开连接时,当设备实际断开连接时,我会将以下输出发送到日志。
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.
答案 0 :(得分:6)
根据Apple的说法,这个新功能是“按设计”。 我们解决这个问题的方法是向外围设备发送一个命令并将其从端部断开。如果这样做,则立即断开连接。我不知道为什么Apple将这种行为从iOS5改为iOS6,但他们必须有他们的理由。当然,只有您可以访问外围设备固件并且可以更改它时,此解决方案才有效。如果有不同的解决方案,那么我们还没有找到它。
答案 1 :(得分:0)
这是iOS 6.0中的一个错误,在6.1中已修复。