CoreBluetooth:我可以订阅具有读写权限的特性吗?
Posted
技术标签:
【中文标题】CoreBluetooth:我可以订阅具有读写权限的特性吗?【英文标题】:CoreBluetooth: Can I subscribe a characteristic that has read and write permissions? 【发布时间】:2015-01-14 02:16:39 【问题描述】:我想使用我的 iPhone 连接到配备 蓝牙 4.0 的设备。
我记录了设备的(作为外设)属性:0x16。这意味着
CBCharacteristicPropertyRead = 0x02,
CBCharacteristicPropertyWriteWithoutResponse = 0x04,
CBCharacteristicPropertyNotify = 0x10,
(假设我已经订阅了这个特性。)如果我向这个特性写入一些数据,然后它的值会发生变化,那么就会发生通知。显然,工作流程不是我想要的。我只是写了一些数据,但我不想收到相同的数据通知回调。
所以,我认为似乎我不应该为我订阅的内容写任何东西,对吧?
希望有具体的答案。
【问题讨论】:
是 0x16CBPeripheral
或其CBCharacteristics
之一的属性吗?
0x16 = 0x02 | 0x04 | 0x10,表示支持read、write without response和notify。
【参考方案1】:
您必须使用CBPeripheral 中的setNotifyValue:forCharacteristic:
方法订阅通知。然后,每当特征值发生变化时,您都会通过peripheral:didUpdateValueForCharacteristic:error:
委托回调收到通知。
请注意,决定何时发送通知的是外围设备:
因为选择何时发送更新的是外围设备,所以您的 应用程序应该准备好处理它们,只要通知或 指示保持启用
因此不保证您会在写信后立即收到通知。
【讨论】:
以上是关于CoreBluetooth:我可以订阅具有读写权限的特性吗?的主要内容,如果未能解决你的问题,请参考以下文章
CoreBluetooth 监控 100 个具有相同 UUID 且具有唯一输入的信标
尝试订阅 CBCharacteristic 时不允许写入错误