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

ios CoreBluetooth[警告]未知错误:1309,ios,iphone,objective-c,core-bluetooth,Ios,Iphone,Objective C,Core Bluetooth,我偶尔会收到“CoreBooth[警告]未知错误:运行我正在开发的蓝牙应用程序时,控制台上出现“1309”。即使消息表明这是一个警告,它也会停止应用程序的执行。我已经能够通过关闭蓝牙设置然后再打开来解决此问题。有人能告诉我是什么原因导致此问题,以及我应该如何避免此问题吗?这是一个已知的问题,它是由CoreBooth(苹果的bug)死锁引起的, 1309错误通常出现在应用程序作为中央和外围设备运行时,并且当操作相互重叠时,会产生死锁(可以通过重新启动设备来解决) 在其他一些情况下(iOS 7及更低

我偶尔会收到“CoreBooth[警告]未知错误:运行我正在开发的蓝牙应用程序时,控制台上出现“1309”。即使消息表明这是一个警告,它也会停止应用程序的执行。我已经能够通过关闭蓝牙设置然后再打开来解决此问题。有人能告诉我是什么原因导致此问题,以及我应该如何避免此问题吗?

这是一个已知的问题,它是由CoreBooth(苹果的bug)死锁引起的, 1309错误通常出现在应用程序作为中央和外围设备运行时,并且当操作相互重叠时,会产生死锁(可以通过重新启动设备来解决)

在其他一些情况下(iOS 7及更低版本),BLE堆栈似乎也会损坏,在iOS 7.1上,堆栈更稳定,并且没有类似的问题。
我们如何解决此类问题?
显示“疑难解答”屏幕,用户可自行解决问题

您可以在此处找到已知的iOS问题

不管怎样,我认为你可以开始使用它,它将减少出现bug的机会,并使你的工作更加有效。
下面是读/写示例

阅读

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

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

由于CoreBluetooth发出了这一“警告”,苹果公司或Bluetooth社区中必须有人编写代码,或者至少知道触发消息的情况。有人能告诉我是什么导致了这一情况,以及我应该如何避免这一情况,或者向我指出一些有助于我进行这一努力的材料吗

如果我不得不冒险猜测的话,我会说,你没有收到太多回复的主要原因是,除了“有时我看到错误1309,事情停止工作”之外,你没有对你的问题进行任何描述


如果您还没有,请在bugreporter.apple.com上提交一个bug,并尽可能详细地说明您正在尝试做什么,重新编写导致问题的步骤,甚至是一个测试应用程序。直接用bug编号回复我,我会跟进

在收到警告之前您是否编写或阅读了一个特性?是否你曾经解决过这个问题吗?我在使用模拟器时偶尔会遇到这种情况。解决方法是先关闭设备上的蓝牙,然后再打开设备上的蓝牙(在我的例子中是模拟器)这里也有同样的问题。我试图找出问题的根源,似乎与scanForPeripheral函数有关。我经常看到这个错误。它是在连接到外围设备时触发的-在导致connectToPeripheral后,didFailToConnectToPeripheral传递了一个未知错误:1309。显然,它楔入了BLE堆栈-只有重新启动t似乎允许中央设备连接到同一外设。这是在两台IOS设备之间。如果您能提供任何帮助,我们将不胜感激-苹果没有提供太多帮助。这里也有同样的问题。似乎有时CoreBooth堆栈会变成不一致的状态,阻止受影响的设备连接到周围的任何BLE设备。我们是能够以确定性的方式重现问题,使用一个简单的应用程序,即服务/特征的扫描器和广告商。当四个或更多设备同时扫描和广告时,如果您关闭并重新启动应用程序三到四次,它将变为不一致的状态,返回臭名昭著的CoreBooth[警告]未知错误:1309我们无法修复该问题。