收藏
回答

关于线上版本发布过后用户打开的是旧版本的程序

每次线上版本更新,审核过后发布到线上版本,用户打开之后还是以前的旧版本,非得把小程序删掉,在添加才会是新版本。。求教怎么才能做到版本更替,不让用户自己删除再添加啊,有没有什么方式立即生效,

最后一次编辑于  02-12  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

4 个回答

  • 娇华
    娇华
    02-12

    关于更新的问题请阅读文档运行机制:https://developers.weixin.qq.com/miniprogram/dev/framework/operating-mechanism.html

    02-12
    赞同 2
    回复
  • Celia
    Celia
    02-14

     在app.js的 onLaunch里面加入如下代码:


        // 获取手机设备信息

        wx.getSystemInfo({

          success: (res) => {

            wx.setStorageSync('systemInfo', res)

          }

        })


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

        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: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'

          })

        }


    02-14
    赞同 1
    回复
  • iHealth 王深镇
    iHealth 王深镇
    02-12

    我们这边是清理掉后台启动的小程序,或者直接清理掉微信的进程,再打开

    02-12
    赞同 1
    回复 25
    • 无言
      无言
      02-12

      刚刚看了一个强制更新的方法不知道有没有用


      02-12
      回复
    • Mr.Hope
      Mr.Hope
      02-12回复无言

      那个是有用的,我从来都是直接强制用户更新

      02-12
      回复
    • Mr.Hope
      Mr.Hope
      02-12回复无言


      // 检查小程序更新并应用

      const appUpdate = (forceUpdate = true, reset = false) => { // 参数:是否强制更新,是否重置小程序

      const updateManager = wx.getUpdateManager();

      let version;

      updateManager.onCheckForUpdate(res1 => {


      // 找到更新

      if (res1.hasUpdate) {


      // 提示用户获取到更新

      wx.showToast({ title: "检测到更新,下载中...", icon: "none" });

      console.warn("APP has a Update Version");// 调试


      // 请求配置文件

      wx.request({

      url: "https://你的网站上的一个配置文件(里面包含了forceUpdate, reset, version的信息).json",

      success: res2 => {

      console.log(res2); // 调试


      // 获取成功,覆盖默认参数

      if (res2.statusCode == 200) ({ forceUpdate, reset, version } = res2.data);


      }

      });


      }

      });


      updateManager.onUpdateReady(() => {


      // 更新下载就绪,提示用户重新启动

      if (forceUpdate) wx.showModal({

      title: "已找到新版本",

      content: `版本${version}已下载,请重启应用更新。${(reset ? "该版本会初始化小程序。" : "")}`,

      showCancel: !reset, confirmText: "应用", cancelText: "取消",

      success: res => {


      // 用户确认,应用更新

      if (res.confirm) updateManager.applyUpdate();


      }

      });

      });


      updateManager.onUpdateFailed(() => {


      // 更新下载失败,提示用户网络出现问题

      wx.showToast({ title: "小程序更新下载失败,请检查您的网络!", icon: "none" });

      console.warn("Update failure"), wx.reportMonitor("23", 1), logger.warn("Upate App error", "Net Error");// 调试


      });

      };



      02-12
      1
      回复
    • Mr.Hope
      Mr.Hope
      02-12回复无言

      送你个函数

      02-12
      回复
    • 无言
      无言
      02-12回复Mr.Hope

      有没有实例方法啊,官方文档有点简单,许多处理不知道怎么搞,比如方法放在哪里调用,强制重启需要时间是大概多久,是不是重新下载新版本程序。旧版本有没有删除。还有版本号怎么个规范才能调用那个方法知道有新版本


      02-12
      回复
    查看更多(20)
  • meiko
    meiko
    02-13

    更新不是有分冷更新和热更新么?

    02-13
    赞同
    回复 2
    • Mr.Hope
      Mr.Hope
      02-17

      其实所谓的热更新是不存在的,因为微信不支持eval,你要自己写一个解释器的话大小在100K-300K之间,取决于你要支持多少es特性.....而且还要在界面onLoad中调用相关逻辑覆盖对应函数,非常麻烦,我的一个成熟案例拿出了500K给这东西。微信小程序所谓的热更新也是启动小程序的时候检查一下更新,等下载好了就立即重启,冷更新是新版本小程序发布以后微信客户端自己检查小程序(最近使用和我的小程序)是否有更新,自动下载最新版本并替换。

      和淘宝、微信自身、QQ这种APP的热更新可差远了

      02-17
      回复
    • Mr.Hope
      Mr.Hope
      02-17

      牛X的大神眼中微信小程序现在提供的大小限制是15M以上,人家能把存储都给利用起来放函数资源逻辑等,完整的页面预加载逻辑还能让你用起来很丝滑

      02-17
      回复