ios CoreBluetooth [警告]未知错误:1309

Jam*_*Lin 18 iphone objective-c ios core-bluetooth

当我正在开发运行BlueTooth应用程序时,我偶尔会在控制台上收到消息"CoreBluetooth [WARNING] Unknown error:1309".即使消息声明它是一个警告,它也会停止执行应用程序.我已经能够通过关闭蓝牙设置然后重新打开来解决这个问题.任何人都可以告诉我是什么导致这个以及我应该做些什么来避免它?

l0g*_*g3r 3

这是一个已知问题,这是由于 CoreBluetooth 中的死锁(Apple 的 bug)引起的,1309 错误大多出现在您的应用程序作为 Central 和 Peripheral 运行时,并且当操作相互重叠时,会产生死锁(其中可以通过重启设备来解决)。

似乎 BLE 堆栈在其他一些情况下(iOS 7 及更低版本)也会损坏,在 iOS 7.1 堆栈上更加稳定,并且不存在此类问题。
我们如何解决这样的问题呢?
显示故障排除屏幕,用户可以自己解决问题。

您可以在此处找到已知的 iOS 问题http://help.getpebble.com/customer/portal/articles/957568-troubleshooting#Pair

无论如何,我认为你可以开始使用https://github.com/l0gg3r/LGBluetooth这将减少你身边出现错误的机会,并使你的工作更加有效。
这是读/写示例

[LGUtils readDataFromCharactUUID:@"f045"
                     serviceUUID:@"5ec0"
                      peripheral:peripheral
                      completion:^(NSData *data, NSError *error) {
                          NSLog(@"Data : %s Error : %@", (char *)[data bytes], error);
                      }];
Run Code Online (Sandbox Code Playgroud)

int8_t dataToWrite = 0xFF;
[LGUtils writeData:[NSData dataWithBytes:&dataToWrite length:sizeof(dataToWrite)]
       charactUUID:@"cef9"
       serviceUUID:@"5ec0"
        peripheral:peripheral 
        completion:^(NSError *error) {
            NSLog(@"Error : %@", error);
        }];
Run Code Online (Sandbox Code Playgroud)