经过一段时间的调试,终于将苹果和安卓两个系统的蓝牙程序都统一了。就写篇经验分享之前遇到坑。因为这是一篇进阶经验,基础篇可以看我之前的经验。
工具/原料
微信开发者工具
手机
一、准备工作
1、首先要了解一下BLE4.0,这里不细讲,请自行百度下。需要了解下MAC、UUID、UUID服务、特征值这些东西。
2、还要了解微信小程序真机调试的方法。(vConsole)
二、进阶干货
1、增加适当延迟,能解决很多问题。在调试过程中当你一段程序中连着用到多个关联的API,请跟进调试结果增加适当延迟,那么这些有先后关系的帆歌达缒API就能正常运行了。比如:wx.openBluetoothAdapterwx.getBluetoothAdapterState不加延迟可能蓝牙打开错误。
2、开发者工具和 Android 上获取到的deviceId为设备 MAC 地址,iOS 上则为设备 uuid。
3、UUID和UUID特征值如果固定的最好,提前先获得。如果是随机改变的使用这两个API获得。
4、蓝牙连接时,安卓可以直接识别到MAC地址,如果知道特征值对应渲舫蒇芘服务UUID和特征值的UUID,可以跳过获得以上两个值的API,直接使用wx.notifyBLE潮贾篡绐CharacteristicValueChanged连接。
5、如果是苹果系统就算你知道了特征值对应服务UUID和特征值的UUID,你仍然要调用API读取一次。否则仍然无法连接。
6、如果想要苹果和安卓能同时使用,那么这两API就必须调用,不会影响安卓连接。不过要注意设置一下两个API之间的延时。
7、连接成功后接收读取数据可以通过嘛术铹砾wx.onBLECharacteristicValueChange,这里要注意你接收读取数据的长度。这里的buff髫潋啜缅er是有长度限制的,好像是20个字节,所以你的数据太长的时候要分段读取。