一嘿
一嘿
  • 发布:2022-03-22 10:45
  • 更新:2024-04-25 15:24
  • 阅读:904

【报Bug】getBLEDeviceService获取蓝牙服务列表,同一蓝牙安卓获取到四个服务,但IOS只获取到一个服务(180F电池数据服务)

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.3.13

第三方开发者工具版本号: 1.05.2108130

基础库版本号: 未知

项目创建方式: HBuilderX

操作步骤:

1.手机连接蓝牙
2.uni.getConnectedBluetoothDevices小程序根据主服务UUID获取已连接蓝牙的deviceId
3.uni.getBLEDeviceServices获取该deviceId对应的服务

预期结果:

获取到正确的完整的蓝牙服务列表

实际结果:

安卓获取到4个服务,IOS获取到1个服务

bug描述:

uni.getBLEDeviceServices() 安卓获取到四个服务其中包括1812(HID服务),但IOS只获取到一个180F(电池数据服务)

// 根据 "蓝牙设备主 service 的 uuid 列表" 获取处于已连接状态的设备  
            getConnectedBluetoothDevices(services) {  
                let _this = this  
                console.log('gcbd:', services.split(','))  
                let serviceUUIDList = services.split(',')  
                let platform = this.getSystemPlatform()  

                if (platform == 'android') {  
                    uni.getConnectedBluetoothDevices({  
                        // services: ["00001812-0000-1000-8000-00805F9B34FB"],  
                        success(res) {  
                            _this.msg = "getConnectedBluetoothDevices success:" + res.devices  
                            console.log(res)  
                            _this.bluetoothList = res.devices  

                            // 成功获取到已连接状态的设备 关闭Discovery  
                            _this.stopBluetoothDevicesDiscovery()  
                        },  
                        fail(res) {  
                            _this.msg = "getConnectedBluetoothDevices fail:" + res.errMsg  
                            console.log(res)  
                        }  
                    })  
                } else if (platform == 'ios') {  
                    uni.getConnectedBluetoothDevices({  
                        services: ["00001812-0000-1000-8000-00805F9B34FB"],  
                        success(res) {  
                            _this.msg = "getConnectedBluetoothDevices success:" + res.devices  
                            console.log(res)  
                            _this.bluetoothList = res.devices  

                            // 成功获取到已连接状态的设备 关闭Discovery  
                            _this.stopBluetoothDevicesDiscovery()  
                        },  
                        fail(res) {  
                            _this.msg = "getConnectedBluetoothDevices fail:" + res.errMsg  
                            console.log(res)  
                        }  
                    })  
                }  
            },  
// 获取设备服务列表  
            getBLEDeviceServices(deviceId) {  
                let _this = this  

                this.selectDeviceId = deviceId  
                setTimeout(() => {  
                    uni.getBLEDeviceServices({  
                        deviceId,  
                        success(res) {  
                            _this.msg += "getBLEDeviceServices success:" + res.services  
                            _this.services = res.services  

                            console.log(res.services.toString())  
                            let uuids = []  
                            res.services.forEach(item => {  
                                uuids.push(item.uuid)  
                            })  
                            console.log(uuids.toString())  

                            // 成功获取到服务列表 关闭Discovery  
                            _this.stopBluetoothDevicesDiscovery()  
                        },  
                        fail(res) {  
                            _this.msg += "getBLEDeviceServices fail:" + res.errMsg  
                            console.log(res)  
                            _this.services = []  
                        }  
                    }, 200)  
                })  
            },

(ps:getConnectedBluetoothDevices虽然API文档写的services是必传项,但安卓传services就会出现任何回调都没出发的情况,IOS不传services返回的devices列表为空)

2022-03-22 10:45 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com

兄弟解决了吗;我的也是ios跟安卓获取服务数量不一致

l***@qq.com

l***@qq.com

我压根没办法获取到已连接的蓝牙数据

要回复问题请先登录注册