前言
微信小程序低功耗藍(lán)牙開發(fā)的兼容問(wèn)題,比我想象的要多,比方說(shuō)這天,突然發(fā)現(xiàn)往藍(lán)牙寫入數(shù)據(jù)以后,就報(bào) 10008 系統(tǒng)錯(cuò)誤. 我到官方一查,發(fā)現(xiàn)就是系統(tǒng)錯(cuò)誤,然后我定位到具體的報(bào)錯(cuò)位置,發(fā)現(xiàn)是 監(jiān)聽報(bào)錯(cuò)
官方提示如下:
注意
- 訂閱操作成功后需要設(shè)備主動(dòng)更新特征值的 value,才會(huì)觸發(fā) wx.onBLECharacteristicValueChange 回調(diào)。
- 安卓平臺(tái)上,在調(diào)用 notifyBLECharacteristicValueChange 成功后立即調(diào)用 writeBLECharacteristicValue 接口,在部分機(jī)型上會(huì)發(fā)生 10008 系統(tǒng)錯(cuò)誤
瞧見沒,反正就是這么坑,這是個(gè)小bug,但是會(huì)影響我其他流程的繼續(xù)執(zhí)行,
這是第五個(gè)坑:
部分機(jī)型寫入命令后的監(jiān)聽包 10008
看了官方這么說(shuō),我改造了一下監(jiān)聽和寫入的代碼
//調(diào)用微信監(jiān)聽的代碼
this.notifyBLECharacteristicValueChange(deviceId, serviceId, characteristicId);
//等待 500 毫秒,然后執(zhí)行寫入操作,改造以后,問(wèn)題沒有復(fù)現(xiàn)過(guò)
setTimeout(function() {
//寫入一系列的命令
that.writeCmd();
}, 500);
雖然慢一點(diǎn),但是整體流程不會(huì)出錯(cuò)