iOS Corebluetooth setNotifyValue false 未在蓝牙设备上写入特性

时间:2021-04-09 16:52:52

标签: swift core-bluetooth

我有一个“简单”的 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 似乎没有这样做?我错过了什么?

有人遇到过这样的问题吗?

谢谢 等

0 个答案:

没有答案