Uni-app 之小程序版本更新檢查——uni.getUpdateManager()


在開發小程序的時候,版本更新在所難免。所以,我們希望每次打開的小程序的時候,都可以進行版本檢測。如果有新版本,那么,就更新,並且讓用戶能夠重啟,並應用新版本。

實現

開門見山,uni-app官方網站給了我們實現方法。以下是代碼示例。

const updateManager = uni.getUpdateManager();

updateManager.onCheckForUpdate(function (res) {
  // 請求完新版本信息的回調
  console.log(res.hasUpdate);
});

updateManager.onUpdateReady(function (res) {
  uni.showModal({
    title: '更新提示',
    content: '新版本已經准備好,是否重啟應用?',
    success(res) {
      if (res.confirm) {
        // 新的版本已經下載好,調用 applyUpdate 應用新版本並重啟
        updateManager.applyUpdate();
      }
    }
  });

});

updateManager.onUpdateFailed(function (res) {
  // 新的版本下載失敗
});

根據實例,我把代碼封裝在一個方法里。

 然后,根據場景,每次打開小程序 = 當小程序啟動,或者小程序從后台進入前台 = 生命周期 onShow 。所以,在App.vue 的onShow函數下添加方法。當然,如果對更新要求不那么實時,也可以選在在onLaunch生命周期下執行。后文會詳述其區別。

uni.getUpdateManger()說明

官方給的示例代碼中中用到了uni.getUpdateManger() 是什么鬼?

這個API返回的是全局唯一的版本更新管理器對象: updateManage , 用於管理小程序更新。

平台差異

APP H5 微信小程序 支付寶小程序 百度小程序 字節跳動小程序 QQ小程序
× ×

updateManager對象的方法列表

方法 參數 說明
onCheckForUpdate callback 當向小程序后台請求完新版本信息,會進行回調
onUpdateReady callback 當新版本下載完成,會進行回調
onUpdateFailed callback 當新版本下載失敗,會進行回調
applyUpdate   當新版本下載完成,調用該方法會強制當前小程序應用上新版本並重啟

onCheckForUpdate(callback) 回調結果說明

屬性 類型 說明
hasUpdate Boolean 是否有新的版本

知識點

知識點1

當用戶離開小程序時,小程序並沒有直接銷毀,而是進入了后台,當用戶再次進入小程序時,又會從后台進入前台。

只有當小程序進入后台一定時間后者系統資源占用過高,才會被真正的銷毀。

知識點2

小程序啟動分為“熱啟動”和“冷啟動”。

  • 熱啟動指的是小程序打開后,在一段時間內(目前:5分鍾)再次被打卡,此時將后台小程序切換到前台。對應方法onShow
  • 冷啟動指的是小程序首次打開或銷毀后再次被打卡,對應函數onLaunch

知識點3

  • 冷啟動時,如果發現有新版本,將會異步下載新版本的代碼包,並同時用客戶端本地的包進行啟動,即新版本的小程序需要等下一次冷啟動才會應用上。
  • 如果希望冷啟動后馬上使用最新版本,在App 的onLaunch生命周期中,調用用版本資源管理器uni.getUpdateManger()方法。
  • 同理,希望每次打開小程序,都檢測更新,就使用onShow。

這樣看來,用代碼小程序中更新的方法不是必須的,就看你對版本更新的時效要求了。

知識點4

OnLaunch時間觸發在Onshow之前。

知識點5

在開發版和體驗版無法檢查版本更新。需要在開發者工具里,編譯時選擇“模擬更新編譯”。

打開方法。1)點擊菜單欄的添加編譯模式。2.勾選下次編譯時模擬更新。

參考網址

https://uniapp.dcloud.io/api/other/update?id=getupdatemanager

https://www.jianshu.com/p/ff711136544a


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM