phonegap adobe ios iPad device在显示通知之前不会被解雇

时间:2015-10-23 09:55:15

标签: ios cordova adobe

启动应用时不会触发deviceReady事件。

从屏幕顶部向下拖动通知列表然后释放,然后启动deviceReady。

同样,在拖动和释放通知之前,尝试在inAppBrowser中显示页面不会显示。

config.xml中的关键元素是: -

  <gap:plugin name="cordova-plugin-whitelist" version="1.0.0" source="npm" />
  <gap:plugin name="cordova-plugin-inappbrowser" source="npm" version="1.0.1" />
  <gap:plugin name="cordova-plugin-device" source="npm" version="1.0.1" />
  <preference name="permissions" value="none"/>
  <preference name="fullscreen" value="true" />
  <preference name="exit-on-suspend" value="true" />

HTML: -

<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Home</title>
    <meta http-equiv="Content-Security-Policy" ....  />
</head>
<body >
<div id="idSplash" class="textCenter" >
    <div id="idSplashHeader">
        <div class="headerImg"></div>
    </div>
    <div>
        <div id="idSplashMessage">Starting up ...</div>
    </div>
    <div id="idSplashBody"></div>
    <div id="idSplashFooter"><a id="idTestLink" href="javascript:null" target="_blank">Click here for google</a></div>
</div>

<!-- ************************************************************************** -->
<script src="js/jquery-2.0.3.min.js" type="text/JavaScript" ></script>
<script type="text/JavaScript">
    $(document).ready(function () {
        function onReady() {
            $("#idSplashMessage").text("deviceReady");
            alert("deviceReady");
        }
        document.addEventListener("deviceReady", onReady, false);
        $("#idTestLink").click(function () {
            var win = window.open(encodeURI("http://www.google.co.uk"), '_blank', 'location=yes');
            return false;
        });
    });
</script>
<script src="cordova.js" type="text/JavaScript"></script>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

问题的根源是在html中包含内容安全策略。

虽然我认为CSP完全有效,并且没有引起Android的任何问题,但我将其删除了,这使得IOS版本能够正常运行。

由于白名单插件中的错误日志表明需要CSP,因此首先添加了CSP。

答案 1 :(得分:0)

@Grebe, 对于Cordova / Phonegap的新手来说,这是一个常见的误解。

来自:Top Mistakes by Developers new to Cordova/Phonegap

<强> 4。在代码中,没有听取'deviceready&#39;事件

  

(...)我们需要的section of documentation

     

这是每个Cordova应用程序都应该使用的非常重要的事件。

     

Cordova由两个代码库组成:native和JavaScript。在加载本机代码时,会显示自定义加载图像。但是,只有在DOM加载后才会加载JavaScript。这意味着您的Web应用程序可能会在加载之前调用Cordova JavaScript函数。

     

当Cordova满载时,Cordova deviceready事件将会激活。设备触发后,您可以安全地调用Cordova功能。

这意味着您必须在调用任何其他库之前执行此操作。

这也意味着您需要在 jquery 之前加载cordova.js

实施例

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}
// _OR_ JUST
document.addEventListener("deviceready", onDeviceReady, false);

// Cordova is loaded and it is now safe to make calls Cordova methods
//
function onDeviceReady() {
    document.addEventListener("pause", onPause, false);
    $(document).ready(function () {
        // Call the usual stuff.
    }
}