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
- 阅读:618
产品分类: 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)都存在  
 
                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                             
                                                                                                                                                                                 
             
             
             
			