PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > HBuilderX教程 > 正文

    HBuilder mui App开发开发在线差异化升级

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:整包升级整包升级,先看看官方的文档《整包(apk/ipa)升级》。官方的介绍也是比较详细的,由于本人没有做过整包升级,所以这里不做描述。但...

    整包升级

    整包升级,先看看官方的文档《整包(apk/ipa)升级》。官方的介绍也是比较详细的,由于本人没有做过整包升级,所以这里不做描述。但是有一点需要注意的: 
    HBuilder mui App开发开发在线差异化升级

    差异化升级

    先看官方文档 
    《App资源在线升级更新》 
    《App资源在线差量升级更新》 
    这两篇文章里面已经详细的介绍了差异化升级的流程和制作wgt升级包的步骤和注意事项。 
    在官方的代码的基础上我做了一点小的修改。 
    首先新建一个update.js的文件,里面的代码如下:

     

    1. var wgtVer=null
    2. function plusReady(){ 
    3.     // 获取本地应用资源版本号 
    4.     plus.runtime.getProperty(plus.runtime.appid,function(inf){ 
    5.         wgtVer=inf.version; 
    6.         console.log("当前应用版本:"+wgtVer); 
    7.     }); 
    8. if(window.plus){ 
    9.     plusReady(); 
    10. }else
    11.     document.addEventListener('plusready',plusReady,false); 
    12.  
    13. // 检测更新 
    14. // 实际项目中需要更换为自己服务器的地址 
    15. var checkUrl="http://demo.dcloud.net.cn/test/update/check.php"
    16. function checkUpdate(){ 
    17.     plus.nativeUI.showWaiting("检测更新..."); 
    18.     var xhr=new XMLHttpRequest(); 
    19.     xhr.onreadystatechange=function(){ 
    20.         switch(xhr.readyState){ 
    21.             case 4: 
    22.             plus.nativeUI.closeWaiting(); 
    23.             if(xhr.status==200){ 
    24.                 console.log("检测更新成功:"+xhr.responseText); 
    25.                 var newVer=xhr.responseText; 
    26.                 if(wgtVer&&newVer&&(wgtVer!=newVer)){ 
    27.                     downWgt();  // 下载升级包 
    28.                 }else
    29.                     plus.nativeUI.alert("无新版本可更新!"); 
    30.                 } 
    31.             }else
    32.                 console.log("检测更新失败!"); 
    33.                 plus.nativeUI.alert("检测更新失败!"); 
    34.             } 
    35.             break
    36.             default
    37.             break
    38.         } 
    39.     } 
    40.     xhr.open('GET',checkUrl); 
    41.     xhr.send(); 
    42. // 下载wgt文件 
    43. // 实际项目中需要更换为自己服务器的地址 
    44. var wgtUrl="http://demo.dcloud.net.cn/test/update/H5EF3C469.wgt"
    45. function downWgt(){ 
    46.     plus.nativeUI.showWaiting("下载wgt文件..."); 
    47.     plus.downloader.createDownload( wgtUrl, {filename:"_doc/update/"}, function(d,status){ 
    48.         if ( status == 200 ) {  
    49.             console.log("下载wgt成功:"+d.filename); 
    50.             plus.nativeUI.confirm("升级包下载完成,是否需要升级",function(e){ 
    51.                     var sure = (e.index == 0) ? "Yes" : "No"
    52.                     if (sure == 'Yes') { 
    53.                         installWgt(d.filename); // 安装wgt包 
    54.                     } 
    55.             }) 
    56.         } else { 
    57.             console.log("下载wgt失败!"); 
    58.             plus.nativeUI.alert("下载wgt失败!"); 
    59.         } 
    60.         plus.nativeUI.closeWaiting(); 
    61.     }).start(); 
    62. // 更新应用资源 
    63. function installWgt(path){ 
    64.     plus.nativeUI.showWaiting("安装wgt文件..."); 
    65.     plus.runtime.install(path,{},function(){ 
    66.         plus.nativeUI.closeWaiting(); 
    67.         console.log("安装wgt文件成功!"); 
    68.         plus.nativeUI.alert("应用资源更新完成!\n点击确定按钮重启完成升级",function(){ 
    69.             plus.runtime.restart(); 
    70.         }); 
    71.     },function(e){ 
    72.         plus.nativeUI.closeWaiting(); 
    73.         console.log("安装wgt文件失败["+e.code+"]:"+e.message); 
    74.         plus.nativeUI.alert("安装wgt文件失败["+e.code+"]:"+e.message); 
    75.     }); 
    76. /* 
    77.  * 差异化升级流程: 
    78.  * 1.启动app后在plusReady里面首先获取app版本 
    79.  * 2.检查服务器版本 
    80.  * 3.服务器版本大于本地app版本下载升级包,提示安装和升级 
    81.  * 4.服务器版本小于等于本地版本时,不做任何操作 
    82.  * 5.重启即可玩升级 
    83.  */ 

    怎么使用呢? 
    我们只需要在一个.html文件里面引用这个js文件:

    <script type="text/javascript" src="../js/update.js" ></script>
     

    然后在mui.plusReady()方法里面调用checkUpdate()这个方法即可。

    改进点

    1. 升级的js文件里面不要使用Loading框,版本检测或是下载就让它静默操作就可以,值需要在是否安装升级包的时候给一个提示框即可;
    2. 根据之前原生app被拒绝的经历来和用户体验的角度来说,我们可以在近app的时候定时一定时间后再调用checkUpdate()这个方法,如果能做一个软开关最好,上架审核期间先关闭这个功能,审核通过以后再打开这个功能。

    总结

    H5的app也做了两个,加之之前做原生的经验,总体来说使用H5开发app比原生简单一些、开发速度快,但是用户体验差。公司做产品也是在产品质量、开发周期、成本等因素中选取一个平衡点。
    来源:
    http://blog.csdn.net/zhuming3834/article/details/51870626

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-146-4923-1.html
    相关热词搜索: HBuilder mui