一分钟解决微信小程序蓝牙(ble)进行读写操作Android和ios的各种奇葩坑 |
您所在的位置:网站首页 › ios和安卓蓝牙传输一样吗手机 › 一分钟解决微信小程序蓝牙(ble)进行读写操作Android和ios的各种奇葩坑 |
最近应公司要求开发一款小程序,有一个功能是通过低功耗蓝牙进行数据获取。由于本人是Android手机(苹果也有基本不用),所以调试一直用的都是Android端微信调试。产品快发布时,同事就用苹果来测试一下,结果才不忍睹。让我这人称"惊讶经理小王子",顿时颜面扫地。 第一,渲染的蓝牙名字问题Android端的: 名字错了,发送总该行吧。结果大跌眼睛,一直提示发送错误。因为与小程序连的产品为了统一方便uuid默认0000FFF0-0000-1000-8000-00805F9B34FB,所以我直接把 serviceId: “0000FFF0-0000-1000-8000-00805F9B34FB”, characteristicId: “0000FFF2-0000-1000-8000-00805F9B34FB”,写死了。 然后就一直报错,当时又懵逼了。于是看了度娘,微信开放社区,csdn都没解决。通过自己结合文档摸索,终于找到问题了。 如果手机是ios系统就必须将下两个方法写在wx.writeBLECharacteristicValue({})前面 wx.getBLEDeviceServices({ deviceId:devv,//devv蓝牙的deviceId就是上面图片中的"532B......." success (res) { wx.getBLEDeviceCharacteristics({ deviceId:devv, // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取 serviceId:res.services[1].uuid,// success (res) { // console.log( res.characteristics) }, fail(res) { console.error('getBLEDeviceCharacteristics===', res) } }) }, fail (e){ console.log('fail services:', res) } })IOS写入数据时serviceId(服务)和characteristicId(特征)一定要大写 wx.writeBLECharacteristicValue({ deviceId: devv, serviceId: “0000FFF0-0000-1000-8000-00805F9B34FB”, characteristicId: “0000FFF2-0000-1000-8000-00805F9B34FB”, 第三,数据读取问题:Android系统中wx.writeBLECharacteristicValue({})里直接放wx.notifyBLECharacteristicValueChange({})再放 wx.onBLECharacteristicValueChange(function (res) {})是可以将另一端发送的数据读出来的如下: wx.writeBLECharacteristicValue({ deviceId: devv, serviceId: "0000FFF0-0000-1000-8000-00805F9B34FB", characteristicId: "0000FFF2-0000-1000-8000-00805F9B34FB", value:that.data.buffer, success: function (res) { wx.notifyBLECharacteristicValueChange({ state: true, deviceId:devv, serviceId:"0000FFF0-0000-1000-8000-00805F9B34FB", characteristicId: "0000FFF1-0000-1000-8000-00805F9B34FB", success: function (res) { wx.onBLECharacteristicValueChange(function (res) { console.log( res) }) } }) } })IOS系统中就必须加上 wx.readBLECharacteristicValue({})不然数据是不更新的。(代码就不上了,跟上面差不多加上wx.readBLECharacteristicValue({}))就行。 下面说一下IOS中的uuid:
0000FFF3一般就要用于写操作(wx.writeBLECharacteristicValue({}))的特征值中,因为接收端一般不用0000FFF3特征值。 到这里就结束了,希望帮助你顺利脱坑,以上代码均是我举例说明,请结合自己实际代码进行调试。 希望能够帮到大家哦!IT需要爱与和平😊,最后请大家关注我,以及我的一分钟系列(Android篇和小程序篇)让你一分钟实现相应的功能,成功引起产品经理的注意袄。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |