notifyBLECharacteristicValueChange 安卓收不到
发布于 6 年前 作者 wanjing 2448 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

现在主要是安卓收不到特征值变化的值 ,苹果一直是正常,我安桌手机是最新的oppo reno 10倍变焦版

特征值属性:

properties: {read: false, write: true, notify: true, indicate: false}

我的方法:

wx.notifyBLECharacteristicValueChange({

deviceId,

serviceId,

characteristicId: item.uuid,

state: true,

type: ‘notification’})

我就算加type:notification也没起作用

网上有人说,在安卓write指令后,一定要再读一次特征值,要不然onBLECharacteristicValueChange监听不了变化,但我这个特征值是不支持read属性的,所以这种方法对我来说没用。

  • 预期表现

通过我多次测试,发现writeBLECharacteristicValue其实是成功了的,通过硬件响应知道的,并且硬件已收到指令,特征值一直在变(我通过苹果设备验证),我是连接的一个心电图检测的硬件设备,当发送一个开始检测命令后,设备会按秒来改变特征值,在IOS设备下一切正常我是能监听到值的改变,但在安桌设备下onBLECharacteristicValueChange方法都没进,我有真机比较苹果和安桌,苹果和安桌最大的差别是苹果在特征值变化前它会进入internal/async_hooks.js中的emitHook方法,我也不知道这个是干嘛用的,但安卓并不会进入这个方法。(write和监听的service不一样)

  • 复现路径

因为你们没有我这种设备,你们没办法复现

  • 提供一个最简复现 Demo

同上

2 回复

你好,麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点

最后我找到原因了,那是因为安卓蓝牙每次发送的数据不能超过20字节,但苹果却可以收到,希望我的回复能帮助到别人,后面我和厂商沟通让他们拆包发送数据才彻底解决此问题,以前我在社区见过是说不超过80字节就可以的,不知道现在为什么变成20字节。希望你们官方能重视这种问题,我看到社区有多人反应类似问题,但你们稍遇到麻烦点的问题就躲,真搞不懂你们是什么意思,还说联系我,联系毛线,一个人都没找过我

回到顶部