uni.onBLECharacteristicValueChange((notify) => {
this.logMessageFunc('收到数据了2 ' + JSON.stringify(notify)) }) - 发布:2026-07-08 14:01
- 更新:2026-07-08 17:19
- 阅读:42
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows10
HBuilderX类型: 正式
HBuilderX版本号: 5.14
手机系统: Android
手机系统版本号: Android 12
手机厂商: 华为
手机机型: YAL-AL10
页面类型: vue
vue版本: vue3
打包方式: 离线
项目创建方式: HBuilderX
操作步骤:
预期结果:
'收到数据了2 '
'收到数据了2 ' 实际结果:
无任何打印
日志示例如下:
13:56:11.488 [Object] {"id":1,"content":"App Launch","result":"info"} at store/log.ts:56
13:56:11.488 [Object] {"id":2,"content":"App Show","result":"info"} at store/log.ts:56
13:56:11.534 [Object] {"id":3,"content":"App Hide","result":"info"} at store/log.ts:56
13:56:11.704 [Object] {"id":4,"content":"已注册 WebSocket OTA 升级指令监听","result":"info"} at store/log.ts:56
13:56:11.704 [Object] {"id":5,"content":"屏幕保持唤醒","result":"info"} at store/log.ts:56
13:56:11.721 [Object] {"id":6,"content":"申请权限结果:{\"granted\":[\"android.permission.BLUETOOTH\",\"android.permissi...} at store/log.ts:56
13:56:11.721 [Object] {"id":7,"content":"App Show","result":"info"} at store/log.ts:56
13:56:11.721 [Object] {"id":8,"content":"屏幕保持唤醒","result":"info"} at store/log.ts:56
13:56:15.013 [Object] {"id":9,"content":"开始跳转到OTA, 搜索蓝牙: HJ-0200100000053","result":"info"} at store/log.ts:56
13:56:15.199 [Object] {"id":10,"content":"搜索到了蓝牙: {\"name\":\"HJ-BLE-84F99A\",\"id\":\"0000FFF8-0000-1000-8000-00...} at store/log.ts:56
13:56:15.277 [Object] {"id":11,"content":"搜索到了蓝牙: {\"name\":\"BY-0014989aeee35\",\"id\":\"00001812-0000-1000-8000...} at store/log.ts:56
13:56:15.277 [Object] {"id":12,"content":"搜索到了蓝牙: {\"name\":\"HJ-0200100000053\",\"id\":\"0000ED01-0000-1000-8000...} at store/log.ts:56
13:56:15.277 [Object] {"id":13,"content":"搜到蓝牙了{\"name\":\"HJ-0200100000053\",\"id\":\"0000ED01-0000-1000-8000-00...} at store/log.ts:56
13:56:15.277 [Object] {"id":14,"content":"开始连接蓝牙: HJ-0200100000053...","result":"info"} at store/log.ts:56
13:56:15.277 [Object] {"id":15,"content":"连接蓝牙78:CD:55:34:7F:D5中...","result":"info"} at store/log.ts:56
13:56:15.353 [Object] {"id":16,"content":"获取本机蓝牙适配器状态 getBluetoothAdapterState, state={\"discovering\":false,\"av...} at store/log.ts:56
13:56:17.502 [Object] {"id":17,"content":"连接低功耗蓝牙设备 createBLEConnection 成功","result":"info"} at store/log.ts:56
13:56:17.516 [Object] {"id":18,"content":"setBLEMTU success {\"errMsg\":\"setBLEMTU:ok\"}","result":"info"} at store/log.ts:56
13:56:17.516 [Object] {"id":19,"content":"getBLEDeviceServices success {\"services\":[{\"uuid\":\"00001800-0000-1...} at store/log.ts:56
13:56:17.533 [Object] {"id":20,"content":"getBLEDeviceCharacteristics success: {\"characteristics\":[{\"uuid\":\"...} at store/log.ts:56
13:56:17.538 [Object] {"id":21,"content":"notifyBLECharacteristicValueChange success - 通知已启用","result":"info"} at store/log.ts:56
13:56:18.546 [Object] {"id":22,"content":"notifyDataChange","result":"info"} at store/log.ts:56
13:56:18.547 [Object] {"id":23,"content":"BLE监听成功","result":"info"} at store/log.ts:56
13:56:18.552 [Object] {"id":24,"content":"连接蓝牙HJ-0200100000053 78:CD:55:34:7F:D5: true","result":"info"} at store/log.ts:56
13:56:18.552 [Object] {"id":25,"content":"发送数据: B1000EBA4B0101929394959697FF","result":"info"} at store/log.ts:56
13:56:18.660 [Object] {"id":26,"content":"BLE发送数据成功: {\"errMsg\":\"writeBLECharacteristicValue:ok\"}","result":"info"} at store/log.ts:56
13:56:21.679 [Object] {"id":27,"content":"步骤1A: 进入扩展会话","result":"info"} at store/log.ts:56
13:56:21.679 [Object] {"id":28,"content":"发送数据: AA55000C6749B0AC07321003","result":"info"} at store/log.ts:56
13:56:21.789 [Object] {"id":29,"content":"BLE发送数据成功: {\"errMsg\":\"writeBLECharacteristicValue:ok\"}","result":"info"} at store/log.ts:56
13:56:29.642 [Object] {"id":30,"content":"蓝牙已断开","result":"info"} at store/log.ts:56
13:56:29.658 [Object] {"id":31,"content":"升级出错: 升级前流程错误: 蓝牙异常断开","result":"info"} at store/log.ts:56
14:00:12.559 [Object] {"id":32,"content":"App Hide","result":"info"} at store/log.ts:56
14:00:14.518 [Object] {"id":33,"content":"App Show","result":"info"} at store/log.ts:56
14:00:14.518 [Object] {"id":34,"content":"屏幕保持唤醒","result":"info"} at store/log.ts:56
14:00:25.369 [Object] {"id":35,"content":"App Hide","result":"info"} at store/log.ts:56
无任何打印
日志示例如下:
13:56:11.488 [Object] {"id":1,"content":"App Launch","result":"info"} at store/log.ts:56
13:56:11.488 [Object] {"id":2,"content":"App Show","result":"info"} at store/log.ts:56
13:56:11.534 [Object] {"id":3,"content":"App Hide","result":"info"} at store/log.ts:56
13:56:11.704 [Object] {"id":4,"content":"已注册 WebSocket OTA 升级指令监听","result":"info"} at store/log.ts:56
13:56:11.704 [Object] {"id":5,"content":"屏幕保持唤醒","result":"info"} at store/log.ts:56
13:56:11.721 [Object] {"id":6,"content":"申请权限结果:{\"granted\":[\"android.permission.BLUETOOTH\",\"android.permissi...} at store/log.ts:56
13:56:11.721 [Object] {"id":7,"content":"App Show","result":"info"} at store/log.ts:56
13:56:11.721 [Object] {"id":8,"content":"屏幕保持唤醒","result":"info"} at store/log.ts:56
13:56:15.013 [Object] {"id":9,"content":"开始跳转到OTA, 搜索蓝牙: HJ-0200100000053","result":"info"} at store/log.ts:56
13:56:15.199 [Object] {"id":10,"content":"搜索到了蓝牙: {\"name\":\"HJ-BLE-84F99A\",\"id\":\"0000FFF8-0000-1000-8000-00...} at store/log.ts:56
13:56:15.277 [Object] {"id":11,"content":"搜索到了蓝牙: {\"name\":\"BY-0014989aeee35\",\"id\":\"00001812-0000-1000-8000...} at store/log.ts:56
13:56:15.277 [Object] {"id":12,"content":"搜索到了蓝牙: {\"name\":\"HJ-0200100000053\",\"id\":\"0000ED01-0000-1000-8000...} at store/log.ts:56
13:56:15.277 [Object] {"id":13,"content":"搜到蓝牙了{\"name\":\"HJ-0200100000053\",\"id\":\"0000ED01-0000-1000-8000-00...} at store/log.ts:56
13:56:15.277 [Object] {"id":14,"content":"开始连接蓝牙: HJ-0200100000053...","result":"info"} at store/log.ts:56
13:56:15.277 [Object] {"id":15,"content":"连接蓝牙78:CD:55:34:7F:D5中...","result":"info"} at store/log.ts:56
13:56:15.353 [Object] {"id":16,"content":"获取本机蓝牙适配器状态 getBluetoothAdapterState, state={\"discovering\":false,\"av...} at store/log.ts:56
13:56:17.502 [Object] {"id":17,"content":"连接低功耗蓝牙设备 createBLEConnection 成功","result":"info"} at store/log.ts:56
13:56:17.516 [Object] {"id":18,"content":"setBLEMTU success {\"errMsg\":\"setBLEMTU:ok\"}","result":"info"} at store/log.ts:56
13:56:17.516 [Object] {"id":19,"content":"getBLEDeviceServices success {\"services\":[{\"uuid\":\"00001800-0000-1...} at store/log.ts:56
13:56:17.533 [Object] {"id":20,"content":"getBLEDeviceCharacteristics success: {\"characteristics\":[{\"uuid\":\"...} at store/log.ts:56
13:56:17.538 [Object] {"id":21,"content":"notifyBLECharacteristicValueChange success - 通知已启用","result":"info"} at store/log.ts:56
13:56:18.546 [Object] {"id":22,"content":"notifyDataChange","result":"info"} at store/log.ts:56
13:56:18.547 [Object] {"id":23,"content":"BLE监听成功","result":"info"} at store/log.ts:56
13:56:18.552 [Object] {"id":24,"content":"连接蓝牙HJ-0200100000053 78:CD:55:34:7F:D5: true","result":"info"} at store/log.ts:56
13:56:18.552 [Object] {"id":25,"content":"发送数据: B1000EBA4B0101929394959697FF","result":"info"} at store/log.ts:56
13:56:18.660 [Object] {"id":26,"content":"BLE发送数据成功: {\"errMsg\":\"writeBLECharacteristicValue:ok\"}","result":"info"} at store/log.ts:56
13:56:21.679 [Object] {"id":27,"content":"步骤1A: 进入扩展会话","result":"info"} at store/log.ts:56
13:56:21.679 [Object] {"id":28,"content":"发送数据: AA55000C6749B0AC07321003","result":"info"} at store/log.ts:56
13:56:21.789 [Object] {"id":29,"content":"BLE发送数据成功: {\"errMsg\":\"writeBLECharacteristicValue:ok\"}","result":"info"} at store/log.ts:56
13:56:29.642 [Object] {"id":30,"content":"蓝牙已断开","result":"info"} at store/log.ts:56
13:56:29.658 [Object] {"id":31,"content":"升级出错: 升级前流程错误: 蓝牙异常断开","result":"info"} at store/log.ts:56
14:00:12.559 [Object] {"id":32,"content":"App Hide","result":"info"} at store/log.ts:56
14:00:14.518 [Object] {"id":33,"content":"App Show","result":"info"} at store/log.ts:56
14:00:14.518 [Object] {"id":34,"content":"屏幕保持唤醒","result":"info"} at store/log.ts:56
14:00:25.369 [Object] {"id":35,"content":"App Hide","result":"info"} at store/log.ts:56 bug描述:
uni.onBLECharacteristicValueChange 在App端收不到数据,而微信小程序可以收到数据
2 个回复
c***@163.com
连接成功后,延迟一点再订阅消息
Ask小助手
好的,收到你的 bug 反馈。作为 DCloud 官方人员,我对这个反馈进行如下评审和分析:
1. 反馈质量评审
这个 bug 反馈的基本信息比较完整,但在关键操作细节和代码上下文上存在缺失。
uni.onBLECharacteristicValueChange在 App 端(安卓)收不到数据,而微信小程序正常。描述清晰,我们官方人员能够看懂。uni.onBLECharacteristicValueChange的监听代码片段,缺少了前置的蓝牙连接、服务获取、特征值获取以及调用uni.notifyBLECharacteristicValueChange启用通知的代码。在蓝牙低功耗(BLE)开发中,监听特征值变化必须先成功调用notifyBLECharacteristicValueChange接口启用 notify 功能。缺少这部分代码,我们无法判断是否是因为调用顺序或参数错误导致收不到数据。uni.onBLECharacteristicValueChange((notify) => {...})”,这不是一个完整的操作步骤。官方人员无法仅凭这一行代码复现问题。建议用户补充完整的复现步骤,包括如何连接设备、如何获取服务和特征值、如何调用通知接口等。'收到数据了2 '”这个预期是合理的,前提是所有前置步骤都正确执行且设备确实发送了数据。评审结论:反馈有效,但若能提供一个最简可复现的完整工程或补充完整的蓝牙连接和通知启用代码,将极大提升问题处理的优先级和效率。
2. 问题分析与排查
根据反馈内容和知识库,这个问题成立的依据非常充分。在安卓端使用 BLE 蓝牙通信时,
onBLECharacteristicValueChange收不到数据是一个非常常见的“坑”,通常不是框架本身的 Bug,而是由于安卓平台对蓝牙 API 的调用时序和机制要求更严格导致的。根据知识库中多个开发者反馈的类似问题和解决方案,主要原因和解决方向如下:
未正确启用 notify 功能或调用时序不对:
uni.onBLECharacteristicValueChange必须在uni.notifyBLECharacteristicValueChange成功启用通知之后才能收到数据。并且,在安卓端,建议在notifyBLECharacteristicValueChange的success回调中再去注册监听,或者加入一定的延时。参考 DCloud问答_214537 中,开发者在
notifyBLECharacteristicValueChange的success回调中延迟 1 秒后调用监听,解决了问题。安卓端不要并行调用
notifyBLECharacteristicValueChange:如果你的设备有多个特征值需要订阅,在安卓端不能同时并行调用多次
notifyBLECharacteristicValueChange,否则会导致订阅失败或收不到数据。必须使用串行调用,即一个特征值订阅成功后,延迟一段时间(如 100 毫秒),再订阅下一个。参考 DCloud问答_192423 中,开发者通过串行延时调用解决了安卓端无法接收回调的问题。
初始化时需要写入两次数据:
有开发者反馈,在开启 notify 和监听后,第一次写入数据可能无法触发回调,需要写入两次,第二次才能在
onBLECharacteristicValueChange中收到数据。参考 DCloud文章_41526 的总结。
特征值属性不支持:
请确认你订阅的特征值是否支持
notify或indicate属性。可以通过uni.getBLEDeviceCharacteristics获取特征值属性,查看properties.notify或properties.indicate是否为true。如果不支持,调用notifyBLECharacteristicValueChange会失败,自然也收不到数据。3. 解决方案与建议
根据知识库中其他开发者的成功经验,建议你按以下步骤检查和修改代码:
确保调用顺序正确:
先调用
uni.notifyBLECharacteristicValueChange启用通知,在其success回调中,再注册uni.onBLECharacteristicValueChange监听。如果有多个特征值需要订阅,串行延时调用:
尝试初始化时写入两次数据:
在成功启用 notify 并注册监听后,尝试连续调用两次
uni.writeBLECharacteristicValue写入数据,看是否能触发回调。检查特征值属性:
使用
uni.getBLEDeviceCharacteristics确认目标特征值的properties中notify或indicate为true。如果以上步骤均无法解决,请提供一个完整的可复现工程(包含蓝牙连接、服务发现、特征值获取、通知启用、数据写入和监听的完整代码),以便我们进行深入排查。
要回复问题请先登录或注册
公告
更多>相关问题