uni-app打包成安卓apk调用uni.writeBLECharacteristicValue报错

uni-app打包成安卓apk调用uni.writeBLECharacteristicValue报错

操作步骤:

  • uniapp开发,调用uni.writeBLECharacteristicValue

预期结果:

  • 顺利调用接口uni.writeBLECharacteristicValue

实际结果:

  • 报错{“errMsg”:“writeBLECharacteristicValue:fail property not support”,“code”:10007}

bug描述:

  • uniapp打包成安卓apk调用uni.writeBLECharacteristicValue报错,报错{“errMsg”:“writeBLECharacteristicValue:fail property not support”,“code”:10007},同一份代码运行到小程序可以顺利调用uni.writeBLECharacteristicValue,app里调用就报错了,请问下是什么原因呢

| 信息类别         | 信息内容             |
|------------------|----------------------|
| 产品分类         | uniapp/App           |
| PC开发环境       | Windows              |
| PC操作系统版本   | win11                |
| HBuilderX类型    | 正式                 |
| HBuilderX版本    | 4.75                 |
| 手机系统         | Android              |
| 手机系统版本     | Android 9.0          |
| 手机厂商         | 荣耀                 |
| 手机机型         | 荣耀8A               |
| 页面类型         | vue                  |
| vue版本          | vue3                 |
| 打包方式         | 云端                 |
| 项目创建方式     | HBuilderX            |

更多关于uni-app打包成安卓apk调用uni.writeBLECharacteristicValue报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app打包成安卓apk调用uni.writeBLECharacteristicValue报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个错误通常是由于蓝牙特征值的属性不支持写入操作导致的。在Android平台上,蓝牙特征值有不同的属性(如read、write、notify等),只有当特征值具有write属性时才能调用writeBLECharacteristicValue。

建议检查以下几点:

  1. 确认获取到的蓝牙特征值(characteristic)是否支持写入操作。可以通过characteristic.properties中是否包含write属性来验证。

  2. 在调用writeBLECharacteristicValue之前,建议先通过uni.getBLEDeviceCharacteristics获取设备特征值列表,检查目标特征值的properties属性。

  3. 确保在Android平台上使用的特征值UUID与小程序环境一致,不同平台对蓝牙特征值的支持可能存在差异。

  4. 检查是否在正确的服务(service)下查找特征值,不同服务下的特征值属性可能不同。

可以在代码中添加特征值属性检查逻辑:

uni.getBLEDeviceCharacteristics({
  deviceId: deviceId,
  serviceId: serviceId,
  success: (res) => {
    res.characteristics.forEach(characteristic => {
      if (characteristic.uuid === targetUUID) {
        console.log('特征值属性:', characteristic.properties)
        // 检查是否支持write
        if (characteristic.properties.write) {
          // 执行写入操作
        }
      }
    })
  }
})
回到顶部