1***@qq.com
1***@qq.com
  • 发布:2025-07-17 13:52
  • 更新:2025-07-17 13:52
  • 阅读:44

【报Bug】苹果ios手机里蓝牙调用 uni.writeBLECharacteristicValue 没有任何回调信息

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.75

手机系统: iOS

手机系统版本号: iOS 18

手机厂商: 苹果

手机机型: Iphone 12 mini

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

plus.bluetooth.writeBLECharacteristicValue({
deviceId:this.connectedDeviceId,
serviceId:this.serviceId,
characteristicId:this.writeCharacteristicId,
value:buffer,
success: () => {
console.log("发送数据成功");
resolve();
},
fail: (err) => {
console.log("发送数据失败");
reject(发送数据失败: ${err.errMsg});
},
complete:function(){
console.log("123456");
}
});

                uni.writeBLECharacteristicValue({  
                    deviceId: this.connectedDeviceId,  
                    serviceId: this.serviceId,  
                    characteristicId: this.writeCharacteristicId,  
                    value: buffer,  
                    writeType:plus.os.name=='iOS'?'write':'writeNoResponse',  
                    success: () => {  
                        console.log("发送数据成功");  
                        resolve();  
                    },  
                    fail: (err) => {  
                        console.log("发送数据失败");  
                        reject(`发送数据失败: ${err.errMsg}`);  
                    },  
                    complete:function(){  
                        console.log("123456");  
                    }  
                });

操作步骤:

用IOS设备都能复现

预期结果:

成功或失败都要进入对应的success fail complete回调函数

实际结果:

成功了,但没进入任何回调, complete都不进入。

bug描述:

写好了的功能在安卓上测试都OK,想着在IOS上功能通跑一下就可以发布了,哪想到出现这个问题。先用的uni.writeBLECharacteristicValue不进任何回调,设备上已经做出响应了。后来又用plus.bluetooth.writeBLECharacteristicValue试了一下,问题依旧,问答社区搜了一下,两年前就有人提出过该问题,且没有解决。

官方文档这么写的:
1.APP不会对写入数据包大小做限制,但系统与蓝牙设备会限制蓝牙4.0单次传输的数据大小,超过最大字节数后会发生写入错误,建议每次写入不超过20字节。
2.若单次写入数据过长,iOS 上存在系统不会有任何回调的情况(包括错误回调)。

我的数据只有6个字节,mtu我设置了512

2025-07-17 13:52 负责人:无 分享
已邀请:

要回复问题请先登录注册