微信小程序强制更新

2023-11-17

目录

 冷启动 & 热启动

小程序更新机制:

强制更新方案

如何测试?


 冷启动 & 热启动

  • 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。

  • 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。

从小程序生命周期的角度来看,我们一般讲的「启动」专指冷启动,热启动一般被称为后台切前台。

 

小程序更新机制:

小程序在更新版本后,如果没有主动删除小程序再进入,那么小程序还是用的旧版本代码,无法更新最新版本。这样如果有紧急问题修复上线,用户却不能第一时间强制更新。

启动时同步更新:

a. 定期检查发现版本更新,微信运行时定时检查下载更新

b. 用户长时间未使用小程序,会强制同步更新

启动时异步更新

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

强制更新方案

官方提供了 UpdateManager 更新管理器对象,用来检测是否有新的版本发布。

UpdateManager 对象提供以下四种方法:

UpdateManager.applyUpdate()
强制小程序重启并使用新版本。在小程序新版本下载完成后(即收到 onUpdateReady 回调)调用。
 
UpdateManager.onCheckForUpdate(function callback)
监听向微信后台请求检查更新结果事件。微信在小程序冷启动时自动检查更新,不需由开发者主动触发。
 
UpdateManager.onUpdateReady(function callback)
监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
 
UpdateManager.onUpdateFailed(function callback)
监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)后回调

另外,如果当前版本更新有重大调整,一定需要用户更新,有两种情况:

第一种方法是可以在用户点击取消的回调中给出提示,并重新进入版本提示流程。

第二种方法就是去除取消按钮,只有确定按钮。强制用户必须升级,才能继续使用。

  if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager();
      updateManager.onCheckForUpdate(function (res) {
        if (res.hasUpdate) {
          // 弹出提示框,提示用户更新并重启小程序
          updateManager.onUpdateReady(function () {
            wx.showModal({
              title: '更新提示',
              showCancel: false,
              confirmText: '马上重启',
              content: '新版本已经上线,需要您重启小程序以应用新版本。',
              success: function (res) {
                if (res.confirm) {
                  // 调用 applyUpdate 应用新版本并重启
                  updateManager.applyUpdate();
                }
              }
            });
          });
          // 新版本下载失败时弹出提示框
          updateManager.onUpdateFailed(function () {
            wx.showModal({
              title: '更新失败',
              content: '新版本下载失败,请删除当前小程序,重新搜索打开。',
            });
          });
        }
      });
    } else { // 如果用户微信版本过低,则弹出提示框
      wx.showModal({
        title: '提示',
        content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。',
      });
    }

boolean wx.canIUse(string schema)

判断小程序的API,回调,参数,组件等是否在当前版本可用。

如何测试?

注意:

微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试

小程序开发版/体验版没有「版本」概念,所以无法在开发版/体验版上测试更版本更新情况

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序强制更新 的相关文章

  • vue组件(个人学习笔记三)

    目录 友情提醒 第一章 vue的组件 1 1 什么是SPA应用 1 2 vue的组件简介 1 3 vue工程中的main js文件 第二章 Vue组件的使用 2 1 一般组件的自定义 2 2 注册组件 全局注册和局部注册 2 2 1 全局注
  • phpstorm 调试_PhpStorm中的多用户调试

    phpstorm 调试 by Ray Naldo 雷 纳尔多 Ray Naldo PhpStorm中的多用户调试 Multi User Debugging in PhpStorm 使用Xdebug和DBGp代理 Using Xdebug a
  • [转](四)在 GitHub 上创建仓库

    终于我们到了最激动人心的时刻了 在 GitHub 上创建第一个仓库 下面 我们通过一次上传 Github 的完整操作 实践学习 Git 的常用功能 首先 申请一个 Github 账户 打开 GitHub 你可以在主页的 banner 上快速
  • 华为OD机试 Python 【跳房子II】

    描述 跳房子 是个儿童游戏 你得跳过一排房子 从第一个直到最后一个 成功跳完一轮 你可以选择一个房子 当所有房子都被选了 拥有最多房子的人就赢了 如果你踩线或犯规 你这轮就结束 可能还得倒退 假设有count个房子格子 小红每轮可以选择跳一

