我有一个“简单”的 ios 应用程序,可以连接到健身带并访问心率测量值。
我发现了设备,发现了它的心率服务和心率特性,然后将 setNotifyValue
设置为 true
,一切正常(我得到 HR 测量值)。
但是,当我想停止接收通知时,我尝试将 setNotifyValue
设置为 false
以停止通知,应用程序停止显示 HR 测量值,但是适合带没有改变。
因此,当我将 setNotifyValue
设置为 false
时,我会监视 didUpdateNotificationStateFor
并且它确实被执行了,但是在该函数中,如果我打印 isNotifying
属性,它仍然是 true
。我还在调试器 [CoreBluetooth] WARNING: Unknown error: 913
上收到错误消息。
尝试更多地调试它,似乎问题在于此更改未传达到实际蓝牙设备并且未写入特征中。
因此,与Android相比,类似的功能(setCharacteristicNotification
)在Android设备上本地启用/禁用通知,您需要将相应的值(启用/禁用)写入特征的描述符中才能在蓝牙设备(见this post)。
但是,在 CoreBluetooth 上,您不能直接写入客户端特征配置描述符,如果您尝试这样做,则会收到以下错误
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Client Characteristic Configuration descriptors must be configured using setNotifyValue:forCharacteristic:'
那么,您如何才能禁用有关蓝牙外设特性的通知,因为 setNotifyValue -> false 似乎没有这样做?我错过了什么?
有人遇到过这样的问题吗?
谢谢 等