小程序:浅谈小程序更新机制,发版后多久能全覆盖

一、问题描述

小程序会伴随业务的成长不断更新版本,那么发布了新版本后多长时间能被用户看到?

有人说,微信小程序的更新机制长久以来都是迷一样的存在,当你发布一个新版本的时候,不知道何时用户才能看到。明明已经发布了,却还总有用户反馈同样的问题。

本人结合官网文档和网上的一些资料整理形成本文。

二、小程序更新机制

开发者在管理后台发布新版本的小程序之后,微信客户端会有若干个时机去检查本地缓存的小程序有没有新版本,并进行小程序的代码包更新。但如果用户本地有小程序的历史版本,此时打开的可能还是旧版本。

2.1、未启动时更新

微信运行时,会定期检查最近使用的小程序是否有更新。如果有更新,下次小程序启动时会同步进行更新,更新到最新版本后再打开小程序,尽可能保证用户能够尽快使用小程序的最新版本。

总的来说,开发者在后台发布新版本之后,无法立刻影响到所有现网用户,但最差情况下,也在发布之后 24 小时之内覆盖绝大多数用户。

2.2、启动时更新

即使启动前未发现更新,小程序每次冷启动时,都会异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包。但当次启动仍会使用客户端本地的旧版本代码,即新版本的小程序需要等下一次冷启动才会应用上。

三、如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理

// 这段代码需要在小程序的app.js中的onLaunch函数里添加,用于在小程序启动时检查并提示用户更新。
onLaunch() {  
  wx.showLoading({  
    title: '加载中...',  
    mask: true  
  });  
  const updateManager = wx.getUpdateManager();  
  updateManager.onCheckForUpdate(function (res) {  
    // 请求完新版本信息的回调  
    console.log('是否有新版本:', res.hasUpdate);  
    if (res.hasUpdate) {  
      updateManager.onUpdateReady(function () {  
        wx.hideLoading();  
        wx.showModal({  
          title: '更新提示',  
          content: '新版本已经准备好,是否重启应用?',  
          showCancel: false,  
          success: function (res) {  
            if (res.confirm) {  
              // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启  
              updateManager.applyUpdate();  
            }  
          }  
        });  
      });  
      updateManager.onUpdateFailed(function () {  
        wx.hideLoading();  
        wx.showModal({  
          title: '提示',  
          content: '检查到有新版本,但下载失败,请检查网络后重试',  
          showCancel: false  
        });  
      });  
    } else {  
      wx.hideLoading();  
    }  
  });  
}

(放在项目里,伴随着以后的每次发版进行调试)

文档说明:冷启动时候自动触发,无需开发者主动调用

只要你上传了代码并通过审核然后发布,线上小程序就会根据这个机制进行更新

四、名词解释

冷启动:从未打开过小程序或者打开过小程序但是已经被销毁了,这种情况下打开就是冷启动(完全从头开始)

热启动:此前使用过小程序且小程序没有被销毁,这种情况再打开小程序就是热启动(保持此前离开时的页面状态)

小程序冷启动到销毁:

四、欢迎交流指正

五、参考链接

百度安全验证

 小程序更新机制 | 微信开放文档

updateManager.onCheckForUpdate这个函数调佣了没反应呢? | 微信开放社区

UpdateManager.onCheckForUpdate在热启动的时候如何触发? | 微信开放社区

小程序什么时候会销毁 | 微信开放社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值