概述
这里的自动更新并非是热更新,而只是单纯检测服务器上是否有新的版本,如果有则下载安装。
思路:在服务器中配置一个版本文件:xxx.json
{
update:’yes’,//是否自动更新
version:’1.0.8’,//最新的版本号
url:’http://www.xxx.com/xxxxxx.apk‘//最新安装包的URL路径
}
在每次打开H5APP的时候,去请求这个JSON,比对本地的manifest.json中的版本信息是否和服务器上的版本一致,如果有更新的版本,则下载最新的安装包,下载到本地后,安装该软件覆盖原有软件。
代码:
ks.jsonp('http://www.xxxxx.cn/ksd/update_ksd.json','update_ksd');//此为跨域函数,因为APP中的文件都在本地,请求服务器的话需要通过跨域才能拿到数据。
//服务器上的json文件
//因为是跨域的所以返回的是函数而不是JSON数据,参数是JSON格式
update_ksd({
state:'yes',
version:'1.0.8',
url:'http://www.ccccccc.com/xxxx.apk'
})
function update_ksd(data)//跨域请求后的回调函数
{
var new_json=data;
if(new_json.state=='yes')//如果是自动更新,则判断版本号
{
$.ajax({
type: "get",
url: "manifest.json",
async: true,
success: function(res) {
var data = JSON.parse(res);
var version=data.version.name;
var new_version=new_json.version.replace(/./g,'');
version=version.replace(/./g,'');
if(new_version>version)//比对版本号
{
//console.log(new_version+'新版本'+version);
plus.nativeUI.confirm("应用有新版本,是否立即下载更新?", function(event) {
if(event.index == 1) {
plus.nativeUI.showWaiting();
ks.update_ksd(new_json.url);//更新函数,在下面
}
}, 'xxx', ['取消', '确认']);
}
}
});
}
}
//ks.update_ksd==========
update_ksd:function(url){
//console.log(url);
//创建下载管理对象
var dtask = plus.downloader.createDownload(url,{}, function ( d, status ) {
// 下载完成
if ( status == 200 ) { //下载成功后的回调函数
plus.nativeUI.toast( "下载成功,准备安装" + d.filename );
//安装程序,第一个参数是路径,默认的下载路径在_downloads里面
plus.runtime.install('_downloads/ksd.apk',{},function(){
plus.nativeUI.toast('安装成功');},function(){plus.nativeUI.toast('安装失败');});
plus.nativeUI.closeWaiting();
} else {
alert( "下载失败 " + status );
}
});
//dtask.addEventListener( "statechanged", onStateChanged, false );
dtask.start(); //开始下载任务
}
之后每次需要更新版本就不用让用户去扫描二维码之类的,每次登陆进去自动判断是否有新版本,如果确认下载,则下载安装最新版本。
最后
以上就是魔幻魔镜为你收集整理的h5+实现APP自动下载更新(hbuilder)的全部内容,希望文章能够帮你解决h5+实现APP自动下载更新(hbuilder)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复