Uniapp 之小程序版本更新检查——uni.getUpdateManager()
在開發(fā)小程序的時候,版本更新在所難免。所以,我們希望每次打開的小程序的時候,都可以進行版本檢測。如果有新版本,那么,就更新,并且讓用戶能夠重啟,并應(yīng)用新版本。
實現(xiàn)
開門見山,uni-app官方網(wǎng)站給了我們實現(xiàn)方法。以下是代碼示例。
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function (res) {
// 請求完新版本信息的回調(diào)
console.log(res.hasUpdate);
});
updateManager.onUpdateReady(function (res) {
uni.showModal({
title: '更新提示',
content: '新版本已經(jīng)準(zhǔn)備好,是否重啟應(yīng)用?',
success(res) {
if (res.confirm) {
// 新的版本已經(jīng)下載好,調(diào)用 applyUpdate 應(yīng)用新版本并重啟
updateManager.applyUpdate();
}
}
});
});
updateManager.onUpdateFailed(function (res) {
// 新的版本下載失敗
});
根據(jù)實例,我把代碼封裝在一個方法里。
然后,根據(jù)場景,每次打開小程序 = 當(dāng)小程序啟動,或者小程序從后臺進入前臺 = 生命周期onShow。所以,在App.vue 的onShow函數(shù)下添加方法。當(dāng)然,如果對更新要求不那么實時,也可以選在在onLaunch生命周期下執(zhí)行。后文會詳述其區(qū)別。
uni.getUpdateManger()說明
官方給的示例代碼中中用到了uni.getUpdateManger() 是什么鬼?
這個API返回的是全局唯一的版本更新管理器對象: updateManage , 用于管理小程序更新。
平臺差異
| APP | H5 | 微信小程序 | 支付寶小程序 | 百度小程序 | 字節(jié)跳動小程序 | QQ小程序 |
| × | × | √ | √ | √ | √ | √ |
updateManager對象的方法列表
| 方法 | 參數(shù) | 說明 |
| onCheckForUpdate | callback | 當(dāng)向小程序后臺請求完新版本信息,會進行回調(diào) |
| onUpdateReady | callback | 當(dāng)新版本下載完成,會進行回調(diào) |
| onUpdateFailed | callback | 當(dāng)新版本下載失敗,會進行回調(diào) |
| applyUpdate | 當(dāng)新版本下載完成,調(diào)用該方法會強制當(dāng)前小程序應(yīng)用上新版本并重啟 |
onCheckForUpdate(callback) 回調(diào)結(jié)果說明
| 屬性 | 類型 | 說明 |
| hasUpdate | Boolean | 是否有新的版本 |
知識點
知識點1
當(dāng)用戶離開小程序時,小程序并沒有直接銷毀,而是進入了后臺,當(dāng)用戶再次進入小程序時,又會從后臺進入前臺。
只有當(dāng)小程序進入后臺一定時間后者系統(tǒng)資源占用過高,才會被真正的銷毀。
知識點2
小程序啟動分為“熱啟動”和“冷啟動”。
熱啟動指的是小程序打開后,在一段時間內(nèi)(目前:5分鐘)再次被打卡,此時將后臺小程序切換到前臺。對應(yīng)方法onShow。
冷啟動指的是小程序首次打開或銷毀后再次被打卡,對應(yīng)函數(shù)onLaunch。
知識點3
冷啟動時,如果發(fā)現(xiàn)有新版本,將會異步下載新版本的代碼包,并同時用客戶端本地的包進行啟動,即新版本的小程序需要等下一次冷啟動才會應(yīng)用上。
如果希望冷啟動后馬上使用最新版本,在App 的onLaunch生命周期中,調(diào)用用版本資源管理器uni.getUpdateManger()方法。
同理,希望每次打開小程序,都檢測更新,就使用onShow。
這樣看來,用代碼小程序中更新的方法不是必須的,就看你對版本更新的時效要求了。
知識點4
OnLaunch時間觸發(fā)在Onshow之前。
知識點5
在開發(fā)版和體驗版無法檢查版本更新。需要在開發(fā)者工具里,編譯時選擇“模擬更新編譯”。
打開方法。1)點擊菜單欄的添加編譯模式。2.勾選下次編譯時模擬更新。
參考網(wǎng)址
https://uniapp.dcloud.io/api/other/update?id=getupdatemanager
https://www.jianshu.com/p/ff711136544a
有志者,事竟成,破釜沉舟,百二秦關(guān)終屬楚; 苦心人,天不負(fù),臥薪嘗膽,三千越甲可吞吳。
總結(jié)
以上是生活随笔為你收集整理的Uniapp 之小程序版本更新检查——uni.getUpdateManager()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人冲刺9
- 下一篇: 设置电脑中文件夹“默认显示模式”为“详细