您的位置:首页 > 移动开发 > Android开发

Decloud实现Android和iOS热更新,下载更新文件进度条

2017-04-27 15:08 1171 查看
第一步,生成wgt文件

这一步很简单,就是直接在Hbuilder中,发行 => 制作APP升级资源包 是wgt格式的文件。


第二步,下载wgt文件,同时显示下载的进度

这一步骤主要是应用了5+的东西。获取下载文件的大小和已经下载文件的大小。可以处理一下,就会实现实时下载的进度,
当然要写在下载发生变化的函数内:statechanged


下面是下载wgt文件的完整代码:

var wgtWaiting = null;

function downWgt() {
wgtWaiting = plus.nativeUI.showWaiting("开始下载");
var wgtUrl = "http://192.168.101.148:7004/AppUpdateWgt/H54BA566C.wgt";
var wgtOption = { filename: "_doc/update/", retry: 1 };
var task =
plus.downloader.createDownload(wgtUrl, wgtOption, function (download, status) {
if (status == 200) {
wgtWaiting.setTitle("开始安装");
installWgt(download.filename);
} else {
mui.alert("应用升级失败!");
wgtWaiting.close();
}
});

task.addEventListener("statechanged", function (download, status) {
switch (download.state) {
case 2:
wgtWaiting.setTitle("已连接到服务器");
break;
case 3:
var percent = download.downloadedSize / download.totalSize * 100;
wgtWaiting.setTitle("已下载 " + parseInt(percent) + "%");
break;
case 4:
wgtWaiting.setTitle("下载完成");
break;
}
});
task.start();
};

function installWgt(wgtpath) {
plus.runtime.install(wgtpath, {}, function (wgtinfo) {
wgtWaiting.close();
mui.alert("更新完成,须重启应用!", function () {
plus.runtime.restart();
});
}, function (error) {
wgtWaiting.close();
mui.alert("应用更新失败!\n" + error.message);
});
};


下面是每次打开APP获取更新的请求方法,在这里我是检测APP的版本号是否是最新,如果不是最新的版本,就会提示下载更新文件:

//自动更新,检验在登陆之前就开始执行
plus.runtime.getProperty(plus.runtime.appid,function(inf){
var wgtVer = inf.version;
$.ajax({
type:"post",
url:"http://192.168.101.148:7004/GDPaymentCenterServer_FromService/AjaxServlet.do",
dataType:"json",
data:"{'method':'checkVersion','checkValue':'mainsoft','Rows':{'version':'"+wgtVer+"'}}",
success:function(data){
console.log(data.Success);
if(data.Success == "false"){
mui.confirm('做了一些体验优化,使用更加顺手。','发现新版本',['立即更新','下次再说'],function(e){
if(e.index==0){
downWgt();
}else{
return;
}
})

}else{
return;
}
},
error:function(err){

}
});
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: