小程序强制更新

发布于:2024-05-16 ⋅ 阅读:(72) ⋅ 点赞:(0)

小程序强制更新


在启动时异步更新的情况下,如果开发者希望立刻进行版本更新,可以使用 wx.getUpdateManagerAPI 进行处理,该API会返回一个UpdateManager实例

UpdateManager 对象为小程序提供了四种关键的方法,用于管理和监控小程序的更新过程。

  • UpdateManager.applyUpdate():在小程序新版本已经下载完成的情况下(即接收到 onUpdateReady 回调后),此方法用于强制小程序重启并启用新版本。

  • UpdateManager.onCheckForUpdate(function callback):此方法用于监听向微信后台发起的更新检查结果事件。微信小程序在冷启动时会自动进行更新检查,开发者无需主动触发。

  • UpdateManager.onUpdateReady(function callback):此方法用于监听小程序的新版本更新就绪事件。一旦新版本可用,客户端会自动触发下载过程(无需开发者额外操作),并在下载成功后调用此回调函数。

  • UpdateManager.onUpdateFailed(function callback):此方法用于监听小程序更新失败的事件。当小程序有新版本且客户端尝试自动下载更新时(同样无需开发者干预),如果因网络问题或其他原因导致下载失败,将会触发此回调函数。

根据以上API,我们就能够在小程序法版后,通知用户进行强制更新

if (taro.canIUse('getUpdateManager')) {
      const updateManager = taro.getUpdateManager();
      updateManager.onCheckForUpdate(function (res) {
        console.log('onCheckForUpdate====', res);
        if (res.hasUpdate) {
          // 小程序已更新
          updateManager.onUpdateReady(function () {
            taro.showModal({
              title: '更新提示',
              showCancel: false,
              confirmText: '立即重启',
              content: '新版本已经上线,是否重启小程序以应用新版本?',
              success: function (res) {
                if (res.confirm) {
                  // 调用 applyUpdate 应用新版本并重启
                  updateManager.applyUpdate();
                }
              }
            });
          });
          // 更新失败
          updateManager.onUpdateFailed(function () {
            taro.showModal({
              title: '更新失败',
              content: '新版本下载失败,请删除当前小程序后重新打开。',
            });
          });
        }
      });
    } else {
      // 版本过低
      taro.showModal({
        title: '提示',
        content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。',
      });
    }