MUI在线更新 MUI在线差量资源更新 新手教程通俗易懂
更新不难,只是刚刚接触的时候会有很多误区的存在,才导致了更新功能看起来比较难
看大家app的体积 如果只是更新几个小文件 我是比较推选资源差更新的,如果要资源包升级也是一样的
只是hbuilder可以直接做资源包更新,资源差只是需要自己手动制作,
首先从服务器代码开始
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