1***@qq.com
1***@qq.com
  • 发布:2018-07-07 17:37
  • 更新:2019-04-26 23:57
  • 阅读:2572

Webview集成方式,widget集成,runtime集成方式的区别

分类:5+ SDK

我在网上看完资料理解的是:
原生的应用,内嵌了HTML的网页,用widget方式,可以实现页面之间的跳转;
只有一个页面用到H5+的应用可以用webview方式;不能打开新页面
如果是纯H5写的app,可以用runtime方式集成;

不知道我理解的对不对,
然后我的情况是:我的安卓应用是纯H5写的,是已经成熟的已经在运营中的应用,是用的Cordova框架,所以打包都是用命令行打包的,我目前增加了一个功能用到了H5+.只在这一个页面中涉及到,其他地方不用,想请问一下我这种情况是应该用webview方式打包还是runtime方式?

还有一个问题是其实我现在三种方式都有尝试,但是5plus一直没有加载成功,有没有方法判断自己在集成的时候哪里出了错误导致集成失败?

我的集成步骤跟着下面的文档走的:
不知道是哪种集成方式的集成方式..http://ask.dcloud.net.cn/article/216
Runtime集成方式:http://www.bcty365.com/content-146-3355-1.html
/只有下面这个页面用到5plus,也就是一进应用的入口/

<!DOCTYPE html>  
<html>  
  <head>  
    <meta charset="utf-8">  
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">  
    <title>Ionic Seed App</title>  

    <!-- ionic css -->  
    <link href="lib/ionic/css/ionic.css" rel="stylesheet">  
    <!-- your app's css -->  
    <link href="css/clj_common.css" rel="stylesheet">  
    <link href="css/clj_all.css" rel="stylesheet">  
    <!-- ionic/angularjs scripts -->  
        <script src="lib/ionic/js/ionic.bundle.js"></script>  
    <!-- cordova script (this will be a 404 during development) -->  
    <script src="cordova.js"></script>  
    <!-- your app's script -->  
    <script src="js/app.js"></script>  
    <script src="js/services.js"></script>  
    <script src="js/controllers.js"></script>  
    <script src="js/md5js.js"></script>  
    <script src="js/jquery_1.9.1.js"></script>  
    <script src="js/ng-cordova.js"></script>  
    <!--<script src="js/mui.min.js"></script>-->  
    <script src="js/h.min.js"></script>  

    <script src="html5plus://ready"></script>  
    <script type="text/javascript" charset="utf-8">  
            // 这里可以调用5+ API了,为了更好的兼容性,应该使用以下代码进行判断  
            window.onerror = function (message, url, line, column, error) {  
alert('log---onerror::::'+message+' '+url+' '+line+' '+column+' '+error);  
}  

//   alert('eee');  
//   alert(window.plus);  
    if(undefined !=window.plus){  
       // 在这里调用5+ API     
       alert('hello');  
    }else{// 兼容老版本的plusready事件  
           alert('else');   
        document.addEventListener('plusready',function () {      
         // 在这里调用5+ API   
         alert('hi');   
        },false);  
    }  
     </script>  
  </head>  
    <body ng-app="Doctor" animation="slide-left-right-ios7">  
        <ion-nav-view></ion-nav-view>  
    </body>  
    <script>  
        var version='1.1.4';  

        //检查自动更新  
        function svn(old_version) {  
            alert("svn");  
    var xhr_svn = new plus.net.XMLHttpRequest();  
    alert('lilili');  
    xhr_svn.onreadystatechange = function() {  
        alert(xhr_svn.readyState);  
        if (xhr_svn.readyState == 4) {  
            alert(xhr_svn.status);  
            if (xhr_svn.status == 200) {  
                var res = JSON.parse(xhr_svn.responseText);  
                alert("res:"+res);  
                alert("res的类型:"+ typeof res);  
                alert("res.update:"+res.update);  
                if (res.update == "yes") {   
                    alert("服务器的版本:"+res.version);  
                    alert("本机的版本:"+old_version);  
                    var new_version=res.version.replace(/\./g,'');  
                    old_version=old_version.replace(/\./g,'');  
                    if (parseInt(new_version) > parseInt(old_version) ) {    
                        var upr;    
                        plus.nativeUI.confirm( "有新版本发布了,是否现在更新?", function(e){    
                            upr=(e.index==0)?"Y":"N";    
//                          console.log(upr);    
                            if(upr=="Y"){    
                            var wt = plus.nativeUI.showWaiting('下载更新中,请勿关闭');    
                            var url = res.url; // 下载文件地址    
                            var dtask = plus.downloader.createDownload(url, {}, function(d, status) {  
                                console.log(JSON.stringify(d));  
                                if (status == 200) { // 下载成功    
                                    var path = d.filename;    
                                    console.log(d.filename);    
                                    plus.runtime.install(path);    
                                } else { //下载失败    
                                    alert("下载失败: " + status);    
                                }    
                            });    
                            dtask.start();    
                            }else{    

                            }    
                        }, "近视大管家-医生版", ["确认","取消"] );    

                    } else {    
                        console.log('已经是最新的版本了');    
                    }    
                }    
            } else {    
                plus.nativeUI.toast( "网络连接错误!");    
            }    
        }    
    }    
//  xhr_svn.open("GET","http://121.40.144.109:19090/myopic-dev/resources/update_ShortSightednessDoctor.json");//这里的地址是上面json文件的地址    
    xhr_svn.open("GET","http://www.inwoold.com/myopic-dev/resources/update_ShortSightednessDoctor.json");//这里的地址是上面json文件的地址    
    xhr_svn.send();    
    };  

//       if(window.plus != undefined){  
//              // 在这里调用5+ API  
//              alert('hello');  
//              svn(version); //更新版本同时要更新svn中参数  
//          }else{// 兼容老版本的plusready事件  
//                  alert('else');  
//              document.addEventListener('plusready',function () {  
//                  // 在这里调用5+ API  
//                  alert('hi');  
//                  svn(version); //更新版本同时要更新svn中参数  
//              },false);  
//          }  
        </script>  
</html>  
2018-07-07 17:37 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

如果没有使用到多Webview窗口管理api(plus.webview.*),建议使用Webview模式。
Widget模式跟适用于开发了多个5+应用,点击一个按钮进入一个独立的5+应用。
runtime模式其实就是离线打包(单个5+应用生成apk)

l***@live.com

l***@live.com

runtime集成后是不是 plus.webview 的API都用不了了?我最近做了一个项目,需要用第三方SDK写java插件。我用runtime集成(按照runtime集成的教程弄的),发现HBuilder里写的plus.webview.open()之类的方法都用不了了。mui.openWindow倒是可以打开页面,但extra传的值,在新页面里也没法获取了。

官方有提到webview集成是没法用plus.webview的API的,widget集成(就是webapp集成)没有这个限制。那么runtime集成呢? plus.webview 的API也都用不了吗?

该问题目前已经被锁定, 无法添加新回复