ios – CoreBluetooth didWriteValueForCharacteristic返回旧值

前端之家收集整理的这篇文章主要介绍了ios – CoreBluetooth didWriteValueForCharacteristic返回旧值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
连接到蓝牙设备后,我正在尝试通过调用以下方法为特征写入值:
[peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];

正在调用正确的回调(外围设备:didWriteValueForCharacteristic:error :)但是当我从特征中查看数据时,似乎旧数据持久存在于characteristic.value中.但是,当我断开连接并重新连接到设备时,会显示新数据.这仅发生在iOS 7上.

当我将呼叫发送到外围设备时,有什么东西可能会丢失吗?

解决方法

你看到的行为是正确的. didWriteValueForCharacteristic方法确认已写入特征,但外围设备本身是特征值的“守护者”.核心蓝牙在从外围设备检索之前不会有新的值,无论是响应读取请求还是通知(如果您已订阅该特性).

从您的评论看来,旧行为似乎是“短路”过程并立即暴露新值 – 这很危险,因为外围设备可能会对特性进行其他更新,因此您不应该依赖数据执行阅读.

猜你在找的iOS相关文章