前言
這幾天似乎風平浪靜,沒有什么大的問題,領(lǐng)導就開始考慮體驗度的事,說這個連接速度還是太慢,希望能夠把速度提快,我個人認為應(yīng)該沒有太多的改進空間,但是領(lǐng)導要求了,我也只能硬著頭皮看,結(jié)果發(fā)現(xiàn)了第三個坑.
藍牙連接的等待時間不確定問題
我自己看了一遍原來的代碼,發(fā)現(xiàn)有好幾處等待,是故意等待的,問了相關(guān)的人員以后,才知道,微信的低功耗藍牙在掃描完成以后,到連接之前,需要等到一個時間,官方說的三秒左右,于是乎,這位同事就等了個三秒,也就是說,實際的連接代碼是這樣:
setTimeout(() => {
wx.createBLEConnection({
deviceId: that.deviceId,
success: res => {
console.log('連接藍牙', res)
if (res.errCode == 0) {
wx.showToast({
title: '藍牙連接設(shè)備成功',
icon: 'none'
})
//連接成功后的代碼
}
},
fail: err => {
console.log('連接失敗:', err)
console.log(count):
},
complete: function(res) {
console.log('連接藍牙執(zhí)行', res)
}
})
}, 3000)
這代碼我很難接受:無論如何都必須要等三秒
經(jīng)過多次試驗,貌似發(fā)現(xiàn)很多新手機只需要等個200-300毫秒就可以了,老手機也差不多1500毫秒,我猜測著三秒的話,估計是很差的那種手機了.
于是我改造了這塊代碼
BleUtils.tryConnect = function(count,flag){
if(count < 6 && flag == false){ //第一次進方法
//等待500毫秒執(zhí)行一次連接
setTimeout(function(){
wx.createBLEConnection({
deviceId: that.deviceId,
success: res => {
console.log('連接藍牙', res)
if (res.errCode == 0) {
wx.showToast({
title: '藍牙連接設(shè)備成功',
icon: 'none'
})
BleUtils.tryConnect(1,true); //讓他走連接成功的代碼
}
},
fail: err => {
console.log('連接失敗:', err)
BleUtils.tryConnect(count + 1 ,false); //失敗后再次重試
},
complete: function(res) {
console.log('連接藍牙執(zhí)行', res)
}
})
},500);
return ;
}
if(count == 6){ //嘗試連接 超過3秒
return;
}
if(flag == true){ //連接成功
//走成功邏輯
return;
}
}
思路跟前面的重連差不多,都是多次嘗試,這樣既兼顧了慢的手機,也照顧了快的手機,領(lǐng)導拿幾臺手機嘗試,確實快了很多,十分滿意.
然而,新的坑已經(jīng)在路上..