本帖最后由 wushaominkk 于 2018-8-30 09:50 编辑
本文转载来自:https://www.frbkw.com/919/
MUI在线更新 MUI在线差量资源更新 新手教程通俗易懂更新不难,只是刚刚接触的时候会有很多误区的存在,才导致了更新功能看起来比较难看大家app的体积 如果只是更新几个小文件 我是比较推选资源差更新的,如果要资源包升级也是一样的只是hbuilder可以直接做资源包更新,资源差只是需要自己手动制作
首先从服务器代码开始
0x1 建立一个upda.php文件里面写一个版本号就好 比如:https://frbkw.com/appupdate/upda.php
0x2 制作资源差更新包 这个可以参考官网 点我
步骤
1×1 新建一个界面
1×2 写一个按钮 添加js事件
[Asm] 纯文本查看 复制代码 <button class="mui-btn mui-btn-royal mui-btn-block"> 检测更新
</button>
1×3 复制更新代码到 script标签中,修改自己服务器的版本地址 和更新文件地址
[JavaScript] 纯文本查看 复制代码 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://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://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 +参数 这是因为如果你在服务器更新了文件,在手机上因为缓存,获取到的还是之前的信息,加上一个时间参数就是为了防止缓存,让每次获取到的文件都是不同的)
[JavaScript] 纯文本查看 复制代码 var checkUrl = "https://frbkw.com/appupdate/upda.php?d=" + new Date().getTime();//添加时间参数防止缓存
转载声明如有疑问请访问:原帖 |