我们正在开发一个使用cordova作为xplatform开发工具的蓝牙项目。
我们正在为Android和iOS开发并为cordova编写一个BLE插件。
在Android上一切正常。现在出现了问题:
在iOS上,我们可以读/写甚至订阅通知。
问题出现在我们尝试接收更新的值时,没有任何反应。
简而言之
- connect to device
- discover services
- discover characterics
- subscribe to notification characteristic
这很好用:
-(void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
正在调用,而characteristic.isNotifying是 true
对特性进行简单的读操作时,
-(void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
正在调用回调。
问题出现了:
从外设更新值时,回调根本就不会被调用。
我们没有任何线索要看,因为根本没有发生错误,所以也许有人知道调试这个问题的方法吗?
注意:使用外部工具连接外设时,订阅特性并更新其值。收到通知。这是iOS特定的。
答案 0 :(得分:0)
好的问题是: 我们在回调接收的临时外设上调用[peripheral setNotificaiton:etc]。 当我们在onConnected存储的外围设备对象上设置通知时,会收到通知。 (self.peripheral)
这不是答案,因为我们重新启动了iOS设备。看起来在这个蹩脚的苹果中存在某种错误。
有人知道如何以编程方式重启蓝牙吗?