收藏
回答

有谁写过版本更新?微信小程序更新机制线上没有生效

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug 更新机制 客户端 7.0.0 2.5.0

微信小程序强制更新机制没有生效,在开发者工具模拟更新测的时候是生效了的,因为体验版和测试版小程序官方说测试不了,

线上版本更新了也没有生效

哪位大佬帮我看看哪里写的有问题

在app.js里面

onLaunch: function(options) {

//兼容

    if (compareVersion(version, '1.9.90') >= 0) {

        this.checkForUpdateApp(); //1.9.90支持

    }

}


checkForUpdateApp() {

    const updateManager = wx.getUpdateManager()

    updateManager.onCheckForUpdate(function (res) {

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

        console.log(res.hasUpdate)

    })

    

    updateManager.onUpdateReady(function () {

        wx.showModal({

        title: '更新提示',

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

        success(res) {

            if (res.confirm) {

            updateManager.applyUpdate()

            }

         }

        })

    })

    

    updateManager.onUpdateFailed(function () {

    // 新版本下载失败

    })

},



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

3 个回答

  • 陈强
    陈强
    2019-01-16
    upDataApp: function () {//版本更新
       if (wx.canIUse('getUpdateManager')) {
    const updateManager = wx.getUpdateManager();
    updateManager.onCheckForUpdate(function (res) {
    if (res.hasUpdate) { // 请求完新版本信息的回调
                   updateManager.onUpdateReady(function () {
    wx.showModal({
    title: '更新提示',
    content: '新版本已经准备好,是否重启应用?',
    success: function (res) {
    if (res.confirm) {// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
                                   updateManager.applyUpdate()
    }
    }
    })
    });
    updateManager.onUpdateFailed(function () {
    wx.showModal({// 新的版本下载失败
                           title: '已经有新版本了哟~',
    content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
    })
    })
    }
    })
    } else {
    wx.showModal({// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
               title: '提示',
    content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
           })
    }
    },

    我是在app.js的onShow()里调用这个方法是可以的

    2019-01-16
    有用 1
    回复 1
    • Q_Q
      Q_Q
      2019-01-16

      感谢大佬 一会儿试试

      2019-01-16
      1
      回复
  • Q_Q
    Q_Q
    2019-01-16

    compareVersion这个函数写用的官方给的

    //兼容,版本比较

    var compareVersion =(v1, v2)=>{

        v1 = v1.split('.')

        v2 = v2.split('.')

        const len = Math.max(v1.length, v2.length)

        

        while (v1.length < len) {

        v1.push('0')

        }

        while (v2.length < len) {

        v2.push('0')

        }

        

        for (let i = 0; i < len; i++) {

        const num1 = parseInt(v1[i])

        const num2 = parseInt(v2[i])

        

        if (num1 > num2) {

        return 1

        } else if (num1 < num2) {

        return -1

        }

        }

        

        return 0

    }


    2019-01-16
    有用 1
    回复
  • 2019-01-18

    请问楼主解决了吗?? 我在开发者工具上模拟的时候放在onLaunch里面没有执行,放在onShow里面是可以的

    2019-01-18
    有用
    回复 3
    • Q_Q
      Q_Q
      2019-01-18

      解决了 写在onShow里面就可以了

      2019-01-18
      1
      回复
    • 2019-01-18回复Q_Q

      百度了一下放在onLaunch里面根本没用,现在线上的版本也OK了吗??

      2019-01-18
      回复
    • Q_Q
      Q_Q
      2019-01-18回复

      可以了 经过测试

      2019-01-18
      回复
登录 后发表内容