Cordova插件仅在iOS第二次使用THREAD WARNING打开时才起作用。 你如何获得插件来初始化onload?

cordova我的iOS应用程序中的插件只有在打开应用程序后才能使用,通过返回到主屏幕closures它,然后重新打开应用程序。 然后在XCode日志中显示THREAD WARNING。

2014-05-14 14:00:38.062 TLEMobile[28819:60b] THREAD WARNING: ['InAppBrowser'] took '192.306885' ms. Plugin should use a background thread. 2014-05-14 14:01:18.919 TLEMobile[28819:60b] THREAD WARNING: ['Notification'] took '39.698975' ms. Plugin should use a background thread. 

这是什么原因造成的? 如果我真的需要设置所有的插件作为后台线程你如何设置?

我已经添加这个参数到我的config.xml为ios强制插件加载打开,但似乎并没有工作。

 <param name="onload" value="true" /> 

我根本不明白。 我试图重新安装整个平台。 单独删除所有的插件,把它们放回去,我仍然得到同样的问题。 只有当应用程序获得背景,然后恢复时,插件才能正常工作。 这是从最近的生成到ios的代码,当我启动应用程序。 看起来,插件加载,因为是开始,但不能访问。

 2014-05-22 15:39:40.817 TLEMobile[5199:60b] Multi-tasking -> Device: YES, App: YES 2014-05-22 15:39:40.875 TLEMobile[5199:60b] Unlimited access to network resources 2014-05-22 15:39:41.131 TLEMobile[5199:60b] [CDVTimer][device] 0.559986ms 2014-05-22 15:39:41.136 TLEMobile[5199:60b] [CDVTimer][notification] 0.389040ms 2014-05-22 15:39:41.143 TLEMobile[5199:60b] [CDVTimer][inappbrowser] 3.835022ms 2014-05-22 15:39:41.149 TLEMobile[5199:60b] [CDVTimer][socialsharing] 1.318038ms 2014-05-22 15:39:41.153 TLEMobile[5199:60b] [CDVTimer][TotalPluginStartup] 23.202002ms 2014-05-22 15:39:41.659 TLEMobile[5199:60b] Resetting plugins due to page load. 2014-05-22 15:39:41.664 TLEMobile[5199:60b] IAB.close() called but it was already closed. 2014-05-22 15:39:45.843 TLEMobile[5199:60b] Finished load of: file:///var/mobile/Applications/220DD603-0644-4290-AE21-F9B6041D8408/TLEMobile.app/www/index.html#/tab/home 2014-05-22 15:39:54.914 TLEMobile[5199:60b] THREAD WARNING: ['Device'] took '14.032959' ms. Plugin should use a background thread. 2014-05-22 15:39:55.033 TLEMobile[5199:60b] THREAD WARNING: ['Notification'] took '100.118896' ms. Plugin should use a background thread. 2014-05-22 15:40:00.716 TLEMobile[5199:60b] THREAD WARNING: ['Notification'] took '5541.863037' ms. Plugin should use a background thread. 

我有同样的问题。 今天我find了解决scheme。

问题是与js2native桥。 cordova有不同的方法来与本地库(桥模式)沟通:

  • XHR,不带任何有效载荷;
  • 带有或无负载的iframe散列;
  • iframe导航。

在cordova.js中你可以findiOSExec函数。 对于iOS(iOS 5除外),网桥模式设置为IFRAME_NAV。

以前的开发人员在项目devise阶段犯了一些错误 – 其中之一就是在查看更改时将整个内容从中删除。 还有cordova也是 所以cordova得到一些错误循环和插件不工作。

解决办法是强制XHR桥接模式。 我在我的devicereadycallback中插入了下一个代码:

 cordova.exec.setJsToNativeBridgeMode(cordova.exec.jsToNativeModes.XHR_NO_PAYLOAD); 

我希望这能帮到您。 祝你好运。

我在cordova-ios 3.9.2上有同样的症状,但是我的根本原因与这里列出的不同。 事实certificate,这是一个内容安全政策的问题, gap://ready是必需的iframe科多瓦桥。

如果没有其他解决scheme适用于您,请查看您的内容安全策略,并确保在<meta http-equiv="Content-Security-Policy"标记的frame-src部分添加gap:

注:Xcode不显示任何线索来解决这个错误,但Safari浏览器debugging显示错误非常清楚。