微信小遊戲(字節小遊戲、QQ小遊戲)如何實現強制更新版本

我們都知道,微信小遊戲是有離線緩存的機制,也就是說如果這臺手機之前玩過某個遊戲,再打開遊戲的時候是先加載啓動手機本地緩存住的代碼包,這個代碼包是舊的,之後纔會在後臺向微信服務器下載最新的代碼包。

我們會遇到這樣的需求,微信小遊戲上線後,新開發了一個功能或修復了一個重大Bug,想讓用戶打開遊戲的時候就下載運行最新的代碼包,而不是運行舊的代碼包。

有沒有解決辦法呢?當然是有的!微信小遊戲提供了一個 api wx.getUpdateManager() 來解決這個問題

核心方法:
UpdateManager.onCheckForUpdate(function callback)
監聽該事件後微信向後臺檢查更新結果完會回調callback方法,如果有更新的版本,回調參數裏hasUpdate屬性爲true。微信在小程序冷啓動時自動檢查更新,不需由開發者主動觸發。

UpdateManager.onUpdateReady(function callback)
監聽該事件後微信下載完新版的代碼包時會回調callback方法。客戶端主動觸發下載(無需開發者觸發),下載成功後回調

UpdateManager.applyUpdate()
在onUpdateReady下載完新代碼包後調用該方法強制小程序重啓並使用新版本。

下面上代碼:

if(window["wx"].getUpdateManager){
    const updateManager = window["wx"].getUpdateManager()
     updateManager.onCheckForUpdate(function (res) {
         // 請求完新版本信息的回調
         if(res.hasUpdate){
             //如果內存卡有存儲遊戲相關的離線文件,在更新版本的時候需要清除,避免廢文件越來越多
             window["clearTempCache"] && window["clearTempCache"](); 
             window["wx"].showToast({icon:"none", title:"有新版本了,正在下載中..", duration: 600000});//10分鐘
         }
     })
     updateManager.onUpdateFailed(function () {
         window["wx"].hideToast();
         window["wx"].showModal({
             content: '新版本下載失敗了,點擊確定重啓遊戲',
             title: '更新提示',
             showCancel: false,
             success: function (res) {
     			window["wx"].exitMiniProgram();
             }
         })
     })
     updateManager.onUpdateReady(function () {
         window["wx"].hideToast();
         window["wx"].showModal({
             content: '新版本已經準備好了,點擊確定重啓應用',
             title: '更新提示',
             showCancel: false,
             success: function (res) {
                 if (res.confirm) {
                     // 新的版本已經下載好,調用 applyUpdate 應用新版本並重啓
                     updateManager.applyUpdate()
                 }
             }
         })

     })
 }

特別注意:

  1. 微信小遊戲基礎庫 需要1.9.90以上版本才支持。針對老版本客戶端需要做好兼容。
  2. 該更新機制只是在遊戲冷啓動的時候會觸發,熱啓動的時候是不會進行更新判斷的。冷熱啓動機制詳細介紹 請看這裏
  3. 微信開發者工具上可以通過「編譯模式」下的「下次編譯模擬更新」開關來調試。
  4. 小程序開發版/體驗版沒有「版本」概念,所以無法在開發版/體驗版上測試更版本更新情況,只能在正式版線上驗證。
  5. 字節小遊戲、QQ小遊戲、百度小遊戲的更新機制和微信小遊戲是一樣的,故以上代碼完全支持這幾個平臺。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章