r***@lingxtech.com
r***@lingxtech.com
  • 发布:2024-05-28 10:54
  • 更新:2024-07-30 18:08
  • 阅读:207

【报Bug】断开蓝牙连接无法销毁onBLECharacteristicValueChange监听

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 4.15

手机系统: 全部

手机厂商: 华为

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

华为鸿蒙

操作步骤:

连接蓝牙,设置onBLECharacteristicValueChange 监听,发送数据,断开低功耗蓝牙,关闭蓝牙模块。
第二次
连接蓝牙,设置onBLECharacteristicValueChange 监听,发送数据

预期结果:

第二次发送数据时候,onBLECharacteristicValueChange 收到硬件发送的一次数据

实际结果:

第二次发送数据时候,onBLECharacteristicValueChange 收到硬件发送的两次数据,随着多次执行上述复现步骤,onBLECharacteristicValueChange 会收到多次数据

bug描述:

在链接硬件设备的时候
每次链接都会使用
uni.onBLECharacteristicValueChange((resChange) => {
let val = ab2hex(resChange.value);
takeData(val);
})
来监听回调
连接蓝牙流程中,每次连接都会重新触发一次以上函数,断开蓝牙服务的api也没有销毁这类监听

2024-05-28 10:54 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com

我一开始也是遇到这个问题,后来发现是uni.onBLECharacteristicValueChange在后面多次调用导致的。
可以把uni.onBLECharacteristicValueChange()放在onload()里面调用一次,然后uni.getBLEDeviceCharacteristics()被多次调用是没有关系的。

  • 小马蹄

    有效的,大伙估计都是看文档 必须先启用 notifyBLECharacteristicValueChange 接口才能接收到设备推送的 notification 误以为是 必须先启用 notifyBLECharacteristicValueChange 接口再启用onBLECharacteristicValueChange

    2024-09-04 09:14

r***@lingxtech.com

r***@lingxtech.com (作者)

来个官方吧,救救孩子

1***@qq.com

1***@qq.com

得了吧,这个问题2020年的时候就有人提出来了,也不见官方有解释

2***@qq.com

2***@qq.com

在onLoad() 调用一次onBLECharacteristicValueChange是否可以解决多次回调的问题。

要回复问题请先登录注册