2

У меня есть приложение, которое сообщает iDevice-to-iDevice через Bluetooth LE с использованием основы CoreBluetooth. По одной из моих характеристик я отправляю дату, закодированную NSKeyedArchiver (например, в accepted answer for this question).Ошибка 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]; 

Периферийное получает запрос на запись, может декодировать его должным образом, и может принять его без проблем.

У любого есть идеи, что происходит?

ответ

0

Насколько велики ваши данные с ключом-архивом и локальная тестовая строка? Похоже, что вы можете превысить допустимый размер для характеристики.