当前位置:   article > 正文

uniapp 微信小程序:更新_uniapp 微信小程序版本更新

uniapp 微信小程序版本更新

小程序运行机制 - 小程序启动

  1. 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
  2. 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。

小程序更新机制

  1. 启动时同步更新
    1.1. 定期检查发现版本更新:微信运行时,会定期检查最近使用的小程序是否有更新。如果有,下次启动打开新版。
    1.2. 用户长时间未使用小程序:会强制同步检查版本更新。(下载新版失败,还是会用本地旧版)
  2. 启动时异步更新
    2.1. 小程序每次冷启动时,都会异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包。但当次启动仍会使用客户端本地的旧版本代码,即新版本的小程序需要等下一次冷启动才会使用。

所以我们要处理的是:热启动时检测更新,如果有就强制更新。在 onShow 生命周期中监听。

uni.getUpdateManager

  1. const updateManager = uni.getUpdateManager();
  2. export default {
  3. data() { return {}; },
  4. onShow: function() {
  5. // 当向小程序后台请求完新版本信息,会进行回调。res: {hasUpdate: true, version: 1.0.0}
  6. updateManager.onCheckForUpdate(function (res) {
  7. if (res.hasUpdate) { // 有更新
  8. uni.showLoading({title:'更新中...'}); // 开始下载前,显示Loading
  9. }
  10. });
  11. // 当新版本下载完成,会进行回调
  12. updateManager.onUpdateReady(function () {
  13. uni.hideLoading(); // 关闭 Loading
  14. uni.showModal({ // 弹确认框(强制更新)
  15. title:'更新提示',
  16. content:'更新完毕,是否重启?',
  17. success:function (res) {
  18. if (res.confirm) {
  19. updateManager.applyUpdate(); // 强制小程序重启并使用新版本。
  20. }
  21. }
  22. })
  23. });
  24. // 当新版本下载失败,会进行回调
  25. updateManager.onUpdateFailed(function () {
  26. uni.hideLoading(); // 关闭 Loading
  27. uni.showToast({ title:'更新失败,稍后再试...', icon:"error" });
  28. });
  29. },
  30. methods: { }
  31. };

以上外码中使用 uni 如果直接是微信小程序项目换成 wx 即可。

开发环境调试

  1. 微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试
  2. 小程序开发版/体验版没有「版本」概念,所以无法在开发版/体验版上测试更版本更新情况
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号