8***@qq.com
8***@qq.com
  • 发布:2020-06-19 10:58
  • 更新:2024-04-24 16:30
  • 阅读:2574

ios向BLE设备发送数据(uni.writeBLECharacteristicValue),没有回调.

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 2.7.9

手机系统: iOS

手机系统版本号: iOS 13.4

手机厂商: 苹果

手机机型: iphone8

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

// 向蓝牙设备发送一个0x00的16进制数据
const buffer = new ArrayBuffer(1)
const dataView = new DataView(buffer)
dataView.setUint8(0, 0)
uni.writeBLECharacteristicValue({
// 这里的 deviceId 需要在 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
deviceId,
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
serviceId,
// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
characteristicId,
// 这里的value是ArrayBuffer类型
value: buffer,
success(res) {
console.log('writeBLECharacteristicValue success', res.errMsg)
}
})

操作步骤:

重现步骤:1.iphone8连接上设备;2.手机端获取设备的服务和特征(有写功能);3.向设备写入一个十六进制数据.4.结果是,数据有写入BLE设备,没有回调.

预期结果:

预期的结果是,数据成功写入BLE设备,能接收到成功的回调结果.

实际结果:

实际的结果是,数据成功写入BLE设备,收不到任何回调结果.

bug描述:

用官方文档(代码模块:uni.writeBLECharacteristicValue)向BLE发送一个16进制数据.
用iphone8调试,数据能写入BLE设备,没有回调信息;
用安卓调试,数据能写入BLE设备,有回调信息;
请求官方协助解决,谢谢!!

2020-06-19 10:58 负责人:DCloud_iOS_XHY 分享
已邀请:
h***@163.com

h***@163.com - 代码写得好,要饭要到老。。。

很多问题都没有答案,这个问题我有了,分享给大家

(1)用iphone8调试,数据能写入BLE设备,没有回调信息;
(2)用安卓调试,数据能写入BLE设备,有回调信息;

关键问题在于蓝牙设备的write character,是write还是Write without response

下面是解释,uniapp可能是由于iOS的限制,无法设置或者说设置的writeType不生效,当然也可能和设备有关,遇到这种情况,不要在等待writeBLECharacteristicValue的success回掉了,如果后续有数据包,就发送,没有后续了,就老老实实去read或者等待notify就可以了。

Write
If the client wishes to write a certain value to an attribute, it sends a write request and provides data that matches the same format of the target attribute. If the server accepts the write operation, it responds with an acknowledgement.

Write without response
If this operation is enabled, a client can write data to an attribute without waiting for an acknowledgment from the server. This is a non-acknowledged write operation that can be used when quick data exchange is needed.

s***@qq.com

s***@qq.com - 90后IT

解决了吗?是不是版本过高的问题!!

天亮爱睡觉

天亮爱睡觉

解决了吗,Iphone12. 15.1的系统,也不行

7***@qq.com

7***@qq.com - kekukele

请问这个问题解决了吗

2***@qq.com

2***@qq.com

解决了吗

  • 2***@qq.com

    安卓的也是这样

    有时候回调有时候没回调

    2021-11-29 18:35

  • 1***@qq.com

    请问解决了吗

    2023-03-13 15:52

DCloud_iOS_XHY

DCloud_iOS_XHY

此问题事件过久,如有问题请提供可复现问题的环境,方便排查

  • 1***@qq.com

    请问hubilderx 3.7.3,苹果6P,蓝牙写入函数无响应,是什么原因

    2023-03-13 15:51

夜空上亮星星

夜空上亮星星

iphone12 IOS15.7 蓝牙写入数据也是没有任何返回。也不调用succeed,fail,complete方法。这是啥情况?

夜空上亮星星

夜空上亮星星

其实是service和character没选对的缘故

x***@126.com

x***@126.com

可通过先调用uni.notifyBLECharacteristicValueChange来解决没有回调的问题,虽然这个方法可能返回失败,但是并不影响后续的回调,而且经验证,这个返回失败的调用不可不调。希望有帮助。

h***@163.com

h***@163.com - 代码写得好,要饭要到老。。。

关注此问题,我们也遇到同样的情况,相同的代码,直接在Android上面是没问题的,只有iOS的App模式不行。
我初步分析是和楼主一样,向蓝牙设备发送了一个0x00的16进制数据开始的pdu,其它的设备,不是发送0x00开始的,是可以正常使用的

要回复问题请先登录注册