我有我的应用程序在两台 iOS 设备(都有 6.1.4)上运行,其中一台设备充当中央设备,一台设备充当外围设备。
我已经成功地从外围设备获取通知(设置为通知的特征)到中央就好了。
但是,我想将一个从 Central 到 Peripheral 的值写入特定的可写特征,但这总是失败。
委托的peripheral:didWriteValueForCharacteristic:error:
方法立即被调用,错误描述如下:
“一个或多个参数无效”
我一直在网上搜索任何线索,但尚未提出问题所在。
这就是我在外围设备端设置特征的方式:
[[CBMutableCharacteristic alloc] initWithType:<My CBUUID> properties:CBCharacteristicPropertyWrite value:nil permissions:0];
我发现,当我发现中央一侧的特征时,我的可写特征就在那里。我确实在那时存储了一个参考,我稍后在编写我的值时尝试使用它。我正在编写的值只是一个文本字符串,我将其转换为 NSData,如下所示:
NSString *payloadMessage = @"Hello";
NSData *payload = [payloadMessage dataUsingEncoding:NSUTF8StringEncoding];
[peripheral writeValue:payload forCharacteristic:<myCharacteristic> type:CBCharacteristicWriteWithResponse];
我能看到的唯一奇怪的事情是我的特征属性设置为 138。看起来它既可写又具有扩展属性。不知道为什么 CoreBluetooth 框架会自动添加它。不知道有没有关系。
我试图发送的特征或数据似乎有问题,但对于我的生活,我无法弄清楚。如果有人有任何建议或想法,我将不胜感激