封装 UpdateManager 实现启动微信小程序时自动强制更新

背景

微信小程序发布新版本后,微信有自己的更新策略:异步更新、同步更新。异步更新会在用户下次冷启动时才会加载新版本,本次打开的仍然是旧版本。为了保证更多用户能够访问的新版本,本文利用微信wx.getUpdateManager()暴露的UpdateManager封装实现启动微信小程序时自动强制更新。

代码

微信提供了两个钩子暴露小程序更新事件:

  • UpdateManager.onCheckForUpdate监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。可以不进行监听,会自动触发一次,当然可以监听来进行埋点,hasUpdate字段 true则代表有新版本。

  • UpdateManager.onUpdateReady这个必须提前监听,暴露的是客户端主动触发下载后(无需开发者触发),下载成功后回调。通过监听新版本下载成功,才能执行UpdateManager.applyUpdate() 强制小程序重启并使用新版本。

class UpdateManager {
  constructor() {
    this.updateManager = wx.getUpdateManager();
    this.getPromise();
    this.init();
  }
  init() {
    this.updateManager.onCheckForUpdate((res) => {
      if (res && res.hasUpdate) {
        // this.updateManager.onUpdateReady(() => {
        //   this.resolve();
        // });
      }
    });
    this.updateManager.onUpdateReady(() => {
        this.resolve();
      });
    this.updateManager.onUpdateFailed(function () {
      // 新版本下载失败
    });
  }
  getPromise() {
    this.promise = new Promise((resolve) => {
      this.resolve = resolve;
    });
  }
  applyUpdate() {
    this.promise.then(() => {
      wx.showModal({
        title: "更新提示",
        content: "新版本已经准备好,是否重启应用?",
        success: (res) => {
          if (res.confirm) {
            this.updateManager.applyUpdate();
          }
        },
      });
    });
  }
}

module.exports = {
  UpdateManager,
};
const { UpdateManager } = require('./updateManager');

App({
  onLaunch() {
    const wxUpdateManager = new UpdateManager();
    // 可以在此处设置特定条件,满足后再执行强制更新
    wxUpdateManager.applyUpdate();
  }
})

总结

以上就是微信小程序如何使用户在使用旧版本的过程中,强制更新为新版本方法,通过封装 UpdateManager,并利用微信提供的钩子 onUpdateReady、onUpdateFailed 分别监听小程序新版本包下载成功和失败,下载成功后执行 applyUpdate 达到强制更新。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端后花园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值