Ответ 1
Это известная проблема, вызванная тупиком в 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, что уменьшит вероятность появления ошибок на вашей стороне и сделает вашу работу намного более эффективной.
Вот примеры чтения/записи
Read
[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);
}];