uni-app 蓝牙收不到数据

uni-app 蓝牙收不到数据

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
### 示例代码:


```javascript
uni.notifyBLECharacteristicValueChange({  
    deviceId,  
    serviceId,  
    characteristicId,  
    state: true,  
    success: function(res) {  
        console.log("监听成功"); //打印监听成功,但实际一直收不到数据  
        console.log(characteristicId)  
        uni.onBLECharacteristicValueChange(function(res) {  
            console.log('value.......')  
            //这个回调一直没反应  
        });  
    },  
    fail: () => {  
        // console.log('监听失败')  
        // console.log(characteristicId)  
    }  
});

操作步骤:

目前测试必然收不到数据,经过小程序“开光”后可以收数据,然后把蓝牙设备重启后又不能收数据

预期结果:

收不到数据

实际结果:

收不到数据


### bug描述:
app连接蓝牙设备后监听成功了但收不到蓝牙设备的数据,只能App发数据给蓝牙设备,但是在小程序中是可以收到数据的,而且小程序收一次数据后再回到app,然后app也可以收数据了

更多关于uni-app 蓝牙收不到数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

自己发现了一个很无聊的解决方法。。。就是uni.notifyBLECharacteristicValueChange监听成功前不要调用uni.readBLECharacteristicValue方法,延迟调用uni.readBLECharacteristicValue,或者这个方法干脆不调用我这边测试也可以,这样监听成功后可以正常监听到特征值变化,如果还不能监听到特征值变化可以在监听成功后先App给蓝牙设备发一条数据,这样就可以监听到了…目前只在安卓测试过有效,ios没测试,希望官方能尽快解决这个问题

更多关于uni-app 蓝牙收不到数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的 uni-app 蓝牙通信问题。从你的描述和代码来看,问题可能出现在以下几个方面:

  1. 时序问题uni.onBLECharacteristicValueChange 应该在调用 notifyBLECharacteristicValueChange 之前就设置好监听。你的代码中监听设置在了 success 回调里,这可能导致错过设备推送的初始数据。

建议修改代码顺序:

// 先设置监听
uni.onBLECharacteristicValueChange(function(res) {
    console.log('收到数据:', res.value);
});

// 再开启通知
uni.notifyBLECharacteristicValueChange({  
    deviceId,  
    serviceId,  
    characteristicId,  
    state: true,  
    success: function(res) {  
        console.log("监听成功");  
    },  
    fail: (err) => {  
        console.log('监听失败', err);  
    }  
});
回到顶部