CoreBluetooth フレームワークを使用して Bluetooth LE 経由で iDevice 間を通信するアプリがあります。私の特徴の1つとして、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 は Connection Limit Exceeded です。ただし、これはこの状況では意味がありません (2 つの接続は 1 つしかありません)。
興味深い事実として、文字列をエンコードして送信するだけであれば、問題はありません。
NSData *data = [self.localTestString dataUsingEncoding:NSUTF8StringEncoding];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];
ペリフェラルは書き込み要求を受け取り、それを適切にデコードし、問題なく受け入れることができます。
誰が何が起こっているのか知っていますか?