uni-app IOS蓝牙可以下发数据给硬件设备 但无法开启notify且无法接收硬件设备回传的数据

uni-app IOS蓝牙可以下发数据给硬件设备 但无法开启notify且无法接收硬件设备回传的数据

开发环境 版本号 项目创建方式
Windows 3.1.18 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

手机系统:iOS

手机系统版本号:iOS 13.4

手机厂商:苹果

手机机型:iphone11

页面类型:vue

打包方式:云端

示例代码:

//开始启动notify
let deviceId = that.iBluetooth.deviceId;
let serviceId = that.iBluetooth.serviceId;
let characteristicId = that.iBluetooth.characteristicId;
uni.notifyBLECharacteristicValueChange({
state: true, // 启用 notify 功能
deviceId,
serviceId,
characteristicId,
success: res => {
console.log('notify-succ:' + JSON.stringify(res));
that.iGlobal.uploadlog('notify-succ'+JSON.stringify(res))
},  
fail: err => {  
console.log('notify-failed:' + JSON.stringify(err));  
that.iGlobal.uploadlog('notify-failed'+JSON.stringify(err))  
}
});

操作步骤:

搜索到蓝牙,启用低功耗蓝牙设备特征值变化时的 notify 功能时报错。
安卓正常,苹果报错。iphone 5s 异常,ihone11也异常。

预期结果:

能正常接收发送。

实际结果:

ios出现异常,能发送数据,但是无法接收到硬件回传的数据。

bug描述:

同一个硬件设备,我用安卓能正常的notify,但是用ios就是一直提示这个错误,10005的错误是【没有找到指定特征值】,但是安卓是正常的啊,是不是Ios需要特殊设定什么才能正常使用,我感觉这个应该是框架的BUG。

更多关于uni-app IOS蓝牙可以下发数据给硬件设备 但无法开启notify且无法接收硬件设备回传的数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

我看你发了两个帖子,描述的错误不太一样,一个10005一个是10007

更多关于uni-app IOS蓝牙可以下发数据给硬件设备 但无法开启notify且无法接收硬件设备回传的数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html


嗯。有两个问题。 一个是写入失败,一个是接收成功,但是没有数据。

回复 GTaylor: 接收是写入成功? 还是手机读数据成功

10005是你的characteristicId传的有问题 10007是你写数据失败的错误码

send-error-{“errMsg”:“writeBLECharacteristicValue:fail Error Domain=CBATTErrorDomain Code=14 “Unlikely error.” UserInfo={NSLocalizedDescription=Unlikely error.},https://ask.dcloud.net.cn/article/282",“errCode”:10007,"code”:10007}
特征码是正确的,但是打印还是有问题,而且在安卓下能正常写入。
value-succ{“characteristicId”:“0000FFE1-0000-1000-8000-00805F9B34FB”,“deviceId”:“78E496C9-3688-8D6C-B60D-B17D69A597C1”,“serviceId”:“0000FFE0-0000-1000-8000-00805F9B34FB”,“value”:{}}
这是返回的数据。

而且返回的特征码,服务ID。设备ID都是我们这个蓝牙设备唯一指定的。原生的程序也是用这个来通信的。

我这边用蓝牙设备试了下 写数据什么的都正常 看下返回的相关id是不是用的有问题 苹果的设备id跟安卓的应该不是一致的

“properties”:{“indicate”:false,“notify”:true,“read”:false,“write”:true} 你看下你设备的读写权限正常不 有些是不可读或者不可写的

这是我获取的特征码列表。 gecharacteristics-succ-{“notifyId”:“0000FFE1-0000-1000-8000-00805F9B34FB”,“writeId”:“0000FFE1-0000-1000-8000-00805F9B34FB”,“list”:[{“properties”:{“indicate”:false,“notify”:true,“read”:false,“write”:true},“uuid”:“0000FFE1-0000-1000-8000-00805F9B34FB”},{“properties”:{“indicate”:false,“notify”:true,“read”:false,“write”:true},“uuid”:“0000FFE2-0000-1000-8000-00805F9B34FB”},{“properties”:{“indicate”:false,“notify”:true,“read”:false,“write”:true},“uuid”:“0000FFE3-0000-1000-8000-00805F9B34FB”}]}
这个是写入之后返回的结果。 value-succ{“characteristicId”:“0000FFE1-0000-1000-8000-00805F9B34FB”,“deviceId”:“78E496C9-3688-8D6C-B60D-B17D69A597C1”,“serviceId”:“0000FFE0-0000-1000-8000-00805F9B34FB”,“value”:{}}
我验证过了,特征码的写入和监听都是支持的。

pick7-error-{“errMsg”:“writeBLECharacteristicValue:fail Error Domain=CBATTErrorDomain Code=14 “Unlikely error.” UserInfo={NSLocalizedDescription=Unlikely error.},https://ask.dcloud.net.cn/article/282",“errCode”:10007,"code”:10007}
写入数据,蓝牙硬件是已经正常接收了,但是还是提示了这个错误。
CBATTErrorDomain Code=14
这个错误是咱们框架的错误,还是IOS那边给的错误啊?

系统返回的,查一下可能是字节太多,试试分段传输

回到顶部