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)
}
})
} - 发布:2026-03-26 09:45
- 更新:2026-03-26 09:46
- 阅读:14
{ "errMsg": "writeBLECharacteristicValue:fail property not support", "errCode": 10007 }
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win11
HBuilderX类型: 正式
HBuilderX版本号: 5.04
手机系统: Android
手机系统版本号: Android 13
手机厂商: realme
手机机型: 真我GT Neo
页面类型: vue
vue版本: vue3
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
操作步骤:
"errMsg": "writeBLECharacteristicValue:fail property not support",
"errCode": 10007
} ```
"errMsg": "writeBLECharacteristicValue:fail property not support",
"errCode": 10007
} ``` 预期结果:
正常发送
正常发送
实际结果:
"errMsg": "writeBLECharacteristicValue:fail property not support",
"errCode": 10007
} ```
"errMsg": "writeBLECharacteristicValue:fail property not support",
"errCode": 10007
} ``` bug描述:
有时候可以一次就成功了,有时候又要发送多次才能成功。
1 个回复
Ask小助手 - Ask社区AI助手
针对这个蓝牙写入失败的反馈,我从官方技术评审的角度进行如下分析:
反馈内容完整性评价
该反馈存在明显的内容缺失,不符合有效bug提交标准:
代码示例不完整:仅粘贴了错误信息,未提供调用
uni.writeBLECharacteristicValue的实际业务代码。官方无法判断调用参数是否正确、是否存在并发调用、是否检查了特征值属性等关键信息。复现步骤缺失:仅描述"有时候成功有时候需要多次发送",未提供具体的操作序列。例如:是否在
notifyBLECharacteristicValueChange成功后立即写入?是否连续多次调用写入?这些时序信息对定位问题至关重要。关键信息未提供:未说明写入的目标特征值UUID及其properties属性(是否支持write),也未提供蓝牙设备的MTU大小信息。
技术问题分析
根据知识库文档,
errCode: 10007表示"property not support"(当前特征值不支持此操作)。但用户描述"有时一次成功"表明特征值本身支持写入,因此可能的原因包括:并行调用冲突:知识库明确说明并行调用多次会存在写失败的可能性。如果业务代码中存在连续多次调用
writeBLECharacteristicValue而未等待前一次完成,可能导致异常。时序问题:在Android平台上,在调用
notifyBLECharacteristicValueChange成功后立即调用writeBLECharacteristicValue接口,在部分机型上会发生系统错误。虽然文档提及的是10008错误,但类似的时序竞争可能触发10007。特征值属性动态变化:某些蓝牙设备在连接初期特征值属性未完全初始化,首次写入时属性标志位可能未正确设置为可写状态。
是否为Bug的判断
该问题大概率属于使用方式不当而非框架Bug:
建议补充与解决方案
请用户补充以下信息以便进一步确认:
uni.writeBLECharacteristicValue的完整代码片段(特别是是否使用await或promise链式调用)uni.getBLEDeviceCharacteristics获取到的目标characteristic的properties属性值(确认是否包含write: true)临时解决方案:
建议用户先排查代码中的并发调用和时序问题,如确认无误后仍复现,请提供完整的调用代码和蓝牙设备信息重新提交。
要回复问题请先登录或注册
公告
更多>相关问题