Bluetooth デバイスを接続しようとすると、繰り返し接続に失敗し、エラーが表示されますCoreBluetooth[WARNING] Unknown error: 311
。2 台の iPod 5 Touch デバイスを使用しています。
質問する
1793 次
2 に答える
7
私もこれに遭遇しましたが、Core Bluetooth の XPC 通信のバグのようです:
2013-03-22 14:49:24.652 Buggy[985:907] Connecting to peripheral <CBConcretePeripheral: 0x1dd4e150 UUID = (null), Name = "iPhone 5 #003014", IsConnected = NO>
2013-03-22 14:49:24.659 Buggy[985:907] CoreBluetooth[WARNING] Unknown error: 311
2013-03-22 14:49:24.661 Buggy[985:907] Failed to connect to peripheral <CBConcretePeripheral: 0x1dd4e150 UUID = (null), Name = "iPhone 5 #003014", IsConnected = NO>
2013-03-22 14:49:24.689 Buggy[985:907] Discovered peripheral <CBConcretePeripheral: 0x1dd644d0 UUID = (null), Name = "iPhone 5 #003014", IsConnected = NO> with advertisement data {
kCBAdvDataLocalName = "iPhone 5 #003014";
kCBAdvDataServiceUUIDs = (
"Unknown (<b2e74c08 96094371 a8f0978c 655700ea>)"
);
}, RSSI: -50
2013-03-22 14:49:24.692 Buggy[985:907] Connecting to peripheral <CBConcretePeripheral: 0x1dd644d0 UUID = (null), Name = "iPhone 5 #003014", IsConnected = NO>
2013-03-22 14:49:45.035 Buggy[985:110b] CoreBluetooth[ERROR] XPC connection interrupted, resetting
2013-03-22 14:49:45.050 Buggy[985:907] Central manager updated state to: 1
2013-03-22 14:49:45.116 Buggy[985:907] Central manager updated state to: 4
2013-03-22 14:49:47.271 Buggy[985:907] Central manager updated state to: 5
この時点の後、少なくともエラー 311 ループが数分後に再び発生するまで、動作が再開されました。
私にとって信頼できる回避策は次のとおりです。
// In centralManager:didFailToConnectPeripheral:error:, ARC enabled
if (error.code == 0) {
self.centralManager.delegate = nil;
self.centralManager = nil;
// Remove all references to any peripherals you've been interacting with
[self.peripherals removeAllObjects];
/* Some delay (more than the next iteration of the runloop, less than 2 seconds) is required in order to:
* • Allow ARC to drain the autorelease pool, ensuring destruction of the centralManager
* • Allow Core Bluetooth to turn off the radio.
*
* This means that this workaround might not work if:
* • Your code has another active central manager somewhere
* • Another app is using BLE (in theory; I haven't tested this)
*/
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()];
[self startScanning];
});
}
于 2013-03-22T22:58:38.457 に答える
-1
しばらく接続した後にエラーが発生する場合は、次の分析と解決策が役立つと思われます。
http://lists.apple.com/archives/bluetooth-dev/2013/Jan/msg00069.html
于 2013-12-12T20:12:54.037 に答える