onLoad() {
//在页面加载时候初始化蓝牙适配器
uni.openBluetoothAdapter({
success: (e) => {
console.log("初始化蓝牙成功:" + e.errMsg);
// 初始化完毕开始搜索
this.startBluetoothDeviceDiscovery();
},
});
},
methods: {
// 初始化完毕开始搜索
startBluetoothDeviceDiscovery() {
this.bluetooth = [];
//在页面显示的时候判断是都已经初始化完成蓝牙适配器若成功,则开始查找设备
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: true,
success: (res) => {
// 发现外围设备
uni.onBluetoothDeviceFound((res) => {
res.devices.forEach((item) => {
item.dataJson = this.ab2hex(item
.advertisData).join(
',')
item.data = this.ab2hex(item.advertisData)
// item中广播数据,安卓和ios端数据不一致,ios 15.4
console.log(item)
});
});
},
fail: (res) => {
uni.showToast({
icon: "none",
title: "查找设备失败!",
duration: 3000,
});
this.status = 0;
},
});
},
// 处理接收的数据
ab2hex(buffer) {
// 打印16进制数据
return Array.prototype.map.call(new Uint8Array(buffer), (x) => ('00' + x.toString(16)).slice(-2));
return hexArr;
},
}
- 发布:2023-03-15 09:25
- 更新:2023-03-15 09:25
- 阅读:429
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 11 家庭中文版 22H2
HBuilderX类型: 正式
HBuilderX版本号: 3.7.3
手机系统: Android
手机系统版本号: Android 8.1
手机厂商: 小米
手机机型: Redmi 6A
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
安卓和ios数据同步
安卓和ios数据同步
实际结果:
advertisData中广播数据,
安卓和ios端数据不一致,ios 15.4
安卓缺少部分数据,ios正常
advertisData中广播数据,
安卓和ios端数据不一致,ios 15.4
安卓缺少部分数据,ios正常
bug描述:
bug出现的前提是BLE蓝牙设备广播中两个包都有数据存在(广播包和响应包)
开启uni.onBluetoothDeviceFound后,解析advertisData的数据发现
安卓丢失广播包 (Advertising Data)数据,只有响应包数据
ios的数据正常,广播包 (Advertising Data)和 响应包 (Scan Response)都存在