You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Service Changed特性使蓝牙属性缓存失效?

蓝牙GATT服务缓存失效解决方案

全量句柄范围的定义

Service Changed(UUID 0x2A05)特征的通知数据为4字节小端格式,包含两个16位字段:起始句柄和结束句柄。若要触发全量缓存失效,直接将起始句柄设为0x0001、结束句柄设为0xFFFF即可。这是蓝牙规范约定的特殊区间,客户端收到后会清空所有缓存的服务/特征数据,重新执行完整的服务发现流程。

通知发送时机

  • 设备启动阶段:如果每次启动都会修改GATT服务/特征的结构,需在所有服务初始化完成后立即发送一次全量范围的Service Changed通知。注意要确保客户端已订阅该特征(多数蓝牙客户端会自动订阅Service Changed特征,无需额外操作)。
  • 设备运行期间:只要GATT服务的结构发生变更(比如动态添加/删除服务、修改特征的UUID/权限/描述符),都可以发送对应范围的通知。如果不确定变更覆盖的句柄范围,直接发送全量范围的通知即可,不会有性能问题。

aioble库实现提示

在aioble中,你需要先注册通用属性服务(UUID 0x1801),并为Service Changed特征开启通知权限。发送全量失效通知时,直接传递小端字节数据b'\x01\x00\xff\xff'即可(对应0x0001和0xFFFF的小端表示)。

内容的提问来源于stack exchange,提问作者Zach Moshe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:45:56