2

我有一個應用程序,使用CoreBluetooth框架通過藍牙LE與iDevice-to-iDevice進行通信。對於我的一個特點,我發送一個使用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。

我知道,根據藍牙核心4.0文檔第2卷D部分第2部分,錯誤代碼0x09是連接限制超出。然而,在這種情況下這是沒有意義的(兩者之間只有一個聯繫)。

一個有趣的事實是,如果我只是編碼字符串,並將其發送,沒有任何問題:

NSData *data = [self.localTestString dataUsingEncoding:NSUTF8StringEncoding]; 
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse]; 

外設接收到寫請求時,可以適當對其進行解碼,並可以接受它沒有問題。

任何人有任何想法發生了什麼?

回答

0

你的密鑰存檔數據和你的本地測試字符串有多大?這聽起來像你可能超過了可寫大小的特性。