MUI在线更新 MUI在线差量资源更新 新手教程通俗易懂

MUI在线更新 MUI在线差量资源更新 新手教程通俗易懂

更新不难,只是刚刚接触的时候会有很多误区的存在,才导致了更新功能看起来比较难

看大家app的体积  如果只是更新几个小文件 我是比较推选资源差更新的,如果要资源包升级也是一样的

只是hbuilder可以直接做资源包更新,资源差只是需要自己手动制作,

MUI在线更新 MUI在线差量资源更新 新手教程通俗易懂

首先从服务器代码开始

0x1 建立一个upda.php文件

里面写一个版本号就好 比如:https://cdn.frbkw.com/appupdate/upda.php

0x2 制作资源差更新包 这个可以参考官网:点我

(注意:新建立文件夹。写好需要的文件,在被内容压缩为zip格式,内容是要在根目录,然后修改后缀为wtgu 不懂加我QQ咯 枫瑞博客网449275996)

 

1×1 新建一个界面

1×2 写一个按钮 添加js事件

<button onclick="checkUpdate()" class="mui-btn mui-btn-royal mui-btn-block">
					检测更新
				</button>

1×3 复制更新代码到 script标签中,修改自己服务器的版本地址 和更新文件地址

var wgtVer = null;

			function plusReady() {
				// Android处理返回键
//				plus.key.addEventListener('backbutton', function() {
//					if(confirm('确认退出?')) {
//						plus.runtime.quit();
//					}
//				}, false);
				// 获取本地应用资源版本号
				plus.runtime.getProperty(plus.runtime.appid, function(inf) {
					wgtVer = inf.version;
					console.log("当前应用版本:" + wgtVer);
				});
			}
			if(window.plus) {
				plusReady();
			} else {
				document.addEventListener('plusready', plusReady, false);
			}
			// 检测更新
			var checkUrl = "https://cdn.frbkw.com/appupdate/upda.php?d=" +  new Date().getTime();//添加时间参数防止缓存

			function checkUpdate() {
				plus.nativeUI.showWaiting("检测更新...");
				var xhr = new XMLHttpRequest();
				xhr.onreadystatechange = function() {
					switch(xhr.readyState) {
						case 4:
							plus.nativeUI.closeWaiting();
							if(xhr.status == 200) {
								console.log("检测更新成功:" + xhr.responseText);
								var newVer = xhr.responseText;
								if(wgtVer && newVer && (wgtVer != newVer)) {
									downWgt(); // 下载升级包
								} else {
									plus.nativeUI.alert("无新版本可更新!");
								}
							} else {
								console.log("检测更新失败!");
								plus.nativeUI.alert("检测更新失败!");
							}
							break;
						default:
							break;
					}
				}
				xhr.open('GET', checkUrl);
				xhr.send();
			}
			// 下载wgt文件
			var wgtUrl = "https://cdn.frbkw.com/appupdate/frgx.wgtu";

			function downWgt() {
				plus.nativeUI.showWaiting("下载wgt文件...");
				plus.downloader.createDownload(wgtUrl, {
					filename: "_doc/update/"
				}, function(d, status) {
					if(status == 200) {
						console.log("下载wgt成功:" + d.filename);
						installWgt(d.filename); // 安装wgt包
					} else {
						console.log("下载wgt失败!");
						plus.nativeUI.alert("下载wgt失败!");
					}
					plus.nativeUI.closeWaiting();
				}).start();
			}
			// 更新应用资源
			function installWgt(path) {
				plus.nativeUI.showWaiting("安装wgt文件...");
				plus.runtime.install(path, {}, function() {
					plus.nativeUI.closeWaiting();
					console.log("安装wgt文件成功!");
					plus.nativeUI.alert("应用资源更新完成!", function() {
						plus.runtime.restart();
					});
				}, function(e) {
					plus.nativeUI.closeWaiting();
					console.log("安装wgt文件失败[" + e.code + "]:" + e.message);
					plus.nativeUI.alert("安装wgt文件失败[" + e.code + "]:" + e.message);
				});
			};	
		 

 

(还是在建议在更新文件地址后面添加?d +参数 这是因为如果你在服务器更新了文件,在手机上因为缓存,获取到的还是之前的信息,加上一个时间参数就是为了防止缓存,让每次获取到的文件都是不同的)

var checkUrl = "https://cdn.frbkw.com/appupdate/upda.php?d=" +  new Date().getTime();//添加时间参数防止缓存

案例看这里:枫瑞博客网UI

(0)
枫瑞博客枫瑞博客
上一篇 2018-07-27
下一篇 2018-08-08

相关推荐