uniapp 微信小程序:更新
- 小程序运行机制 - 小程序启动
- 小程序更新机制
- uni.getUpdateManager
- 开发环境调试
- 参考资料
小程序运行机制 - 小程序启动
- 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
- 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。
小程序更新机制
- 启动时同步更新
1.1. 定期检查发现版本更新:微信运行时,会定期检查最近使用的小程序是否有更新。如果有,下次启动打开新版。
1.2. 用户长时间未使用小程序:会强制同步检查版本更新。(下载新版失败,还是会用本地旧版) - 启动时异步更新
2.1. 小程序每次冷启动时,都会异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包。但当次启动仍会使用客户端本地的旧版本代码,即新版本的小程序需要等下一次冷启动才会使用。
所以我们要处理的是:热启动
时检测更新,如果有就强制更新。在 onShow
生命周期中监听。
uni.getUpdateManager
const updateManager = uni.getUpdateManager();export default {data() { return {}; },onShow: function() {// 当向小程序后台请求完新版本信息,会进行回调。res: {hasUpdate: true, version: 1.0.0}updateManager.onCheckForUpdate(function (res) {if (res.hasUpdate) { // 有更新uni.showLoading({title:'更新中...'}); // 开始下载前,显示Loading}});// 当新版本下载完成,会进行回调updateManager.onUpdateReady(function () {uni.hideLoading(); // 关闭 Loading uni.showModal({ // 弹确认框(强制更新)title:'更新提示',content:'更新完毕,是否重启?',success:function (res) {if (res.confirm) {updateManager.applyUpdate(); // 强制小程序重启并使用新版本。}}})});// 当新版本下载失败,会进行回调updateManager.onUpdateFailed(function () {uni.hideLoading(); // 关闭 Loading uni.showToast({ title:'更新失败,稍后再试...', icon:"error" });});},methods: { }
};
以上外码中使用 uni
如果直接是微信小程序项目换成 wx
即可。
开发环境调试
- 微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试
- 小程序开发版/体验版没有「版本」概念,所以无法在开发版/体验版上测试更版本更新情况
参考资料
uni.getUpdateManager()
小程序运行机制
小程序更新机制
wx.getUpdateManager