我正在尝试将BLE项目转换为使用通知而不是轮询。我使用Broadcom BCM20736作为设备并连接到我的MBP(优胜美地)或iPhone 5(iOS8.1.2)。
我可以愉快地发现外围设备并发现特征。问题是,当我尝试订阅通知时,我总是会收到“未知错误”错误,代码如下。
//Subscribe to any characteristic that is configured for Notifications
if (characteristic.properties & CBCharacteristicPropertyNotify)
{
[peripheral setNotifyValue:YES forCharacteristic:characteristic];
}
对于有问题的特性,在转储CBCharacteristicProperties时,在didDiscoverCharacteristicsForService中,它们具有以下属性:
Discovered Characteristic - 6606AB42-89D5-4A00-A8CE-4EB5E1414EE0
CBCharacteristicPropertyRead
CBCharacteristicPropertyWriteWithoutResponse
CBCharacteristicPropertyWrite
CBCharacteristicPropertyNotify
CBCharacteristicPropertyIndicate
我怀疑特征属性可能配置错误,但任何建议都会受到赞赏。
编辑#1: 在设备端进行一些额外的挖掘之后,看起来特性被配置为长特征并且启用了通知,这在我们正在使用的组件中是不允许的。