微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cordova - 在应用程序中加载外部 URL 内容需要太多时间

如何解决Cordova - 在应用程序中加载外部 URL 内容需要太多时间

我有一个直接从客户端网站加载内容的 Cordova 应用程序。我在 config.xml 文件中像 <content src="https://example.com/ios/index.html"> 一样使用它。我使用了 6 秒的启动画面延迟。问题是启动画面时hides 显示黑屏 5-10 秒,然后显示客户端网站内容。有时我会收到错误 CONNECTION TO SERVER WAS UNSUCCESSFULL。我也指定了 <preference name="loadUrlTimeoutValue" value="700000" /> 但仍然有同样的问题。任何人有cordova ios 和 android 应用也有同样的问题?谁能帮我解决这个问题。

解决方法

你不应该那样做。现在我不想玩这个你问A我告诉你做B的剧本,别担心,但这真的不是你应该做的。

你应该让cordova加载一个index.html,它加载一个javascript文件cordova.js。你不需要实际拥有它,编译应用程序时会包含 js 文件。

然后您应该添加白名单插件,以防您还没有,以便您的网站正确加载。 https://www.npmjs.com/package/cordova-plugin-whitelist

您应该像这样在 config.xml 中禁用启动画面的自动隐藏:

<preference name="AutoHideSplashScreen" value="false" />

然后你应该让javascript加载一个全屏iframe和你的网站,然后检测加载何时完成:(这应该进入你的index.html,在cordova应用程序中)

<html>
    <head>
        <title></title>
    </head>
    <body>
        <iframe id='frameid' onload='iframeLoaded();' src='https://mywebsite.com/mypage.html' style='border: 0; width: 100%; height: 100%'>Your browser doesn't support iFrames.</iframe>
        <script src='cordova.js'></script>
        <script>
             iframe = document.getElementById("frameid");
             
            iframe = document.getElementById("frameid");
            
            function ready(callback){
                // in case the document is already rendered
                if (iframe.readyState!='loading') callback();
                // modern browsers
                else if (iframe.addEventListener) iframe.addEventListener('DOMContentLoaded',callback);
                // IE <= 8
                else document.attachEvent('onreadystatechange',function(){
                    if (iframe.readyState=='complete') callback();
                });
            }
            
            ready(function(){
               setTimeout(function(){
                 navigator.splashscreen.hide();
               },555)
            });
             
      
      
        </script>
    </body>
</html>

我已经几个月没有使用cordova了,但如果我没有忘记任何事情,我就是这样做的 - 希望我没有......我没有时间测试这个,但你明白了要点:

  • 应用启动
  • 显示启动画面
  • 在全屏模式下加载 Index.html 和 Iframe,指向 https 网站。
  • 等待 iframe 完成加载。
  • 关闭启动画面

如果您遇到任何问题,请告诉我,我可以进一步帮助您。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。