我的 iOS 应用程序中的 Cordova 插件仅在您打开应用程序、返回主屏幕将其关闭,然后重新打开应用程序后才起作用。然后 XCode 日志中会显示一条线程警告。
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.
是什么原因造成的?如果我真的需要将所有插件设置为后台线程,你该如何设置?
我已将此参数添加到 ios 的 config.xml 中,以强制插件在打开时加载,但这似乎不起作用。
<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.
我有同样的问题。今天我找到了适合我的案例的解决方案。
问题出在 js2native 桥上。 Cordova 有不同的方法与本机库通信(桥接模式):
- XHR 带、不带或可选有效负载;
- 带或不带负载的 iframe 哈希值;
- iframe 导航。
在 cordova.js 中,您可以找到 iOSExec 函数。对于 iOS(iOS 5 除外),桥接模式设置为 IFRAME_NAV。
以前的开发人员在项目设计阶段犯了几个错误 - 其中之一是视图更改时整个内容被删除。还有科尔多瓦。因此,cordova 会出现一些错误循环,并且插件无法正常工作。
解决方案是强制使用 XHR 桥接模式。我已在我的 deviceready 回调中插入下一个代码:
cordova.exec.setJsToNativeBridgeMode(cordova.exec.jsToNativeModes.XHR_NO_PAYLOAD);
我希望这能帮到您。祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)