Uniapp 之小程序版本更新检查——uni.getUpdateManager()

摘要:
constupdateManager=uni.getUpdateManager();updateManager.onCheckForUpdate;updateManager.onUpdateReady(function(res){uni.showModal({title:'更新提示',content:'新版本已经准备好,是否重启应用?',success{if{//新的版本已经下载好,调用applyUpdate应用新版本并重启updateManager.applyUpdate();}}});});updateManager.onUpdateFailed;根据实例,我把代码封装在一个方法里。所以,在App.vue的onShow函数下添加方法。uni.getUpdateManger()说明官方给的示例代码中中用到了uni.getUpdateManger()是什么鬼?这个API返回的是全局唯一的版本更新管理器对象:updateManage,用于管理小程序更新。如果希望冷启动后马上使用最新版本,在App的onLaunch生命周期中,调用用版本资源管理器uni.getUpdateManger()方法。知识点5在开发版和体验版无法检查版本更新。

在开发小程序的时候,版本更新在所难免。所以,我们希望每次打开的小程序的时候,都可以进行版本检测。如果有新版本,那么,就更新,并且让用户能够重启,并应用新版本。

实现

开门见山,uni-app官方网站给了我们实现方法。以下是代码示例。

const updateManager =uni.getUpdateManager();

updateManager.onCheckForUpdate(function(res) {
  //请求完新版本信息的回调
console.log(res.hasUpdate);
});

updateManager.onUpdateReady(function(res) {
  uni.showModal({
    title: '更新提示',
    content: '新版本已经准备好,是否重启应用?',
    success(res) {
      if(res.confirm) {
        //新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
      }
    }
  });

});

updateManager.onUpdateFailed(function(res) {
  //新的版本下载失败
});

根据实例,我把代码封装在一个方法里。

Uniapp 之小程序版本更新检查——uni.getUpdateManager()第1张

然后,根据场景,每次打开小程序 = 当小程序启动,或者小程序从后台进入前台 = 生命周期onShow。所以,在App.vue 的onShow函数下添加方法。当然,如果对更新要求不那么实时,也可以选在在onLaunch生命周期下执行。后文会详述其区别。

Uniapp 之小程序版本更新检查——uni.getUpdateManager()第2张

uni.getUpdateManger()说明

官方给的示例代码中中用到了uni.getUpdateManger() 是什么鬼?

这个API返回的是全局唯一的版本更新管理器对象: updateManage , 用于管理小程序更新。

平台差异

APPH5微信小程序支付宝小程序百度小程序字节跳动小程序QQ小程序
××

updateManager对象的方法列表

方法参数说明
onCheckForUpdatecallback当向小程序后台请求完新版本信息,会进行回调
onUpdateReadycallback当新版本下载完成,会进行回调
onUpdateFailedcallback当新版本下载失败,会进行回调
applyUpdate当新版本下载完成,调用该方法会强制当前小程序应用上新版本并重启

onCheckForUpdate(callback) 回调结果说明

属性类型说明
hasUpdateBoolean是否有新的版本
知识点

知识点1

当用户离开小程序时,小程序并没有直接销毁,而是进入了后台,当用户再次进入小程序时,又会从后台进入前台。

只有当小程序进入后台一定时间后者系统资源占用过高,才会被真正的销毁。

知识点2

小程序启动分为“热启动”和“冷启动”。

  • 热启动指的是小程序打开后,在一段时间内(目前:5分钟)再次被打卡,此时将后台小程序切换到前台。对应方法onShow
  • 冷启动指的是小程序首次打开或销毁后再次被打卡,对应函数onLaunch

知识点3

  • 冷启动时,如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。
  • 如果希望冷启动后马上使用最新版本,在App 的onLaunch生命周期中,调用用版本资源管理器uni.getUpdateManger()方法。
  • 同理,希望每次打开小程序,都检测更新,就使用onShow。

这样看来,用代码小程序中更新的方法不是必须的,就看你对版本更新的时效要求了。

知识点4

OnLaunch时间触发在Onshow之前。

知识点5

在开发版和体验版无法检查版本更新。需要在开发者工具里,编译时选择“模拟更新编译”。

打开方法。1)点击菜单栏的添加编译模式。2.勾选下次编译时模拟更新。

Uniapp 之小程序版本更新检查——uni.getUpdateManager()第3张

参考网址

https://uniapp.dcloud.io/api/other/update?id=getupdatemanager

https://www.jianshu.com/p/ff711136544a

免责声明:文章转载自《Uniapp 之小程序版本更新检查——uni.getUpdateManager()》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何恢复(初始化)android studio所有设置Android 9.0 系统启动流程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于Vector CANoe的讨论

默认排序​ 踩猫尾巴 汽车电子攻城狮 27 人赞同了该回答 好像是很久以前的问题啊,为什么会现在收到邀请。 我觉得  @lijuqqkiko  介绍的足够啦。我再额外发散一点吧。 目前在CAN总线测试和仿真领域,我认为VECTOR家的产品最不可替代的因素是品牌认可度。具体表现在当遇到一个棘手的现象,开始怀疑环境和工具是否有问题时,很可...

软件工程实验二—结构化分析与设计

AHPU-软件工程导论-计算机18级 班级链接 作业要求 作业链接 作业目标 1.掌握结构化的需求分析方法2.掌握分层数据流图的绘制、数据字典和加工说明的编制3.掌握数据流图映射为软件结构图的方法4.掌握需求说明书和设计说明书的主要内容,学习软件需求说明书和设计说明书的编写5.掌握测试的基本方法。 一.实验目的 (1)掌握结构化的需求分...

使用 KubeSphere 应用商店 5 分钟内快速部署 JuiceFS

作者:朱唯唯,尹珉 JuiceFS 简介 JuiceFS 是为海量数据设计的分布式文件系统,使用对象存储来做数据持久化,避免重复造轮子,还能大大降低工程复杂度,让用户专注解决元数据和访问协议部分的难题。 使用 JuiceFS 存储数据,数据本身会被持久化在对象存储(例如,Amazon S3),而数据所对应的元数据可以根据场景需要被持久化在 Redis、My...

在线office文档编辑NTKO使用心得

目录 前言 什么是ntko 准备工作 实战演练 总结 一、前言 Web开发中经常需要用到在线处理office文档的功能,现在市面上有一些常用的Web页面调用显示Office的控件技术,用起来很方便。有一些第三方ActiveX浏览器控件:比如科瀚的SOAOffice中间件、卓正软件的pageoffice控件、WebOffice控件还有我这篇文章所要说到的...

微信小程序开发学习(二)

一些官方API 总结了一些官方API,便于之后有用时针对性查找(发现官方给了好多好用的API)官方API文档 基础 wx.canIUse:判断小程序的API,回调,参数,组件等是否在当前版本可用,返回值为boolean。使用${API}.${method}.${param}.${options}或者${component}.${attribute}.${...

如何扩展 Create React App 的 Webpack 配置

CreatereactApp(以下简称 CRA)是创建react应用的一个脚手架,它与其他脚手架不同的一个地方就是将一些复杂工具(比如webpack)的配置封装了起来,让使用者不用关心这些工具的具体配置,从而降低了工具的使用难度。 但是对于一些熟悉webpack的开发者来说,他们可能想对 webpack 配置做一些修改,这个时候应该怎么办呢? 其实我们可以...