Cordova插件仅在第二次使用THREAD WARNING打开时在iOS中工作.你如何获得初始化onload的插件?

tbo*_*ndt 4 xcode plugins ios cordova inappbrowser

我的iOS应用程序中的Cordova插件仅在您打开应用程序后工作,通过返回主屏幕关闭它,然后重新打开应用程序.然后在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.
Run Code Online (Sandbox Code Playgroud)

是什么造成的?如果我真的需要将所有插件设置为后台线程,您如何设置?

我已将此param添加到我的config.xml for ios以强制插件加载打开但这似乎不起作用.

<param name="onload" value="true" />
Run Code Online (Sandbox Code Playgroud)

我根本就没有得到它.我已经尝试重新安装整个平台.单独删除所有插件并将它们放回去,我仍然遇到同样的问题.插件只有在应用程序背景化然后重新启动时才能工作.以下是我启动应用程序时最近构建到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.
Run Code Online (Sandbox Code Playgroud)

Mga*_*auk 6

我有同样的问题.今天我找到了解决方案.

问题出在js2native桥上.Cordova有不同的方法与本机库(桥接模式)通信:

  • XHR带,无w或o或有效载荷;
  • iframe hash with或w/o payload;
  • iframe nav.

在cordova.js中,您可以找到iOSExec功能.对于iOS(iOS 5除外),桥接模式设置为IFRAME_NAV.

以前的开发人员在项目设计阶段犯了几个错误 - 其中一个是在视图更改时删除了整个内容.还有科尔多瓦.因此cordova会出现一些错误循环并且插件无效.

解决方案是强制XHR桥接模式.我已经在我的deviceready回调中插入了下一个代码:

cordova.exec.setJsToNativeBridgeMode(cordova.exec.jsToNativeModes.XHR_NO_PAYLOAD);
Run Code Online (Sandbox Code Playgroud)

我希望这能帮到您.祝好运.


las*_*ood 5

我在cordova-ios 3.9.2上有相同的症状,但根本原因与此处列出的其他原因不同。事实证明,这是gap://readyiframe cordova桥所必需的内容安全策略问题。

如果没有其他解决方案对您有用,请查看您的内容安全策略,并确保将其添加gap:<meta http-equiv="Content-Security-Policy"标签的frame-src部分中。

注意:Xcode没有显示任何解决此错误的线索,但是Safari调试非常清楚地显示了该错误。

  • 谢谢。以前,我的应用程序在Android AVD上进行仿真时没有任何问题,但是当我尝试在iOS或真实的iOS设备上进行仿真时,我的Ionic 1应用程序仅加载了空白状态栏,因此我必须单击“主页”按钮并重新打开使其完全加载的应用程序。我按照您的建议在我的index.html的&lt;meta http-equiv =“ Content-Security-Policy”`标签中添加了`frame-src self gap:gap:// ready`之后,解决了该问题。请注意,** cordova-plugin-whitelist **文档指出:* gap:仅在iOS上是必需的(使用UIWebView时),并且对于JS-&gt;本机通信是必需的* (3认同)