uniapp怎么实现小程序检测版本更新

背景

开发者在管理后台发布了新版本,而用户本地是小程序上一个版本的代码,但接口结构已经更新,所以可能会报错。
为了解决这种场景,需要定时去检测小程序有没有发布新版本,如果发布了新版本就强制更新小程序。

怎么实现

在app.vue的onShow方法里写自动更新版本的方法

onShow () {
   // 自动更新版本
   this.autoUpdate()
},
methods: {
	autoUpdate () {
      const self = this
      // 获取小程序更新机制兼容
      if (uni.canIUse('getUpdateManager')) {
        const info = uni.getAccountInfoSync()
        const updateManager = uni.getUpdateManager()
        // 1. 检查小程序是否有新版本发布
        updateManager.onCheckForUpdate((res) => {
          // 请求完新版本信息的回调
          if (res.hasUpdate) {
            // 检测到新版本,需要更新,给出提示
            wx.showModal({
              title: '更新提示',
              content: '检测到新版本,是否下载新版本并重启小程序?',
              showCancel: false, // 隐藏取消按钮
              confirmText: '确定更新', // 只保留确定更新按钮
              success ({ confirm }) {
                if (confirm) {
                  // 2. 用户确定下载更新小程序,小程序下载及更新静默进行
                  self.downLoadAndUpdate(updateManager)
                }
              }
            })
          }
        })
      } else {
        // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
        uni.showModal({
          title: '提示',
          content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
        })
      }
    },
    /**
     * 下载小程序新版本并重启应用
     */
    downLoadAndUpdate: (updateManager) => {
      uni.showLoading()
      // 静默下载更新小程序新版本
      updateManager.onUpdateReady(() => {
        uni.hideLoading()
        // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
        updateManager.applyUpdate()
      })
      updateManager.onUpdateFailed(() => {
        // 新的版本下载失败
        uni.showModal({
          title: '已经有新版本了哟~',
          content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
        })
      })
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值