2***@qq.com
2***@qq.com
  • 发布:2024-07-24 10:18
  • 更新:2024-08-06 22:40
  • 阅读:144

【报Bug】小程序里:使用uni.onBLECharacteristicValueChange监听硬件,苹果和安卓获取的原数据长度不同

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.23

手机系统: 全部

手机系统版本号: iOS 14

手机厂商: 苹果

手机机型: 华为 Hi nova 9 Pro 和 苹果14

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

华为 Hi nova 9 Pro 和 苹果14

示例代码:

uni.onBLECharacteristicValueChange((res) => {
const hexString = _this.ab2hex(res.value);
});
ab2hex(buffer) {
console.log('buffer.byteLength',buffer.byteLength);
const hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('')
},

操作步骤:

蓝牙连接硬件后,监听硬件返回的数据
注:硬件返回的数据都一样

预期结果:

微信小程序和APP(安卓)接收硬件返回的数据后,解析为54位,打印buffer.byteLength,苹果长度为27,安卓为27
注:硬件返回的数据都一样

实际结果:

微信小程序里:苹果解析为54位,安卓为40位,打印buffer.byteLength后发现,苹果长度为27,安卓为20
注:硬件返回的数据都一样

bug描述:

小程序里:使用uni.onBLECharacteristicValueChange监听硬件,苹果和安卓获取的原数据长度不同,打印buffer.byteLength长度时发现

在微信小程序中:苹果长度为27,安卓长度为20
注:有几个重要的信息获取不到

2024-07-24 10:18 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com

解决了吗,我也遇见了 ios 和 荣耀手机 读取到的值 不一样,ios 能正常读取, 荣耀手机读取的数据不对

  • 2***@qq.com (作者)

    uniapp框架的问题,硬件那边的同事用其他框架弄的APP,安卓手机读取的数据正常,uni官方这个没反应,硬件那边同事说他那边把原数据改成40位。

    2024-08-07 09:12

  • 1***@qq.com

    回复 2***@qq.com: 谢谢,提供一个思路,我全网找不到解决办法。 ios 就能正常读取值,安卓就读到一段错误信息

    2024-08-08 21:36

要回复问题请先登录注册