微信小程序-強制手機端更新

小程序的更新機制

開發者在管理後臺發佈新版本的小程序以後,若是某個用戶本地有小程序的歷史版本,此時打開的可能仍是舊版本。微信客戶端會有若干個時機去檢查本地緩存的小程序有沒有更新版本,若是有則會靜默更新到新版本。總的來講,開發者在後臺發佈新版本以後,沒法馬上影響到全部現網用戶,但最差狀況下,也在發佈以後 24 小時以內下發新版本信息到用戶。用戶下次打開時會先更新最新版本再打開。html

啓動時更新

小程序每次冷啓動時,都會檢查是否有更新版本,若是發現有新版本,將會異步下載新版本的代碼包,並同時用客戶端本地的包進行啓動,即新版本的小程序須要等下一次冷啓動纔會應用上。小程序

關於冷/熱啓動及前/後臺的概念,請參照小程序文檔運行機制緩存

能夠經過wx.getUpdsateManagerAPI來強制用戶在啓動時更新新版本。微信

wx.showLoading({
            title: '加載中..',
            mask: true
        })

        const updateManager = wx.getUpdateManager()

        updateManager.onCheckForUpdate(function (res) {
            // 請求完新版本信息的回調
            console.log('是否有新版本: ', + res.hasUpdate)
            if (!res.hasUpdate) {
                wx.hideLoading()
            } 
        })

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

        updateManager.onUpdateFailed(function () {
            wx.hideLoading();
            wx.showModal({
                title: '提示',
                content: '檢查到有新版本,但下載失敗,請檢查網絡後重試',
                showCancel: false
            })
        })

        setTimeout(wx.hideLoading, 5000)

因爲onCheckForUpdate在檢查新版本的時候會存在必定的延遲(在開發工具上大概4秒左右),爲防止在檢查新版本過程當中用戶觸發操做跳出首頁,添加了一個wx.showLoading進行遮蓋。網絡

須要注意,上面的代碼更新到新版本後也是不會當即生效的,因此仍是須要用戶進行一次冷啓動。app

參考:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/update-mechanism.html異步

相關文章
相關標籤/搜索