1. 程式人生 > 其它 >小程式發現新版本後自動更新

小程式發現新版本後自動更新

當小程式釋出新版本後,客戶端每次啟動後檢查當前小程式是否是最新版本,如果不是則提示更新。

onLaunch() {
  console.log('App Launch')
  function downLoadAndUpdate(updateManager) {
    wx.showLoading()
    // 靜默下載更新小程式新版本,onUpdateReady:當新版本下載完成回撥
    updateManager.onUpdateReady(function() {
      wx.hideLoading()
      // applyUpdate:強制當前小程式應用上新版本並重啟
      updateManager.applyUpdate()
    })
    // onUpdateFailed:當新版本下載失敗回撥
    updateManager.onUpdateFailed(function() {
      // 下載新版本失敗
      wx.showModal({
        title: '已有新版本',
        content: '新版本已經上線了,請刪除當前小程式,重新搜尋開啟'
      })
    })
  }
  // 檢測小程式是否更新
  if (wx.canIUse('getUpdateManager')) {
    // wx.getUpdateManager介面,可以獲知是否有新版本的小程式、新版本是否下載好以及應用新版本的能力,會返回一個UpdateManager例項
    const updateManager = wx.getUpdateManager()
    // 檢查小程式是否有新版本釋出,onCheckForUpdate:當小程式向後臺請求完新版本資訊,會通知這個版本告知檢查結果
    updateManager.onCheckForUpdate(function(res) {
      // 請求完新版本資訊的回撥
      console.log(res);
      if (res.hasUpdate) {
        // 檢測到新版本,需要更新,給出提示
        wx.showModal({
          title: '更新提示',
          content: '檢測到新版本,是否下載新版本並重啟小程式',
          success: function(res) {
            if (res.confirm) {
              // 使用者確定更新小程式,小程式下載和更新靜默進行
              downLoadAndUpdate(updateManager)
            } else if (res.cancel) {
              // 若使用者點選了取消按鈕,二次彈窗,強制更新,如果使用者選擇取消後不需要進行任何操作,則以下內容可忽略
              wx.showModal({
                title: '提示',
                content: '本次版本更新涉及到新功能的新增,舊版本將無法正常使用',
                showCancel: false, // 隱藏取消按鈕
                confirmText: '確認更新', // 只保留更新按鈕
                success: function(res) {
                  if (res.confirm) {
                    // 下載新版本,重啟應用
                    downLoadAndUpdate(updateManager)
                  }
                }
              })
            }
          }
        })
      }
    })
  } else {
    // 在最新版本客戶端上體驗小程式
    wx.showModal({
      title: '提示',
      content: '當前微信版本過低,無法使用該功能,請升級到最新微信版本後重試'
    })
  }
}