3***@qq.com
3***@qq.com
  • 发布:2026-03-26 09:45
  • 更新:2026-03-26 09:46
  • 阅读:14

{ "errMsg": "writeBLECharacteristicValue:fail property not support", "errCode": 10007 }

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 5.04

手机系统: Android

手机系统版本号: Android 13

手机厂商: realme

手机机型: 真我GT Neo

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:
        try {  
            for (let i = 0; i < characteristics.length; i++) {  
                let item = characteristics[i];  
                if (item.uuid.substr(0, 8) == '0000FFE1') {  
                    WRITE_ID = item.uuid  
                    console.log(WRITE_ID)  
                    break;  
                }  
            }  
            //握手包   
            sleep(200)  
                .then(() => {  
                    return writeCharacteristicValue(deviceId, [0x4C, 0x4B, 0x45])  
                })  
                .then(() => {  
                    return sleep(200)  
                })  
                .then(() => {  
                    func({  
                        isConnect: true  
                    })  
                })  
                .catch(err => {  
                    console.error('写入失败继续发送', err)  
                    func({  
                        isConnect: false  
                    })  
                })  
        } catch (err) {  
            console.log(err)  
        }  

const writeCharacteristicValue = async (deviceId, command) => {  
    return uni.writeBLECharacteristicValue({  
        characteristicId: WRITE_ID,  
        deviceId: deviceId,  
        serviceId: SERVICE_ID,  
        value: command,  
        writeType: 'writeNoResponse',  
        success(res) {  
            console.log('发送成功')  
        },  
        fail(err) {  
            console.log('发送失败', WRITE_ID)  
        }  
    })  
}  

操作步骤:

  "errMsg": "writeBLECharacteristicValue:fail property not support",    
  "errCode": 10007    
} ```

预期结果:

正常发送

实际结果:

  "errMsg": "writeBLECharacteristicValue:fail property not support",    
  "errCode": 10007    
} ```

bug描述:

有时候可以一次就成功了,有时候又要发送多次才能成功。

2026-03-26 09:45 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

需要补充平台分类:安卓, ios, 鸿蒙 next, 还是小程序。同时提供移除监听的具体代码示例。
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

针对这个蓝牙写入失败的反馈,我从官方技术评审的角度进行如下分析:

反馈内容完整性评价

该反馈存在明显的内容缺失,不符合有效bug提交标准:

  1. 代码示例不完整:仅粘贴了错误信息,未提供调用uni.writeBLECharacteristicValue的实际业务代码。官方无法判断调用参数是否正确、是否存在并发调用、是否检查了特征值属性等关键信息。

  2. 复现步骤缺失:仅描述"有时候成功有时候需要多次发送",未提供具体的操作序列。例如:是否在notifyBLECharacteristicValueChange成功后立即写入?是否连续多次调用写入?这些时序信息对定位问题至关重要。

  3. 关键信息未提供:未说明写入的目标特征值UUID及其properties属性(是否支持write),也未提供蓝牙设备的MTU大小信息。

技术问题分析

根据知识库文档,errCode: 10007表示"property not support"(当前特征值不支持此操作)。但用户描述"有时一次成功"表明特征值本身支持写入,因此可能的原因包括:

  1. 并行调用冲突:知识库明确说明并行调用多次会存在写失败的可能性。如果业务代码中存在连续多次调用writeBLECharacteristicValue而未等待前一次完成,可能导致异常。

  2. 时序问题:在Android平台上,在调用notifyBLECharacteristicValueChange成功后立即调用writeBLECharacteristicValue接口,在部分机型上会发生系统错误。虽然文档提及的是10008错误,但类似的时序竞争可能触发10007。

  3. 特征值属性动态变化:某些蓝牙设备在连接初期特征值属性未完全初始化,首次写入时属性标志位可能未正确设置为可写状态。

是否为Bug的判断

该问题大概率属于使用方式不当而非框架Bug

  • 错误码10007在标准BLE协议中明确表示GATT属性不支持写操作
  • 间歇性成功表明存在竞态条件或时序依赖
  • 知识库中已明确提示并行调用的风险

建议补充与解决方案

请用户补充以下信息以便进一步确认:

  1. 调用uni.writeBLECharacteristicValue的完整代码片段(特别是是否使用await或promise链式调用)
  2. 是否连续调用了多次写入?两次写入之间的间隔时间?
  3. 通过uni.getBLEDeviceCharacteristics获取到的目标characteristic的properties属性值(确认是否包含write: true)

临时解决方案

  • 在写入前确认特征值支持write属性
  • 避免并行调用,确保前一次write的success/fail回调完成后再发起下一次写入
  • 如必须在notify后立即写入,建议添加100-300ms的延时
  • 考虑使用xl-uts-bluetooth插件,该插件对写入操作进行了队列管理和错误兼容处理

建议用户先排查代码中的并发调用和时序问题,如确认无误后仍复现,请提供完整的调用代码和蓝牙设备信息重新提交。

内容为 AI 生成,仅供参考

要回复问题请先登录注册