8***@qq.com
8***@qq.com
  • 发布:2025-09-11 11:05
  • 更新:2025-09-11 11:09
  • 阅读:27

【报Bug】微信小程序蓝牙特性有write和writeNoResponse权限,但写入数据时报1007错。

分类:uni-app

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

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11 专业版(26100.6584)

HBuilderX类型: 正式

HBuilderX版本号: 4.76

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

基础库版本号: 3.9.3

项目创建方式: HBuilderX

示例代码:

···
// 连接蓝牙
uni.createBLEConnection({
deviceId: BleData.deviceId,
success: (res) => {
console.log("连接成功", res)
OpenPopup('message','success','蓝牙连接成功');
BleData.bleState = true;

                    // 监听蓝牙连接状态  
                    uni.onBLEConnectionStateChange((res)=>{  
                      console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)  
                      BleData.bleState = res.connected;  
                      if(!BleData.bleState){  
                        OpenPopup('alertDialog','error','蓝牙已断开,是否重连!');  
                      }  
                    });  

                    // 获取所有的服务  
                    uni.getBLEDeviceServices({  
                      deviceId: BleData.deviceId,  
                      success(res) {  
                          console.log('服务:', res);  
                        if(res.services[0].isPrimary){  
                            //验证服务ID并连接  
                            for (let index = 0; index < res.services.length; index++) {  
                                if(res.services[index].uuid == "0000FFF0-0000-1000-8000-00805F9B34FB"){  
                                    BleData.serviceId = res.services[index].uuid;  
                                }  
                            }  
                        }  

                        // 获取特征码  
                        uni.getBLEDeviceCharacteristics({  
                          deviceId:BleData.deviceId,  
                          serviceId:BleData.serviceId,  
                          success(res) {  
                            console.log('特征:', res);  
                            for (let index = 0; index < res.characteristics.length; index++) {  

                                if(res.characteristics[index].properties.notify == true){  
                                    BleData.notifyId = res.characteristics[index].uuid;  

                                    // 监听接收数据  
                                    uni.notifyBLECharacteristicValueChange({  
                                        state: true,  
                                        deviceId:BleData.deviceId,  
                                        serviceId:BleData.serviceId,  
                                        characteristicId:BleData.notifyId,  
                                        success(res) {  
                                            console.log("开启 notify 功能成功...,notifyId:",BleData.notifyId)  

                                            // 必须先启用 notifyBLECharacteristicValueChange 接口才能接收到设备推送  
                                            uni.onBLECharacteristicValueChange(res => {  
                                                ReceiveBleData(res.value);  
                                            })  
                                        },  
                                        fail(err) {  
                                            console.log("监听失败,发生错误", err);  
                                            console.log("this.characteristicId", BleData.notifyId);  
                                        }  
                                    })  
                                    continue;  
                                }  

                                if((res.characteristics[index].properties.write == true) || (res.characteristics[index].properties.writeNoResponse == true)){  
                                    BleData.writeId = res.characteristics[index].uuid;  
                                    continue;  
                                }  

                            }  
                          }  
                        })  
                      }  
                    })  
                },  
                fail: (error) => {  
                    console.log("连接失败", error)  
                    // uni.showToast({title: '蓝牙连接失败,请稍后重试',icon:"none",duration: 2000});  
                    OpenPopup('alertDialog','error','蓝牙连接失败,请重试!');  
                }  
            })  

···

···
//发送的代码
const SendDataToBle = (uin8ArrData) => {
if(!BleData.bleState){
OpenPopup('message','warn','蓝牙未连接');
return 'err';
}

    // var typedArray = new Uint8Array([1,1,2,3,4]);  
    //向低功耗蓝牙设备指定特征值写入二进制数据  
    uni.writeBLECharacteristicValue({  
      deviceId:BleData.deviceId,  
      serviceId:BleData.serviceId,  
      characteristicId:BleData.writeId,  
      writeType:BleData.writeType,  
      value: uin8ArrData.buffer,  
      success(res) {  
        console.log('send ok', res.errMsg)  
      },  
      fail(res){  
        console.log('send err', res.errMsg)  
      }  
    });  
    return 'ok';  
}  

···

操作步骤:

预期结果:

怎么解决

实际结果:

bug描述:

微信小程序蓝牙特性明明有write和writeNoResponse权限,但写入数据时报1007错。

2025-09-11 11:05 负责人:无 分享
已邀请:
DCloud_UNI_JBB

DCloud_UNI_JBB

试试原生微信小程序有没有这个问题

  • 8***@qq.com (作者)

    原生的小程序没有问题

    2025-09-11 12:00

  • DCloud_UNI_JBB

    回复 8***@qq.com: 发一下你写的uniapp的代码和原生微信小程序测试的代码

    2025-09-11 12:02

要回复问题请先登录注册