基于MUI app 自动更新代码

/**
 * 自动更新
 */
var AutoUpdate ={
	currentVersion:null,//手机端当前版本号
	IOSUrl:"xxx",
	//自动下载的URL地址
    updateURL:"xxx",
	// 获取本地应用资源版本号
	GetCurrentAppVersion: function () { 
		var wgtVer;
		plus.runtime.getProperty(plus.runtime.appid, function(inf) {
			wgtVer = inf.version;
			AutoUpdate.currentVersion=wgtVer;
		});
		return wgtVer;
	},
	
	//检查更新
	CheckUpdate: function(callback) {
		var parameter=加工参数方法 自行加工
		$.ajax({
            async: true,
            type: 'POST',
            url: "xxxx",
            crossDomain: true,
            cache: false,
            dataType: 'text',
            data: parameter.DataContent,
            contentType: "text/xml; charset=utf-8",
            success: function (jsonData) {
            	 var resultTextTags = $.parseXML(jsonData).getElementsByTagName("AndroidAppVersion");
                if (resultTextTags.length > 0) {
                    var resultText = resultTextTags[0].textContent;
                    var result = $.parseJSON(resultText);
                    if(result.IsSuccess) {
						callback(result.Data);
					} else {
						mui.toast(result.Message,{ duration:'long', type:'div' });
					}
                }
            },
            error: function (xmlHttpRequest, status, error) {
            	mui.alert("请求服务错误。"+error+"状态:"+status);
            }
       });
	},
	
	//检查更新方法
	GetUpdate: function() {
		var type = plus.networkinfo.getCurrentType();
		if(type != "0" && type != "1" && mui.os.android) {
			AutoUpdate.CheckUpdate(function(result){
				if(AutoUpdate.currentVersion!=null && AutoUpdate.currentVersion<result.verCode){
					mui.alert("更新内容"+result.details,"发现新版本",function(e){
						AutoUpdate.DownLoadInstallApk();	
					});
				}
				if(AutoUpdate.currentVersion>=result.verCode){
					mui.toast("当前"+AutoUpdate.currentVersion+"已经是最新版本",{ duration:'long', type:'div' });
				}
			})
		}else if(type != "0" && type != "1" && mui.os.ios){
			jQuery({
	            type:"get", 
	            dataType:'json', 
	            url:"",//获取当前上架APPStore版本信息 
	            data:{             
	                id:xxxxx //APP唯一标识ID
	            }, 
	            contentType:'application/x-www-form-urlencoded;charset=UTF-8', 
	            success:function(data){ 
	            	console.log(data);
	        	   mui.each(data, function(i,norms) { 
	                        mui.each(norms, function(key,value) { 
	                            mui.each(value, function(j, normItem) { 
	                                if(j=="version"){ 
	                                    if(normItem>ver){                         
	                                        alert("发现新版本:V"+normItem); 
	                                        plus.runtime.openURL(AutoUpdate.IOSUrl); 
	                                } 
	                            }                             
	                        });                 
	                    }); 
	                });
	            },
	            error: function (xmlHttpRequest, status, error) {
	            	mui.alert("接口请求服务错误。"+error+"状态:"+status);
	            }
			})
		}else{
			mui.toast("离线模式不能进行更新操作");
		}
	},
	
	wgtWaiting : null,
	//下载安装更新包
	DownLoadInstallApk:function(){
		AutoUpdate.wgtWaiting=plus.nativeUI.showWaiting("开始下载,请稍等...", {
			back: "none"
		}); //打开遮罩
		var options = {method:"GET"};
		var dtask = plus.downloader.createDownload(AutoUpdate.updateURL,options,function (d, status ) {
			AutoUpdate.wgtWaiting.close();
		    if (status == 200 ) { // 下载成功
		    	mui.toast("下载成功",{ duration:'long', type:'div' });
		        var path = d.filename;
		        plus.runtime.install(path);  // 安装下载的apk文件
		        console.log(d.filename);
		    } else {//下载失败
		        alert( "Download failed: " + status ); 
		    }  
		})
		dtask.addEventListener("statechanged", function(task,status){
		        switch(task.state) {
		            case 1: // 开始
		                break;
		            case 2: //已连接到服务器
		            	AutoUpdate.wgtWaiting.setTitle("服务器连成功");
		                 break;
		            case 3: // 已接收到数据
		                var current = parseInt((task.downloadedSize/task.totalSize) * 100);
		                 AutoUpdate.wgtWaiting.setTitle("当前正在下载资源包 " + current + "%,请勿进行其它操作。");
		                 break;
		            case 4: // 下载完成       
		            	AutoUpdate.wgtWaiting.setTitle("下载完成");
		            	plus.nativeUI.closeWaiting();//关闭遮罩
		                break;
		        }
		    });
		dtask.start();
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值