严重蓝牙BUG在uni-app设置MTU后无法接受或者发送数据
严重蓝牙BUG在uni-app设置MTU后无法接受或者发送数据
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:Win10
HBuilderX类型:正式
HBuilderX版本号:4.85
手机系统:HarmonyOS NEXT
手机系统版本号:HarmonyOS 6.0.0
手机厂商:华为
手机机型:HUAWEI
页面类型:vue
vue版本:vue3
打包方式:云端
App下载地址或H5网址:IOS应用商店搜索TW888,Android APP在华为应用市场有上架。
示例代码:
uni.setBLEMTU({
deviceId: this.deviceId,
mtu: 40,
success() {
console.log('设置MTU成功.');
},
fail(e) {
console.log('设置MTU失败:', e);
}
});
操作步骤:
uni.setBLEMTU({
deviceId: this.deviceId,
mtu: 40,
success() {
console.log('设置MTU成功.');
},
fail(e) {
console.log('设置MTU失败:', e);
}
});
`更多关于严重蓝牙BUG在uni-app设置MTU后无法接受或者发送数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
这是一个已知的蓝牙MTU设置兼容性问题。在部分华为设备上,调用uni.setBLEMTU()后确实可能导致蓝牙数据传输异常。
问题分析:
- 华为HarmonyOS系统对BLE MTU设置存在兼容性差异
- 设置MTU后底层蓝牙协议栈可能未正确处理数据分包
- 某些设备在MTU协商过程中可能出现连接状态异常
临时解决方案:
- 移除
setBLEMTU调用,使用系统默认MTU值(通常为23字节) - 如需发送大数据,自行在应用层进行数据分包处理
- 在设置MTU前确保蓝牙连接完全稳定
建议代码调整:
// 暂时注释掉MTU设置,使用默认值
// uni.setBLEMTU({
// deviceId: this.deviceId,
// mtu: 40,
// success() {
// console.log('设置MTU成功.');
// },
// fail(e) {
// console.log('设置MTU失败:', e);
// }
// });


