IOS APP uni-app uni.writeBLECharacteristicValue 无回调问题未超过20个字节安卓和小程序正常
IOS APP uni-app uni.writeBLECharacteristicValue 无回调问题未超过20个字节安卓和小程序正常
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | Sequoia 15.1.1 | HBuilderX |
# 示例代码:
```javascript
uni.writeBLECharacteristicValue({
deviceId: this.$store.state.deviceId,
serviceId: this.$store.state.serviceId,
characteristicId: this.$store.state.writeCharacteristicId,
value: arrayBuffer,
success() {
console.log("写入成功");
// getDeviceMenuHandler()
},
fail(res) {
console.log("写入失败,");
},
complete() {
console.log("调用成功");
},
});
操作步骤:
uni.writeBLECharacteristicValue({
deviceId: this.$store.state.deviceId,
serviceId: this.$store.state.serviceId,
characteristicId: this.$store.state.writeCharacteristicId,
value: arrayBuffer,
success() {
console.log("写入成功");
// getDeviceMenuHandler()
},
fail(res) {
console.log("写入失败,");
},
complete() {
console.log("调用成功");
},
});
预期结果:
成功调用三个回调之一
实际结果:
为调用回调
bug描述:
IOS APP uni.writeBLECharacteristicValue 无回调问题,未超过20个字节,安卓和小程序正常
更多关于IOS APP uni-app uni.writeBLECharacteristicValue 无回调问题未超过20个字节安卓和小程序正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
我也报bug了,看社区都有23年提的了,官方想不想解决还不知道。只有一个数据包还好说,我TM一千多个数据包,不进回调怎么知道成功失败。我还在试用期,老板说一个月做不出来就可以滚蛋了,我三天就把安卓搞好了,想着IOS上跑一下的,这下完了,可以收拾东西滚蛋了。
更多关于IOS APP uni-app uni.writeBLECharacteristicValue 无回调问题未超过20个字节安卓和小程序正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的iOS平台特性问题。在iOS系统中,writeBLECharacteristicValue
方法在写入数据后,系统不会主动返回写入结果回调,这与Android和小程序的机制不同。
解决方案:
- 启用特征值通知:在写入前确保已订阅对应特征值的notify或indicate特性
uni.notifyBLECharacteristicValueChange({
deviceId,
serviceId,
characteristicId,
state: true
})
- 通过监听特征值变化获取写入结果:
uni.onBLECharacteristicValueChange((res) => {
// 处理设备返回的响应数据
console.log('收到设备响应:', res.value)
})
- 添加超时机制:由于iOS不保证每次写入都有响应,建议设置超时处理
setTimeout(() => {
// 超时处理逻辑
}, 2000)