自学内容网 自学内容网

蓝牙BLE开发——iOS 每次写入数据超过200字节报错?

iOS 写入数据超过200字节报错

writeblecharacteristicvalue

官方建议:

  • 并行调用多次会存在写失败的可能性。
  • APP不会对写入数据包大小做限制,但系统与蓝牙设备会限制蓝牙4.0单次传输的数据大小,超过最大字节数后会发生写入错误,建议每次写入不超过20字节
  • 若单次写入数据过长,iOS 上存在系统不会有任何回调的情况(包括错误回调)。
  • 安卓平台上,在调用 notifyBLECharacteristicValueChange 成功后立即调用 writeBLECharacteristicValue 接口,在部分机型上会发生 10008 系统错误

报错问题

  • iPhone 6:写入数据超过200字节时,报错当前特征值不支持此操作,写入失败;
  • iPhone 11、iPhone 12等,能正常写入数据,其他机型没有细测;
{
    "errMsg": "writeBLECharacteristicValue:fail Error Domain=CBATTErrorDomain Code=17 \"Resources are insufficient.\" UserInfo={NSLocalizedDescription=Resources are insufficient.},https://ask.dcloud.net.cn/article/282",
    "errCode": 10007,
    "code": 10007
}

解决

  • 经测试,iPhone6 写入数据不超过160字节时,写入成功,正常通信;
  • 仅供参考
const writeBLECharacteristicValue = (hex) => {
let buffer = hexToArrayBuffer(hex); // 16进制转ArrayBuffer,之前有分享过
uni.writeBLECharacteristicValue({
  deviceId,
  serviceId,
  characteristicId,
  value: buffer,
  success(res) {
    console.log('writeBLECharacteristicValue success', res.errMsg)
  }
})
}

原文地址:https://blog.csdn.net/Smile_ping/article/details/143367938

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!