我有一个应用程序,使用CoreBluetooth框架通过蓝牙LE传送iDevice-to-iDevice。对于我的一个特征,我发送一个用NSKeyedArchiver编码的日期(例如在accepted answer for this question中)。
当发生这种情况时,我得到:
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 :(得分:0)
您的密钥存档数据和本地测试字符串有多大?听起来你可能超出了特征的可写大小。