HBuilder實現App資源在線升級更新


梳理思路:

1.獲取線上App版本號和當前App版本號
2.比對版本號,判斷是否資源在線升級更新
3.是否下載最新安裝包[可以靜默下載或用戶觸發]
4.是否執行資源在線升級更新[可以主動或用戶觸發]
5.是否立即重啟生效[可以主動或用戶觸發]

關鍵代碼:

  1 //通過接口請求,獲取線上的版本號
  2 var checkUrl= "2.0.0" //通過接口請求,獲取線上的版本號。此處默認2.0.0
  3 // 獲取當前版本號
  4 function checkUpdate(){
  5     plus.runtime.getProperty(plus.runtime.appid,function(inf){
  6         wgtVer=inf.version;
  7         console.log("當前應用版本:"+wgtVer);
  8         if(compareVersion(wgtVer, checkUrl)){ // 判斷當前版本是否需要更新
  9                plus.nativeUI.confirm('發現新版本'+checkUrl+'是否下載', function(e){ // 此方法請在plusReady()完成后
 10                 if(e.index>0){
 11                     plus.nativeUI.toast('升級包下載中...');
 12                      downWgt();  // 下載升級包
 13                 }
 14                 }, 'HelloH5', ['取消','確定']);
 15         }
 16     });
 17  }
 18  //版本比較
 19 function compareVersion( ov, nv ){ // ov為本地歷史版本,nv為當前線上版本
 20     console.log(ov, nv)
 21     if ( !ov || !nv || ov=="" || nv=="" ){
 22         return false;
 23     }
 24     var b=false,
 25     ova = ov.split(".",4),
 26     nva = nv.split(".",4);
 27     for ( var i=0; i<ova.length&&i<nva.length; i++ ) {
 28         var so=ova[i],no=parseInt(so),sn=nva[i],nn=parseInt(sn);
 29         if ( nn>no || sn.length>so.length  ) {
 30             return true;
 31         } else if ( nn<no ) {
 32             return false;
 33         }
 34     }
 35     if ( nva.length>ova.length && 0==nv.indexOf(ov) ) {
 36         return true;
 37     }
 38 }
 39 // 下載wgt文件
 40 var wgtUrl="http://www.vitian.vip/upload/H5D6C9AEA.wgt"; // 線上版本在線更新的.wgt文件路徑
 41 function downWgt(){
 42 //  plus.nativeUI.showWaiting("下載wgt文件...");
 43     plus.downloader.createDownload( wgtUrl, {filename:"_doc/update/"}, function(d,status){
 44         if ( status == 200 ) { 
 45             console.log("下載wgt成功:"+d.filename);
 46             plus.nativeUI.confirm('升級包下載完成,是否安裝最新版本?', function(e){
 47             if(e.index>0){
 48                  installWgt(d.filename); // 安裝wgt包
 49             }
 50             }, 'HelloH5', ['取消','確定']);
 51            
 52         } else {
 53             console.log("下載wgt失敗!");
 54 //          plus.nativeUI.alert("下載wgt失敗!");
 55         }
 56 //      plus.nativeUI.closeWaiting();
 57     }).start();
 58 }
 59 // 更新應用資源
 60 function installWgt(path){
 61     console.log(path)
 62     plus.nativeUI.showWaiting("安裝升級文件...");
 63     plus.runtime.install(path,{},function(){
 64         plus.nativeUI.closeWaiting();
 65         console.log("安裝wgt文件成功!");
 66         // 是否立即重啟
 67         plus.nativeUI.confirm('應用資源更新完成,是否立即重啟生效?', function(e){
 68         if(e.index>0){
 69             plus.runtime.restart();
 70         }
 71         }, 'HelloH5', ['取消','確定']);
 72 //      plus.nativeUI.alert("應用資源更新完成!",function(){
 73 //          
 74 //          
 75 //      });
 76     },function(e){
 77         plus.nativeUI.closeWaiting();
 78         console.log("安裝wgt文件失敗["+e.code+"]:"+e.message);
 79         plus.nativeUI.toast("安裝wgt文件失敗["+e.code+"]:"+e.message);
 80     });
 81 }
 82 // 用戶主動除非檢測版本更新
 83 function isCheckUpdate(){
 84     plus.runtime.getProperty(plus.runtime.appid,function(inf){
 85         wgtVer=inf.version;
 86         console.log("當前應用版本:"+wgtVer);
 87         console.log(compareVersion(wgtVer, checkUrl))
 88         if(compareVersion(wgtVer, checkUrl)){
 89               plus.nativeUI.confirm('發現新版本'+wgtVer+'是否下載', function(e){
 90                 if(e.index>0){
 91                     plus.nativeUI.toast('升級包下載中...');
 92                      downWgt();  // 下載升級包
 93                 }
 94                 }, 'HelloH5', ['取消','確定']);
 95         } else {
 96 //             plus.nativeUI.alert("當前應用版本為最新版本");
 97              plus.nativeUI.toast('當前應用版本為最新版本');
 98         }
 99     });
100 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM