HBuilder实现App资源在线升级更新

简介: 这篇文章介绍了使用HBuilder实现App资源在线升级的流程,包括获取线上和本地版本号对比、检查更新、下载安装包、静默或用户触发安装以及重启应用。关键代码展示了如何比较版本、下载wgt文件及安装更新。注释提到仅同名文件被覆盖,manifest.json变化需整包升级。提供了一个DEMO下载链接。

本文只要介绍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; ino || sn.length>so.length ) {
return true;
} else if ( nnova.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

相关文章
|
开发者 iOS开发
UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“
UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“
525 3
|
9月前
|
安全 Linux 开发工具
【Azure Function】分享把Function App从.NET 6.0升级到.NET 8.0 Isolated的步骤
本文介绍了将Azure Function App从.NET 6.0升级到.NET 8.0 Isolated的步骤。.NET 6.0作为长期支持版本,生命周期至2024年11月结束。为确保持续支持,建议升级至更新版本。升级步骤包括安装.NET 8 SDK、更新Azure Functions Core Tools、修改项目文件目标框架为net8.0、更新兼容的NuGet包、本地测试以及重新发布到Azure。更多详细信息可参考官方文档。
392 9
|
12月前
|
应用服务中间件 Linux nginx
【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?Web App Linux 默认使用的 Nginx 版本是由平台预定义的,无法更改这个版本。
320 77
|
Windows
【Azure App Service】误删除App Service资源,怎么办?
【Azure App Service】误删除App Service资源,怎么办?
143 2
|
前端开发
uniapp 实战 -- app 的自动升级更新(含生成 app 发布页)
uniapp 实战 -- app 的自动升级更新(含生成 app 发布页)
3337 1
【Azure 应用服务】在App Service 中如何通过Managed Identity获取访问Azure资源的Token呢? 如Key Vault
【Azure 应用服务】在App Service 中如何通过Managed Identity获取访问Azure资源的Token呢? 如Key Vault
109 0
|
小程序 数据可视化 智能硬件
好看的设计------App小程序设计资料,AppUI设计相关资源,up主
好看的设计------App小程序设计资料,AppUI设计相关资源,up主
|
移动开发 开发工具 数据安全/隐私保护
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
【Hbuilder】Hbuilder 插件[App]云打包安装失败--已解决
【Hbuilder】Hbuilder 插件[App]云打包安装失败--已解决
778 0