微信小程序新版本提示更新

公司的小程序项目上线, 后期还会有小型的版本迭代. 为了让用户能在我们进行版本迭代后及时使用最新版本的功能. 做了以下优化…
知识点1: 当用户点击左上角关闭,或者按了设备Home 键离开微信,小程序并没有直接销毁,而是进入了后台;
当再次进入微信或再次打开小程序,又会从后台进入前台,只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

知识点2: 小程序的启动分为"冷启动" 和 “热启动”.
热启动是指: 小程序打开后,在一段时间内(目前:5分钟)再次被打开,此时会将后台的小程序切换到前台。
冷启动是指: 小程序首次打开或销毁后再次被打开

知识点3: 更新版本
冷启动时, 如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。
如果要马上应用最新版本,使用 wx.getUpdateManager API 进行处理。
代码如下:

// 在app.js里写下以下代码onLaunch () {if (wx.canIUse('getUpdateManager')) {const updateManager = wx.getUpdateManager()updateManager.onCheckForUpdate(function (res) {console.log('onCheckForUpdate====', res)// 请求完新版本信息的回调if (res.hasUpdate) {console.log('res.hasUpdate====')updateManager.onUpdateReady(function () {wx.showModal({title: '更新提示',content: '新版本已经准备好,是否重启应用?',success: function (res) {console.log('success====', res)// res: {errMsg: "showModal: ok", cancel: false, confirm: true}if (res.confirm) {// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启updateManager.applyUpdate()}}})})updateManager.onUpdateFailed(function () {// 新的版本下载失败wx.showModal({title: '已经有新版本了哟~',content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~'})})}})}}

知识点4: 小程序重新初始化时会触发onLaunch事件. onLaunch事件会触发在页面onShow事件之前.获取小程序更新版本可以写在onLaunch里.

知识点5:
在开发和体验版无法测试版本更新
需要在开发者工具里,编译时选择"模拟更新编译"

