ios CoreBluetooth [ПРЕДУПРЕЖДЕНИЕ] Неизвестная ошибка: 1309

Время от времени я получаю сообщение «CoreBluetooth [ПРЕДУПРЕЖДЕНИЕ] Неизвестная ошибка: 1309» на консоли при запуске приложения BlueTooth, которое я разрабатываю. Несмотря на то, что в сообщении указано, что это предупреждение, оно останавливает выполнение приложения. Мне удалось чтобы обойти эту проблему, выключив и снова включив настройку Bluetooth.Может ли кто-нибудь сказать мне, в чем причина этого и что мне следует делать, чтобы этого избежать?


person James Lin    schedule 04.12.2013    source источник
comment
Вы писали или читали характеристику до того, как получили это предупреждение?   -  person Larme    schedule 18.12.2013
comment
Вы когда-нибудь решали это? Я получаю это иногда при использовании симулятора. Обходной путь — выключить, а затем включить Bluetooth на устройстве (симулятор в моем случае).   -  person OneGuyInDc    schedule 11.01.2014
comment
Та же проблема здесь. Я попытался изолировать источник проблемы и, кажется, связан с функцией scanForPeripheral.   -  person valvoline    schedule 08.02.2014
comment
Я часто вижу эту ошибку. Он срабатывает при подключении к периферии - после вызова connectToPeripheral didFailToConnectToPeripheral передается Неизвестная ошибка: 1309. Это, по-видимому, подклинивает стек BLE - похоже, только перезагрузка позволяет центральному подключиться к тому же периферийному устройству. Это между двумя устройствами IOS. Любая помощь будет принята с благодарностью - Apple не очень помогает.   -  person moe    schedule 17.02.2014
comment
Та же проблема здесь. Кажется, что иногда стек CoreBluetooth переходит в несогласованное состояние, которое не позволяет затронутому устройству подключаться к любому устройству BLE поблизости. Мы смогли воспроизвести проблему детерминированным образом, используя простое приложение, которое является одновременно сканером и рекламодателем услуги/характеристики. Когда четыре или более устройств сканируют и рекламируют одновременно, если вы завершите и перезапустите приложение три или четыре раза, оно перейдет в несогласованное состояние, возвращая печально известную ошибку CoreBluetooth [ПРЕДУПРЕЖДЕНИЕ] Неизвестная ошибка: 1309 Нам не удалось исправить проблема.   -  person valvoline    schedule 23.02.2014
comment
Я также получаю эту проблему. Есть ли способ обострить проблему с яблоком?   -  person Allen    schedule 09.03.2014
comment
Я думаю, что такая ситуация возникает, когда вы сохраняете соединение с периферийным устройством и никогда не отключаете его. Попробуйте отключить его как можно скорее.   -  person Kevin Cao    schedule 12.03.2014
comment
Я знаю, что эта тема довольно старая, я просто хотел добавить, что столкнулся с этой проблемой и понял следующее: 1) кажется, что это происходит только при подключении к устройству, к которому вы ранее подключались, и 2) я смог это исправить с простым механизмом повторных попыток - кажется, что простая попытка снова подключиться через несколько секунд работает для меня все время. Может это поможет ^^   -  person BlackWolf    schedule 05.07.2014
comment
Вы пытаетесь сканировать какое-либо устройство с помощью ядра Bluetooth?   -  person Balaji Kondalrayal    schedule 29.07.2014


Ответы (2)


Это известная проблема. Она возникает из-за взаимоблокировки в CoreBluetooth (ошибка Apple), ошибка 1309 в основном появляется, когда ваше приложение работает как центральное и периферийное, и когда операции перекрывают друг друга, в этом случае возникает взаимоблокировка (которая решается перезагрузкой устройства).

Похоже, что стек 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);
                      }];

Написать

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

Поскольку CoreBluetooth выдает это «предупреждение», должен быть кто-то в Apple или в сообществе Bluetooth, кто написал код или, по крайней мере, знает, в какой ситуации вызывается сообщение. Может ли кто-нибудь сказать мне, что вызывает это и что мне следует делать, чтобы этого избежать, или указать мне какой-нибудь материал, который поможет мне в этом начинании?

Если бы мне пришлось рискнуть предположить, я бы сказал, что основная причина, по которой вы не получили большую часть ответа, заключается в том, что вы не дали описания своей проблемы, кроме «иногда я вижу ошибку 1309, и все перестает работать».

Если вы еще этого не сделали, сообщите об ошибке на сайте bugreporter.apple.com и включите как можно больше подробностей — описание того, что вы пытаетесь сделать, воспроизведите шаги, которые привели к проблеме, даже тестовое приложение. Ответьте мне напрямую, указав номер ошибки, и я свяжусь с вами.

person bLacK hoLE    schedule 12.08.2014