美文网首页
小程序检测新版本

小程序检测新版本

作者: 苏北苝 | 来源:发表于2020-05-14 16:55 被阅读0次

    在小程序新版本更新后,老的版本需要同步,否则可能会影响新版本的数据,所以需要做一个检测版本,方法如下图:

    方法介绍
    地址见微信官方
    1、因为这个getUpdateManager 是 1.9.90 开始支持,低版本需做兼容处理
    这里用的是canIUse,低版本提示用户手动更新
    if (wx.canIUse('getUpdateManager')) {
      //检查是否有更新
    }else{
      wx.showModal({
            title: '提示',
            content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
          })
    }
    

    2、可以使用getUpdateManager的时候,通过updateManager.onCheckForUpdate进行版本更新判断,

     const updateManager = wx.getUpdateManager()
          //1. 检查小程序是否有新版本发布
          updateManager.onCheckForUpdate(function (res) {
            // 请求完新版本信息的回调
            if (res.hasUpdate) {
              // 进行更新操作
          }
    

    3、有更新时,进行自动静默更新,主要两个事件:

    (1)  UpdateManager.onUpdateReady(function callback)
    监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
    (2) UpdateManager.onUpdateFailed(function callback)
    监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)后回调
    
    

    4、完成代码如下:

    app.js
    onLaunch({
      let self = this
        // 获取小程序更新机制兼容
        if (wx.canIUse('getUpdateManager')) {
          const updateManager = wx.getUpdateManager()
          //1. 检查小程序是否有新版本发布
          updateManager.onCheckForUpdate(function (res) {
            // 请求完新版本信息的回调
            if (res.hasUpdate) {
              //2. 小程序有新版本,则静默下载新版本,做好更新准备
              updateManager.onUpdateReady(function () {
                wx.showModal({
                  title: '更新提示',
                  content: '新版本已经准备好,是否重启应用?',
                  success: function (res) {
                    if (res.confirm) {
                      //3. 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
                      updateManager.applyUpdate()
                    } else if (res.cancel) {
                      //如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了
                      wx.showModal({
                        title: '温馨提示~',
                        content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~',
                        success: function (res) {
                          self.autoUpdate()
                          return;
                          //第二次提示后,强制更新                      
                          if (res.confirm) {
                            // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
                            updateManager.applyUpdate()
                          } else if (res.cancel) {
                            //重新回到版本更新提示
                            self.autoUpdate()
                          }
                        }
                      })
                    }
                  }
                })
              })
              updateManager.onUpdateFailed(function () {
                // 新的版本下载失败
                wx.showModal({
                  title: '已经有新版本了哟~',
                  content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
                  showCancel: false
                })
              })
            }
          })
        } else {
          // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
          wx.showModal({
            title: '提示',
            content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
          })
        }
    })
    
    

    在开发者工具模拟更新,打开编辑模式 — 新增— 勾选 下次编译模拟更新


    模拟更新

    成功效果如下图:


    成功更新

    源文件GitHub地址

    相关文章

      网友评论

          本文标题:小程序检测新版本

          本文链接:https://www.haomeiwen.com/subject/mquwihtx.html