BLE外设是否会在订阅时自动发送特征值?

时间:2015-01-30 21:42:00

标签: ios bluetooth-lowenergy core-bluetooth

使用CoreBluetooth,我可以使用:

订阅外围设备CBCharacteristic
[peripheral setNotifyValue:YES forCharacteristic:characteristic]

订阅后,我是否希望获得CBPeripheral代理回调peripheral:didUpdateValueForCharacteristic:error:,其特征是在value属性中设置了最新值?

或者要求中央首先明确读取该值,然后订阅特征是更标准的吗?通过“标准”,我想知道是否在某处BLE规范中明确地提出或推荐了这个(看了一眼,找不到任何东西)。

1 个答案:

答案 0 :(得分:1)

documentation非常明确:

  

当您的应用调用时,会调用此方法   readValueForCharacteristic:方法,或外设通知时   你的应用程序表示通知的特征值   和指示已启用(通过成功呼叫   setNotifyValue:forCharacteristic :)已更改。

订阅后,您不会立即获得委托回调peripheral:didUpdateValueForCharacteristic:error:。外围设备只会在特征值发生变化后发送通知。因此,您必须在readValueForCharacteristic:上调用CBPeripheral以获取此委托回调中的当前值。

请注意,您通常会在peripheral:didDiscoverCharacteristicsForService:error:回调中获得特征值。然后,您可以订阅通知,以便在特征更改其值时收到通知。