e***@sina.cn
e***@sina.cn
  • 发布:2021-04-06 10:38
  • 更新:2021-04-28 09:50
  • 阅读:1423

【报Bug】 捕捉不到ManufacturerData,数据段总是为空。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.1.7

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: mi8

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

uni.openBluetoothAdapter({
success(res) {
uni.startBluetoothDevicesDiscovery({
success(res) {
uni.onBluetoothDeviceFound(function(res){
console.log('device:' + JSON.stringify(res.devices))
})
},
fail(res) {
console.log("faile res=", res)
}
})
}
})

操作步骤:

使用uni.startBluetoothDevicesDiscovery搜索蓝牙设备,在uni.onBluetoothDeviceFound里打印出蓝牙设备信息,设备信息里ManufacturerData 数据段总是为空。

预期结果:

根据onBluetoothDeviceFound API介绍,期待设备信息包含ManufacturerData 信息。
devices 的结构
advertisData ArrayBuffer 当前蓝牙设备的广播数据段中的 ManufacturerData 数据段。

实际结果:

如附件中的两个图,wireshark抓到的报文里有manufacturer字段,hxbuilder log却显示advertisData字段为空。

bug描述:

问题:
1.使用uni.startBluetoothDevicesDiscovery搜索蓝牙设备,在uni.onBluetoothDeviceFound里打印出蓝牙设备信息,设备信息里ManufacturerData 数据段总是为空。
uni.onBluetoothDeviceFound不能返回ManufacturerData 数据段。

2.设备A,设备B
B关闭了蓝牙的notify功能,A主动去read的时候,拿不到B蓝牙返回的数据,原生里面是可以有方法获取到的

uni.notifyBLECharacteristicValueChange({  
            state: true, // 启用 notify 功能  
            // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接  
            deviceId:deviceId,  
            // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取  
            serviceId:serviceId,  
            // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取  
            characteristicId:characteristicId,  
            success(res) {  
                console.log('========设置通知监听成功:' + res.errMsg);  
                console.log(JSON.stringify(res));   

            }
2021-04-06 10:38 负责人:DCloud_Android_zl 分享
已邀请:
木杉丶

木杉丶 - 你喜或悲,他也都在那里

advertisData 官方文档都写着转换方法了,不转换看不到的。

unisuny

unisuny

advertisData 是ArrayBuffer,要转换。Android好像能取得到,但ios有时能取到有时没有

俺铁牛

俺铁牛 - 这个人很懒,什么都没留下。

这BUG无解吗?

该问题目前已经被锁定, 无法添加新回复