使用CoreBluetooth,我可以使用:
订阅外围设备CBCharacteristic
[peripheral setNotifyValue:YES forCharacteristic:characteristic]
订阅后,我是否希望获得CBPeripheral
代理回调peripheral:didUpdateValueForCharacteristic:error:
,其特征是在value
属性中设置了最新值?
或者要求中央首先明确读取该值,然后订阅特征是更标准的吗?通过“标准”,我想知道是否在某处BLE规范中明确地提出或推荐了这个(看了一眼,找不到任何东西)。
答案 0 :(得分:1)
documentation非常明确:
当您的应用调用时,会调用此方法 readValueForCharacteristic:方法,或外设通知时 你的应用程序表示通知的特征值 和指示已启用(通过成功呼叫 setNotifyValue:forCharacteristic :)已更改。
订阅后,您不会立即获得委托回调peripheral:didUpdateValueForCharacteristic:error:
。外围设备只会在特征值发生变化后发送通知。因此,您必须在readValueForCharacteristic:
上调用CBPeripheral
以获取此委托回调中的当前值。
请注意,您通常会在peripheral:didDiscoverCharacteristicsForService:error:
回调中获得特征值。然后,您可以订阅通知,以便在特征更改其值时收到通知。