• uniapp - 微信小程序新版本发布之后用户端如何手动更新


    解疑:微信运行时,会定期检查最近使用的小程序是否有更新。如果有更新,下次小程序启动时会同步进行更新,更新到最新版本后再打开小程序,尽可能保证用户能够尽快使用小程序的最新版本。开发者在后台发布新版本之后,无法立刻影响到所有现网用户,但最差情况下,也在发布之后24小时之内覆盖绝大多数用户。

    #目录#

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

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

    小程序更新机制
    启动时同步更新
    1.1. 定期检查发现版本更新:微信运行时,会定期检查最近使用的小程序是否有更新。如果有,下次启动打开新版。
    1.2. 用户长时间未使用小程序:会强制同步检查版本更新。(下载新版失败,还是会用本地旧版)
    启动时异步更新
    2.1. 小程序每次冷启动时,都会异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包。但当次启动仍会使用客户端本地的旧版本代码,即新版本的小程序需要等下一次冷启动才会使用。
    所以我们要处理的是:热启动时检测更新,如果有就强制更新。在 onShow 生命周期中监听。

    在首页index.vue文件中写入! 

    1. onShow: function () {
    2. console.log("App Show");
    3. let updateManager = uni.getUpdateManager();
    4. if (!updateManager) {
    5. return;
    6. } else {
    7. //新版本更新
    8. if (uni.canIUse("getUpdateManager")) {
    9. //判断当前微信版本是否支持版本更新
    10. updateManager.onCheckForUpdate(function (res) {
    11. if (res.hasUpdate) {
    12. // 请求完新版本信息的回调
    13. updateManager.onUpdateReady(function () {
    14. uni.showModal({
    15. title: "更新提示",
    16. content: "新版本已经准备好,是否重启应用?",
    17. success: function (res) {
    18. if (res.confirm) {
    19. // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
    20. updateManager.applyUpdate();
    21. }
    22. },
    23. });
    24. });
    25. updateManager.onUpdateFailed(function () {
    26. uni.showModal({
    27. // 新的版本下载失败
    28. title: "已经有新版本了哟~",
    29. content:
    30. "新版本已经上线啦~,请您删除当前小程序,到微信 “发现-小程序” 页,重新搜索打开哦~",
    31. });
    32. });
    33. } else {
    34. }
    35. });
    36. } else {
    37. uni.showModal({
    38. // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
    39. title: "溫馨提示",
    40. content:
    41. "当前微信版本过低,部分功能无法使用,请升级到最新微信版本后重试。",
    42. });
    43. }
    44. }
    45. },

    开发环境调试

    1.在微信开发者工具中测试

     2.打开

    3.添加模拟状态

    效果

     
     

     

  • 相关阅读:
    git 怎么保留某个文件夹忽略其下面的所有文件?
    HI3516DV300 图像输入
    计算机毕业设计SSM大学生志愿者管理系统【附源码数据库】
    vue常见的keep-alive问题
    Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
    Spring Boot(七十七):SpringBoot实现接口内容协商功能
    数学术语之源——单射(injection),满射(surjection),双射(bijection)
    ESB结合UMC云平台开发说明
    【Linux】线程
    css-渐变色矩形
  • 原文地址:https://blog.csdn.net/weixin_63456913/article/details/133783776