随机推荐

  • 调整线程池对性能影响

    默认最小线程数是CPU的内核数 默认最大线程数是机器内核数的250倍 线程池调度会将激活的线程限制在默认最小线程数 如果没有线程结束的话每秒至多可以唤起两个新的线程 假设一个四核的机器 对于线程池来说 会运行很久或很多堵塞的不是I O引起的
  • 创建 WinForm 应用程序

    创建 WinForm 应用程序 创建 WinForm 应用程序 创建 WinForm 项目 点击 文件 gt 新建 gt 项目 选项 进入 新建项目 界面 选中 Windows窗体 应用程序 并设置项目的名称 位置及解决方案名称 如下图所示
  • JavaScript预编译过程

    JavaScript预编译过程 阶段 三个 预编译过程 1 JavaScript代码执行之前的预编译 案例说明 2 函数执行前的预编译 案例说明 总结 预编译两个小规则 预编译前奏 阶段 三个 词法语法分析 词法语法分析就是检查JavaSc
  • Linux中找不到blas库,linux – caffe:/usr/bin/ld:找不到-lcblas

    我已经在我的CentOS7 64位 中安装了BLAS 但是当我的使用全部在我的 caffe 它报告了一个错误 usr bin ld cannot find lcblas usr bin ld cannot find latlas colle
  • MySql创建新用户并赋予某些表的读写权限

    1 登录root用户 2 创建一个新用户 CREATE USER 用户名 IDENTIFIED BY 密码 3 赋予该用户相应权限 GRANT SELECT INSERT UPDATE DELETE ON 库名 表名 TO 用户名
  • 已解决No suitable driver found for jdbc:mysql://localhost:3306/ 问题

    已解决No suitable driver found for jdbc mysql localhost 3306 问题 本文目录 一 Bug描述 二 定位报错点及原因 三 最终的解决方案 四 相关注意事项 总结 一 Bug描述 在学习ja
  • Acwing-4653. 数位排序

    本题重点在于预处理每个数的各位之和 cmp函数的书写 根据题目中的描述 当两个数各个数位之和不同时 将数位和较小的排在前面 当数位之和相等时 将数值小的排在前面 不难写出cmp函数 快速排序的比较次数为nlogn次 本题中约为2 10 7
  • vue 读取Excel文件中的日期,转为所需要的时间格式

    const FileDate date number type String gt if date let year month day HH mm ss const time new Date date 1 24 3600000 1 8
  • 使用vue-video-player播放视频

    1 npm安装 vue video player videojs contrib hls 2 在main js中引入 import Vue from vue import App from App vue import router fro
  • python包管理-conda(miniconda)

    配置整理 channels https mirrors tuna tsinghua edu cn anaconda pkgs main http mirrors aliyun com anaconda pkgs main show chan
  • vue-router刷新页面后回到首页

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 今天给大家分享一个小知识点 注意查收 平时我们再写vue项目配置完路由之后会发现他不会自动回到首页 解决方法很简单 加个判断就可以啦 在App
  • Tomcat的卸载和安装

    Tomcat的卸载和安装 一 Tomcat卸载 1 删除Tomcat安装目录 2 删除相关注册表 3 删除Tomcat service 二 Tomcat安装 1 下载Tomcat安装包 2 解压和启动Tomcat 3 设置环境变量 4 查看
  • DTMF信号检测分析(Matlab)

    基于Matlab平台的DTMF信号检测 1 将录制好的一段按键音读入到Matlab平台 2 设计带通滤波器 去噪处理 可选 3 将给个按键音对应的信号一次分割 4 计算分割后信号的相应的频点值 幅度最大的两个点即为该信号的高低频 5 显示音
  • HTML特效推荐,超级惊艳 10款HTML5动画特效推荐[转]

    ylbtech html5 democss 今天咱们要来推荐 10 款超级惊艳的 HTML5 动画特效 有一些是基于 CSS3 和 jQuery 的 比较实用 特别是前几个 HTML5 动画 简直酷毙了 如今将它们分享给你们 也许你能用到这
  • python基本数据类型——整型,浮点型,复数,字符串

    由于也是初学python 所以在这里简要介绍一下python基础的数据类型 好在宏观上有个把握 整数类型 python里面的整数类型可正可负 不像其他的语言 python的整数并没有取值范围的限制 如 pow x y 函数用来计算x的y次方
  • python中使用提示的python -m pip install --upgrade pip升级失败解决方案

    1 使用python m pip install upgrade pip升级失败 2 使用python m pip install U force reinstall pip依然失败 3 使用pip install user upgrade
  • 出现 ERROR StatusLogger Log4j2 could not find a logging implementation.

    控制台出现 ERROR StatusLogger Log4j2 could not find a logging implementation Please add log4j core to the classpath Using Sim
  • 阿里研究员:软件测试中的18个难题

    简介 对于软件测试来说 怎么样才算测够了 如何评价测试的有效性 那么多测试用例 以后怎么删 在软件测试中会遇到非常多的问题 阿里研究员郑子颖分享了18个他总结出的难题以及相关看法 希望对同学们有所启发 十多年前我在上一家公司的时候看到过内部
  • 17、系统设计篇-技术选型

    技术选型 就是在两个或多个技术方案中选择适合当前项目情况的方案 技术选型不仅是个技术的选择 也是一个和项目情况密切相关的项目决策 技术选型 本质上是项目决策的一种 要做好技术选型 就是要做好项目决策 一 项目决策需考虑的角度 1 时间 范围
  • 微信小程序强制更新

    目录 冷启动 热启动 小程序更新机制 强制更新方案 如何测试 冷启动 热启动 冷启动 如果用户首次打开 或小程序销毁后被用户再次打开 此时小程序需要重新加载启动 即冷启动 热启动 如果用户已经打开过某小程序 然后在一定时间内再次打开该小程序