![在这里插入图片描述(https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8yMzEzMDY1LTc5NWU3MzJhN2VjMWI5NDkucG5n?x-oss-process=image/format,png)
(部分开发者工具版本, 每次update编译时都需要重新勾选此选项)
点击确定,重新编译.
页面会弹窗显示:

点击确认后:

控制台显示:

知识点6: 随着小程序的不断更新, 部分功能可能需要最新版的微信客户端才能使用. 这时候可以弹窗提示用户更新到最新版本微信

if (wx.canIUse('getUpdateManager')) {...
} else {// can't use getUpdateManagerwx.showModal({title: '提示',content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'})

完整版本:

onLaunch () {if (wx.canIUse('getUpdateManager')) {const updateManager = wx.getUpdateManager()updateManager.onCheckForUpdate(function (res) {if (res.hasUpdate) {updateManager.onUpdateReady(function () {wx.showModal({title: '更新提示',content: '新版本已经准备好,是否重启应用?',success: function (res) {if (res.confirm) {updateManager.applyUpdate()}}})})updateManager.onUpdateFailed(function () {wx.showModal({title: '已经有新版本了哟~',content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~'})})}})} else {wx.showModal({title: '提示',content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'})}}

知识点7: 如果在onLaunch里进行请求, 这是异步请求. 如果对交互顺序有要求, 如: 版本更新–重新获取数据-- 用户展示, 那么需要考虑在callback里进行重获数据.

知识点8:
小程序启动时,正常是会热更新,下载新版本的包,下一次启动就会使用新包。但发现有更新不成功的情况发生.
官方回答: 策略生效跟网络环境以及发布时间等若干因素有关,会尽可能让小程序快地更新,但无法保证每次都热更新成功。

知识点9:
小程序的异步更新发生在冷启动过程. 官方不建议热更新. 原因:

官方文档–更新

转载自:简书
原作者:小小小魔仙
链接:https://www.jianshu.com/p/4f5e3faaf483

微信小程序新版本提示更新相关推荐

  1. 解决微信小程序新版本覆盖 更新慢的问题

    问题: 由于小程序的更新机制是异步的,因此部分用户不会马上使用上新版本,这就导致小程序的新版本覆盖率比较慢. 冷启动.热启动 小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」. 冷启动指的是 ...

  2. 微信小程序版本自动更新用户感知提示方案总结

    微信小程序版本自动更新用户感知提示方案总结 需求背景 最近基于uniapp开发微信小程序上线后,在迭代版本后期望自动更新提示. 使感知. 解决方案 使用全局唯一的对象: updateManager. ...

  3. 微信小程序运行及更新机制

    微信小程序运行及更新机制 1.微信小程序运行机制 1.1 前台和后台 1.2 小程序启动:冷启动和热启动 1.3 小程序销毁 2.微信小程序更新机制 2.1 启动时同步更新 定期检查发现版本更新 用户 ...

  4. uniapp 微信小程序版本更新提示

    uniapp 微信小程序版本更新提示 // app.vue onShow: function() {const updateManager = uni.getUpdateManager();updat ...

  5. 如何刷新微信服务器小程序版本,微信小程序版本自动更新

    最近在做一个小程序每次更新版本之后都需要删除小程序,再次扫码进入才可以看到新版本,接下来吾爱编程为大家介绍一下微信小程序版本自动更新的方法,有需要的小伙伴可以参考一下: 1.启动机制: (1).热启动 ...

  6. 微信小程序时间轴demo_微信小程序近期能力更新时间轴汇总

    微信小程序近期能力更新频繁,作为第三方服务商,延誉宝CMS近期的升级也非常频繁.我们简单回顾一下具体时间节点. 几个主要的时间轴如下 2020-07-08 H5 跳转小程序能力公测 为满足 H5 和小 ...

  7. 微信小程序开发提示“获取手机号码失败 ERROR:该appid没有权限”解决方案

    关于微信小程序开发提示"获取手机号码失败, ERROR:该appid没有权限"的解决方案 一般这种情况的出现都是出现在二次开发上面,原开发人员变动,不在开发该程序.新人在接手这个程 ...

  8. 微信小程序自定义提示框制作的简单方法

    微信小程序自定义提示框制作的简单方法 下面的时候提示框的结构 wxml部分 <!-- 提示框 --> <view class="showToast" wx:if= ...

  9. 微信小程序自动检测更新新版本

    app.js设置 App({onShow(){this.autoUpdate() //更新新版本},autoUpdate() { //更新新版本var self = this// 获取小程序更新机制兼 ...

  10. 微信小程序新版本发布之后用户端怎么更新

    微信小程序同其他的应用程序一样,开发之后会不断的优化.调整,进而会不定期发布新的版本,目的是为了给到用户最好的体验.开发者在管理后台发布新版本的小程序之后,用户端是如何更新的呢? 微信小程序更新机制 ...

最新文章

  1. 智源青年科学家林乾:揭开人工智能的黑匣,从解答最基本的问题开始
  2. Zoom市值达586亿美元,放中国科技巨头能排第6!净利润暴涨135倍,每天3亿人开会...
  3. 贪心入门——出租车费
  4. Appium base knowledge
  5. Appium移动自动化测试(一)--安装Appium(转)
  6. 计算机管理咂打开,6个开机启动项,害我差点把电脑砸了!禁用后电脑果然开机5秒...
  7. imu_utils标定imu问题解决
  8. [导入]源代码版本控制(二)
  9. 【转】面试:一个单例模式,足以把你秒成渣
  10. mysql memcached java_java缓存技术memcached实例
  11. 《Python编程从入门到实践》记录之将Python函数存储在模块中(import、import*)
  12. 基于ARM的嵌入式Linux应用程序开发
  13. java解压服务器文件夹,java解压7z文件
  14. VBA宏批量处理多个Word文档
  15. 安全模式删除入网小助手_入网小助手 监控
  16. Spring注解之@GetMapping详解
  17. c语言常见表达式汇总(赋值表达式,条件表达式,关系表达式,算数表达式......)
  18. 5G打通云边端,自动驾驶、云游戏等应用加速演进
  19. 代正通_ChromeBook怎么刷windows系统||Linux教程
  20. 如何理解vcc,vdd,vss

热门文章

  1. 2021年北京市企业技术中心申报时间及条件是什么
  2. 显示一个立方体的两点透视投影图(用数组存放正方体的各顶点坐标)
  3. 华氏度和摄氏度转换for-Python
  4. 订餐系统(饿了某)java程序实现
  5. 安卓双摄像头录像_USB双摄像头app下载-USB双摄像头 安卓版v9.9.1-PC6安卓网
  6. 我,是如何度过人生最艰难的时刻的
  7. 【R语言】如何进行英文分词统计(以《爱丽丝漫游奇境》词频统计为例)(20年3月22日复习笔记)
  8. python实验--文字小游戏(小黑屋)
  9. Deep Learning: The Big Picture 深度学习大局观 Pluralsight课程中文字幕
  10. 计算机主板型号进bios,hp主板进入bios的方法(电脑进入BIOS的两种实用方法)