我有一个使用 CoreBluetooth 框架通过蓝牙 LE 与 iDevice 通信的应用程序。对于我的一个特点,我发送了一个用 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];
外围设备接收到写请求,可以正确解码,可以毫无问题地接受。
有人知道发生了什么吗?