BLE通知禁用时仍推送至bTool问题排查及适配服务选型咨询
BLE通知异常排查与服务选型建议
1. 未订阅仍收到通知的异常成因
- nRF Connect调试模式的特殊逻辑:你在SERVER页手动触发特征值推送时,nRF Connect会主动跳过Client Characteristic Configuration(CCCD)描述符的校验逻辑,直接向已连接的中心设备发送通知包,这是官方为了降低开发调试门槛做的特意设计,和Battery Service本身、TI Launchpad的中心侧逻辑无关。你可以通过自动触发通知的场景验证:编写简单的外设逻辑自动修改特征值触发通知,此时就会严格遵循CCCD配置规则,只有中心侧写入
0x0001启用通知后,才会收到推送。 - bTool自动订阅逻辑:部分版本的TI bTool会在连接带NOTIFY属性的特征后,后台自动写入
0x0001启用通知,你可以抓取BLE空中包确认是否存在非主动触发的CCCD写入操作。
2. 服务选型建议
- 如果你的业务场景符合蓝牙技术联盟定义的标准服务规范,优先选择对应标准服务即可,比如电量采集上报场景下Battery Service就是最优选择,无需更换。
- 如果是自定义业务场景,没有匹配的标准服务,直接使用私有自定义服务即可:在nRF Connect的GATT服务配置页新建自定义服务,填入自行生成的128位UUID,再添加带NOTIFY属性的自定义特征即可,相比标准服务灵活性更高,不会和其他通用服务逻辑产生冲突。
内容的提问来源于stack exchange,提问作者Mario Mateaș
相关产品推荐
相关产品推荐

