У меня есть приложение, которое связывает iDevice-to-iDevice через Bluetooth LE с использованием фреймворка CoreBluetooth. Для одной из моих характеристик я отправляю дату, закодированную с помощью NSKeyedArchiver (например, в принятом ответе на этот вопрос< /а>).
Когда это происходит, я получаю:
CoreBluetooth[WARNING] Unknown Error: 9
И периферийное устройство даже не получает запрос на запись и не выдает никаких ошибок.
На центральной стороне он делает следующее:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.myDate];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];
Где myDate является допустимым NSDate.
Я знаю, что согласно документации Bluetooth Core 4.0, том 2, часть D, раздел 2, код ошибки 0x09 — «Превышено ограничение на подключение». Однако в данной ситуации это не имеет смысла (между ними существует только одна связь).
Интересен тот факт, что если я просто закодирую строку и отправлю ее, проблем не будет:
NSData *data = [self.localTestString dataUsingEncoding:NSUTF8StringEncoding];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];
Периферийное устройство получает запрос на запись, может правильно его декодировать и без проблем принять.
Кто-нибудь знает, что происходит?