本文只要介绍HBuilder实现App资源在线升级更新。

梳理思路:

1.获取线上App版本号和当前App版本号
2.比对版本号,判断是否资源在线升级更新
3.是否下载最新安装包[可以静默下载或用户触发]
4.是否执行资源在线升级更新[可以主动或用户触发]
5.是否立即重启生效[可以主动或用户触发]

关键代码:

由于HBuilder开发的App版本,为了方便大家直接使用,下列代码plus.nativeUI.未做封装。使用的时候可以根据自己的习惯自行整理。

//通过接口请求,获取线上的版本号
var checkUrl= "2.0.0" //通过接口请求,获取线上的版本号。此处默认2.0.0
// 获取当前版本号
function checkUpdate(){plus.runtime.getProperty(plus.runtime.appid,function(inf){wgtVer=inf.version;console.log("当前应用版本:"+wgtVer);if(compareVersion(wgtVer, checkUrl)){ // 判断当前版本是否需要更新plus.nativeUI.confirm('发现新版本'+checkUrl+'是否下载', function(e){ // 此方法请在plusReady()完成后if(e.index>0){plus.nativeUI.toast('升级包下载中...');downWgt();  // 下载升级包}}, 'HelloH5', ['取消','确定']);}});}//版本比较
function compareVersion( ov, nv ){ // ov为本地历史版本,nv为当前线上版本console.log(ov, nv)if ( !ov || !nv || ov=="" || nv=="" ){return false;}var b=false,ova = ov.split(".",4),nva = nv.split(".",4);for ( var i=0; i<ova.length&&i<nva.length; i++ ) {var so=ova[i],no=parseInt(so),sn=nva[i],nn=parseInt(sn);if ( nn>no || sn.length>so.length  ) {return true;} else if ( nn<no ) {return false;}}if ( nva.length>ova.length && 0==nv.indexOf(ov) ) {return true;}
}
// 下载wgt文件
var wgtUrl="http://www.vitian.vip/upload/H5D6C9AEA.wgt"; // 线上版本在线更新的.wgt文件路径
function downWgt(){
//  plus.nativeUI.showWaiting("下载wgt文件...");plus.downloader.createDownload( wgtUrl, {filename:"_doc/update/"}, function(d,status){if ( status == 200 ) { console.log("下载wgt成功:"+d.filename);plus.nativeUI.confirm('升级包下载完成,是否安装最新版本?', function(e){if(e.index>0){installWgt(d.filename); // 安装wgt包}}, 'HelloH5', ['取消','确定']);} else {console.log("下载wgt失败!");
//          plus.nativeUI.alert("下载wgt失败!");}
//      plus.nativeUI.closeWaiting();}).start();
}
// 更新应用资源
function installWgt(path){console.log(path)plus.nativeUI.showWaiting("安装升级文件...");plus.runtime.install(path,{},function(){plus.nativeUI.closeWaiting();console.log("安装wgt文件成功!");// 是否立即重启plus.nativeUI.confirm('应用资源更新完成,是否立即重启生效?', function(e){if(e.index>0){plus.runtime.restart();}}, 'HelloH5', ['取消','确定']);
//      plus.nativeUI.alert("应用资源更新完成!",function(){
//
//
//      });},function(e){plus.nativeUI.closeWaiting();console.log("安装wgt文件失败["+e.code+"]:"+e.message);plus.nativeUI.toast("安装wgt文件失败["+e.code+"]:"+e.message);});
}
// 用户主动除非检测版本更新
function isCheckUpdate(){plus.runtime.getProperty(plus.runtime.appid,function(inf){wgtVer=inf.version;console.log("当前应用版本:"+wgtVer);console.log(compareVersion(wgtVer, checkUrl))if(compareVersion(wgtVer, checkUrl)){plus.nativeUI.confirm('发现新版本'+wgtVer+'是否下载', function(e){if(e.index>0){plus.nativeUI.toast('升级包下载中...');downWgt();  // 下载升级包}}, 'HelloH5', ['取消','确定']);} else {
//           plus.nativeUI.alert("当前应用版本为最新版本");plus.nativeUI.toast('当前应用版本为最新版本');}});
}

注:App资源在线更新,如果只是改过目录结构,如js、css、html页面,属于同名文件覆盖,所以非同名文件是会被保留在本机的。如果改变manifest.json的文件内容,是需要整包升级的。

DEMO下载路径为:https://download.csdn.net/download/qq_38209578/10908123

HBuilder实现App资源在线升级更新相关推荐

  1. 软件包管理 之 软件在线升级更新yum 图形工具介绍

    作者:北南南北 来自:LinuxSir.Org 提要:yum 是Fedora/Redhat 软件包管理工具,包括文本命令行模式和图形模式:图形模式的yum也是基于文本模式的:目前yum图形前端程序主要 ...

  2. electron在线升级更新的两种方式(整体更新和部分更新)及我是如何实现electron在线升级热更新功能的?(企业级项目已上线)

    这篇主要以讲解部分资源在线热更新的实现为核心,electron自带的整体更新的实现较简单,简单说一下即可,如有疑问点的可以自行查阅相关资料或在下面留言给我即可 一.electron的在线升级更新方式都 ...

  3. 跨平台应用开发进阶(三): uni-app 实现资源在线升级/热更新

    文章目录 一.前言 1.1 Android升级检测机制 二.wgt 资源升级包升级 2.1 修改版本号 2.2 发行 2.3 安装资源升级包 2.3.1 代码示例 2.3.2 小结 三.整包升级 3. ...

  4. C#单exe程序在线升级更新

    有一个小工具,除了配置文件就只有一个exe主程序,以前弄别的工具有引用一些dll,还做了更新器,这个小工具不想弄太复杂,希望保持单exe又具有在线升级的功能,网上看到有人问过同样问题,写下我的方法以作 ...

  5. Android app 内部在线升级

    app在线更新是一个比较常见需求,新版本发布时,进入app,会弹出更新提示框,第一时间更新新版本app.在线更新分为以下几个步骤: 1.请求api 2.检查版本 3.下载最新版本apk 4.安装apk ...

  6. 解决macOS无法在线升级更新的问题

    macOS在线更新功能本来十分方便,但是本人macbook pro自从10.14.x开始(包括Catalina 10.15.x)就无法直接更新.开始时提示.下载.运行更新程序.自动重启安装... 一切 ...

  7. C#实现程序的版本在线升级更新

    文章目录 背景 代码 下载地址 设置到的知识点 参考文献 背景 最近在做开发的时候,需要程序有自动版本升级的功能.特此记录下整个过程. 代码 注意事项: 服务器端需要上传XML配置文件和待下载的软件 ...

  8. Fedora/Redhat 在线安装更新软件包,yum 篇 ── 给新手指南 (转载)

    源地址:http://fedora.linuxsir.org/main/?q=node/31 ==================================================== ...

  9. Android 项目必备(二十九)-->App 在线升级与更新

    文章目录 前言 实战 前言 1. 用户使用 App 的时候升级提醒有两种方式获得: 通过应用市场获取: 打开应用之后提醒用户更新升级. 2. 更新操作一般是在用户点击了升级按钮之后开始执行的,这里的升 ...

最新文章

  1. Python 包管理工具解惑
  2. QML实现酷炫的 Cover Flow 效果(PathView)
  3. linux文件内容添加序号,nl命令将指定的各个文件添加行号编号序号标注后写到标准输出...
  4. eclipse egit 报错 The current branch is not configured for pull No value for key branch.master
  5. 线上环境部署MongoDB的官方建议
  6. 计算机网断IP修改,修改计算机名、IP
  7. Java工作笔记-使用CXF接入及创建WebService
  8. ajax mysql登录我注册_ajax方式实现注册功能(提交数据到后台数据库完成交互)
  9. 不越狱 继续逆向 微信运动
  10. C-snowflake uuid 生成器
  11. 行业知识图谱调查报告(二):知识图谱构建及行业知识图谱构建举例
  12. ansys部分边界条件详解
  13. php自测试卷2,PHP试题网
  14. 【JZOJ4939】平均值 题解
  15. 6、T5L DGUS ll 应用开发指南摘录(一)
  16. 重写hashcode方法需要重写equals方法吗?为什么?
  17. 程序员深思语,导师语录
  18. vue中实现动画效果--三种方式
  19. 国家自然科学基金 计算机视觉,【科研新成果】我院2019年国家自然科学基金项目取得新突破...
  20. 线程调度策略SCHED_RR(轮转法)和SCHED_FIFO(先进先出)之对比

热门文章

  1. NanoVG 优化笔记:性能提高5倍的秘密
  2. 商汤AI象棋机器人到底谁在买?北大象棋大师已签收
  3. Python抢票工具
  4. 【虹科】如何逐跳识别网络问题
  5. java人事管理系统_Java课程设计——人事管理系统
  6. 【qperf 】CentOS上网络带宽与延迟检测
  7. 火炬之光乱码问题解决
  8. NewBing-Sorry, looks like your network settings are preventing access to this feature问题完美解决
  9. CCF201604-4 游戏
  10. linux安装后,ghost其他win7系统盘,无法启动的修复