啥都不說,咱直接上代碼android
/** * 判斷應用升級模塊,從url地址下載升級描述文件到本地local路徑 * * 升級文件爲JSON格式數據,以下: { "appid":"HelloH5", "wgtURL": "差量包文件下載地址", "apkURL": "apk文件下載地址", "ipaURL": "appStore中下載的地址", "version": "新版本號,如:1.0.0", "iOS": "ios升級標識 1 不須要升級 2 須要升級從appstore中下載 3 進行差量升級", "Android": "android升級標識 1 不須要升級 2 須要升級從服務器下載新的apk 2 進行差量升級" } * */ (function(w){ var checkUrl = ""; // 檢測更新 地址是本身服務器檢測的地址根據本身項目填寫 var downloadWgtUrl = null; // 升級包目錄 var downloadApkUrl = null; // 升級包目錄 var iosURL = null; // 蘋果地址 var oldVer = null; // 當前應用版本號 var newVer = null; // 新版本號 var isios = null; // ios是否須要升級 1 須要升級從appstore中下載 2 能夠使用 var isandroid = null; // android是否須要升級 1 須要升級從服務器下載新的apk 2 能夠使用 // plusReady 加載完畢執行 function plusReady(){ // 獲取本地應用資源版本號 plus.runtime.getProperty(plus.runtime.appid,function(inf){ oldVer = inf.version; checkUpdate(); }); } // 檢測更新 function checkUpdate(){ var xhr = new XMLHttpRequest(); xhr.onreadystatechange=function(){ switch(xhr.readyState){ case 4: if(xhr.status==200){ var res = JSON.parse(xhr.responseText); // 判斷是否須要升級 newVer = res.version; // 版本號 isios = res.ios; // ios是否須要升級 1 不升級 2 appStore升級 3 差量升級 iosURL = res.ipaURL; downloadWgtUrl = res.wgtURL; downloadApkUrl = res.apkURL; isandroid = res.android; // android是否須要升級 1 不升級 2 apk升級 3 差量升級 // 監聽應用啓動界面關閉事件 if(plus.navigator.hasSplashscreen()){ // 啓動頁未關閉 document.addEventListener("splashclosed", checkOs, false); }else{ //啓動界面已關閉 checkOs(); } }else{ console.log("檢測更新失敗!"); } break; default: break; } } xhr.open('GET',checkUrl); xhr.send(); } /** * 判斷手機系統檢測升級 */ function checkOs(){ var isupdate = compareVersion(oldVer,newVer); // 是否差量升級 if(!isupdate){ return false; }; if(plus.os.name == 'Android'){ // Android 用戶 if(isandroid == 1){ return false; }else if(isandroid == 2){ plus.nativeUI.alert( "Plus is ready!", function(){ createDownload(); }, "請升級", "肯定" ); }else{ downWgt(); } }else{ // 蘋果用戶 if(isios == 1){ return false; }else if(isios == 2){ plus.nativeUI.alert( "Plus is ready!", function(){ plus.runtime.openURL( iosURL ); }, "請升級", "肯定" ); }else{ downWgt(); } } } /** * 比較版本大小,若是新版本nv大於舊版本ov則返回true,不然返回false * @param {String} ov * @param {String} nv * @return {Boolean} */ function compareVersion( ov, nv ){ if ( !ov || !nv || ov=="" || nv=="" ){ return false; } var b=false, ova = ov.split(".",4), nva = nv.split(".",4); for ( var i=0; i<ova.length&&i<nva.length; i++ ) { var so=ova[i],no=parseInt(so),sn=nva[i],nn=parseInt(sn); if ( nn>no || sn.length>so.length ) { return true; } else if ( nn<no ) { return false; } } if ( nva.length>ova.length && 0==nv.indexOf(ov) ) { return true; } } // 下載wgt文件 function downWgt(){ plus.nativeUI.showWaiting("更新文件..."); plus.downloader.createDownload( downloadWgtUrl, {filename:"_doc/update/"}, function(d,status){ if ( status == 200 ) { console.log("下載wgt成功:"+d.filename); installWgt(d.filename); // 安裝wgt包 } else { console.log("下載wgt失敗!"); } plus.nativeUI.closeWaiting(); }).start(); } // 更新應用資源升級包 function installWgt(path){ plus.nativeUI.showWaiting("安裝文件..."); plus.runtime.install(path,{},function(){ plus.nativeUI.closeWaiting(); plus.nativeUI.alert("應用資源更新完成!",function(){ plus.runtime.restart(); }); },function(e){ plus.nativeUI.closeWaiting(); plus.nativeUI.alert(JSON.stringify(e)); }); } /** * 建立下載任務 安卓 */ function createDownload() { var dtask = plus.downloader.createDownload( downloadApkUrl, { filename:'_doc/download/'}, function ( d, status ) { // 下載完成 if ( status == 200 ) { plus.runtime.install(d.filename, {}, function(){ }, function(DOMException ){ console.log(JSON.stringify(DOMException)); }); } else { alert( "Download failed: " + status ); } }); dtask.start(); } if(window.plus){ plusReady(); }else{ document.addEventListener('plusready',plusReady,false); } })(window);
此代碼只可作參考,具體可根據本身的項目作出調整,若是有更好的方式,請在下方評論ios