公司的小程序項(xiàng)目上線, 后期還會(huì)有小型的版本迭代. 為了讓用戶能在我們進(jìn)行版本迭代后及時(shí)使用最新版本的功能. 做了以下優(yōu)化..
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)鳳慶免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
知識(shí)點(diǎn)1: 當(dāng)用戶點(diǎn)擊左上角關(guān)閉,或者按了設(shè)備Home 鍵離開微信,小程序并沒有直接銷毀,而是進(jìn)入了后臺(tái);
當(dāng)再次進(jìn)入微信或再次打開小程序,又會(huì)從后臺(tái)進(jìn)入前臺(tái),只有當(dāng)小程序進(jìn)入后臺(tái)一定時(shí)間,或者系統(tǒng)資源占用過高,才會(huì)被真正的銷毀。
知識(shí)點(diǎn)2:小程序的啟動(dòng)分為"冷啟動(dòng)" 和 "熱啟動(dòng)".
熱啟動(dòng)是指: 小程序打開后,在一段時(shí)間內(nèi)(目前:5分鐘)再次被打開,此時(shí)會(huì)將后臺(tái)的小程序切換到前臺(tái)。
冷啟動(dòng)是指: 小程序首次打開或銷毀后再次被打開
知識(shí)點(diǎn)3:更新版本
冷啟動(dòng)時(shí), 如果發(fā)現(xiàn)有新版本,將會(huì)異步下載新版本的代碼包,并同時(shí)用客戶端本地的包進(jìn)行啟動(dòng),即新版本的小程序需要等下一次冷啟動(dòng)才會(huì)應(yīng)用上。
如果要馬上應(yīng)用最新版本,使用wx.getUpdateManager API 進(jìn)行處理。
代碼如下:
// 在app.js里寫下以下代碼 onLaunch () { if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate(function (res) { console.log('onCheckForUpdate====', res) // 請(qǐng)求完新版本信息的回調(diào) if (res.hasUpdate) { console.log('res.hasUpdate====') updateManager.onUpdateReady(function () { wx.showModal({ title: '更新提示', content: '新版本已經(jīng)準(zhǔn)備好,是否重啟應(yīng)用?', success: function (res) { console.log('success====', res) // res: {errMsg: "showModal: ok", cancel: false, confirm: true} if (res.confirm) { // 新的版本已經(jīng)下載好,調(diào)用 applyUpdate 應(yīng)用新版本并重啟 updateManager.applyUpdate() } } }) }) updateManager.onUpdateFailed(function () { // 新的版本下載失敗 wx.showModal({ title: '已經(jīng)有新版本了喲~', content: '新版本已經(jīng)上線啦~,請(qǐng)您刪除當(dāng)前小程序,重新搜索打開喲~' }) }) } }) } }
知識(shí)點(diǎn)4:小程序重新初始化時(shí)會(huì)觸發(fā)onLaunch事件. onLaunch事件會(huì)觸發(fā)在頁面onShow事件之前.獲取小程序更新版本可以寫在onLaunch里.
知識(shí)點(diǎn)5:
在開發(fā)和體驗(yàn)版無法測試版本更新
需要在開發(fā)者工具里,編譯時(shí)選擇"模擬更新編譯"
(部分開發(fā)者工具版本, 每次update編譯時(shí)都需要重新勾選此選項(xiàng))
點(diǎn)擊確定,重新編譯.
頁面會(huì)彈窗顯示:
點(diǎn)擊確認(rèn)后:
控制臺(tái)顯示:
知識(shí)點(diǎn)6:隨著小程序的不斷更新, 部分功能可能需要最新版的微信客戶端才能使用. 這時(shí)候可以彈窗提示用戶更新到最新版本微信
if (wx.canIUse('getUpdateManager')) { ... } else { // can't use getUpdateManager wx.showModal({ title: '提示', content: '當(dāng)前微信版本過低,無法使用該功能,請(qǐng)升級(jí)到最新微信版本后重試。' })
完整版本:
onLaunch () { if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate(function (res) { if (res.hasUpdate) { updateManager.onUpdateReady(function () { wx.showModal({ title: '更新提示', content: '新版本已經(jīng)準(zhǔn)備好,是否重啟應(yīng)用?', success: function (res) { if (res.confirm) { updateManager.applyUpdate() } } }) }) updateManager.onUpdateFailed(function () { wx.showModal({ title: '已經(jīng)有新版本了喲~', content: '新版本已經(jīng)上線啦~,請(qǐng)您刪除當(dāng)前小程序,重新搜索打開喲~' }) }) } }) } else { wx.showModal({ title: '提示', content: '當(dāng)前微信版本過低,無法使用該功能,請(qǐng)升級(jí)到最新微信版本后重試。' }) } }
知識(shí)點(diǎn)7:如果在onLaunch里進(jìn)行請(qǐng)求, 這是異步請(qǐng)求. 如果對(duì)交互順序有要求, 如: 版本更新--重新獲取數(shù)據(jù)-- 用戶展示, 那么需要考慮在callback里進(jìn)行重獲數(shù)據(jù).
知識(shí)點(diǎn)8:小程序啟動(dòng)時(shí),正常是會(huì)熱更新,下載新版本的包,下一次啟動(dòng)就會(huì)使用新包。但發(fā)現(xiàn)有更新不成功的情況發(fā)生.
官方回答: 策略生效跟網(wǎng)絡(luò)環(huán)境以及發(fā)布時(shí)間等若干因素有關(guān),會(huì)盡可能讓小程序快地更新,但無法保證每次都熱更新成功。
知識(shí)點(diǎn)9:小程序的異步更新發(fā)生在冷啟動(dòng)過程. 官方不建議熱更新. 原因:
參考資料:
官方-強(qiáng)制更新
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。