收藏
回答

wx.getUpdateManager() 在本地可以正常发起更新弹框的提示发在正式版本一直不提示?

  onShow: function (){

    this.autoUpdate()

  },

  autoUpdate:function(){

    console.log(new Date())

    var self=this

    // 获取小程序更新机制兼容

    if (wx.canIUse('getUpdateManager')) {

      const updateManager = wx.getUpdateManager()

      //1. 检查小程序是否有新版本发布

      updateManager.onCheckForUpdate(function (res) {

        // 请求完新版本信息的回调

        if (res.hasUpdate{

          //2. 小程序有新版本,则静默下载新版本,做好更新准备

          updateManager.onUpdateReady(function () {

            console.log(new Date())

            wx.showModal({

              title: '更新提示',

              content: '新版本已经准备好,是否重启应用?',

              success: function (res) {

                if (res.confirm{

                  //3. 新的版本已经下载好,调用 applyUpdate 应用新版本并重启

                  updateManager.applyUpdate()

                  wx.removeStorage({

                              key: 'token',

                            })

                } else if (res.cancel{

                  //如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了

                  wx.showModal({

                    title: '温馨提示~',

                    content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~',

                    success: function (res) {     

                      self.autoUpdate()

                      return;                 

                      //第二次提示后,强制更新                      

                      if (res.confirm{

                        // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启

                        updateManager.applyUpdate()

                        wx.removeStorage({

                          key: 'token',

                        })

                      } else if (res.cancel{

                        //重新回到版本更新提示

                        self.autoUpdate()

                      }

                    }

                  })

                }

              }

            })

          })

          updateManager.onUpdateFailed(function () {

            // 新的版本下载失败

            wx.showModal({

              title: '已经有新版本了',

              content: '新版本已经上线,请您删除当前小程序,重新搜索打开',

            })

          })

        }

      })

    } else {

      // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示

      wx.showModal({

        title: '提示',

        content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'

      })

    }

  }


回答关注问题邀请回答
收藏

3 个回答

  • 拾忆
    拾忆
    03-13

    只有在正式版存在以上代码,且下次提交重新发布新版本的时候才会触发更新机制。

    如果之前线上版本没有相关代码是不会触发更新机制的。

    03-13
    有用 1
    回复 12
    • 念晓。
      念晓。
      03-13
      这个已经再次提交了 还是没有这个弹框  想要每次更新版本都会有这个提示 更新呢的机制
      03-13
      回复
    • 拾忆
      拾忆
      03-13回复念晓。
      需要通过审核且发布有这个代码的>1的版本才会体现出来,如果用户已经是最新版本的话就不能测试(比如删除后重新加载的小程序是最新版就不会触发这个机制)。
      03-13
      回复
    • 念晓。
      念晓。
      03-13
      就是说 现在线上版本是1.0.1 这个版本是有这个更新机制的代码  需要在发布一版 1.0.2的版本 这个时候就会生效是吗
      03-13
      回复
    • 拾忆
      拾忆
      03-13回复念晓。
      是的,而且只有用户微信端的缓存是1.0.1的版本才会出现提示,最新版本和更早版本就不会提示。
      03-13
      回复
    • 念晓。
      念晓。
      03-13
      删除后重新加载小程序是不会提示的  哪他之前登陆过 但是没删除 时间比较久的 会去触发这个机制?
      03-13
      回复
    查看更多(7)
  • 啊糖
    啊糖
    04-09

    楼主解决这个问题了吗 我这里线上也没有出现

    04-09
    有用
    回复
  • hello world
    hello world
    03-13

    微信自己也有机制去更新小程序的,如果微信已经更新到最新版了,就不会有这个弹框了

    03-13
    有用
    回复 1
    • 念晓。
      念晓。
      03-13
      那怎末可以 每次发版之后都会去调去这个弹框 需要从后端返回一个状态 去触发?
      03-13
      回复
登录 后发表内容