簡體   English   中英

Cordova僅在恢復事件后執行插件

[英]Cordova only executes plugins after resume event

我在iOS上使用Cordova 3.5.0。

我的應用程序加載,'deviceReady'事件被觸發,但直到我將我的應用程序放在后台(通過轉到主屏幕)才執行插件操作。

當我回到我的應用程序時,'resume'處理程序被觸發,日志顯示在LLDB中,PushNotification插件開始偵聽事件並嘗試注冊推送通知。

為什么只有在我的應用程序進入睡眠狀態后才會發生這種情況?

這些是安裝的插件( cordova plugins ls ):

com.patrickheneise.cordova.statusbar 0.0.2 "Status Bar"
com.phonegap.plugins.PushPlugin 2.2.1 "PushPlugin"
com.phonegap.plugins.actionsheet 1.0.0 "ActionSheet"
org.apache.cordova.console 0.2.10-dev "Console"
org.apache.cordova.dialogs 0.2.9-dev "Notification"
org.apache.cordova.vibration 0.3.10-dev "Vibration"

提前致謝。

我在自己的應用程序中遇到了與cordova 6.3.0相同的問題。 經過幾十次測試后我發現了問題。

我有一個Content-Security-Policy元標記定義如下:

<meta http-equiv="Content-Security-Policy" content="default-src *;
      style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 
     'unsafe-eval'; media-src *">

事實證明, default-src *是不夠的。

使用以下策略:

 <meta http-equiv="Content-Security-Policy" content="default-src *
       'self' data: gap:  https://ssl.gstatic.com; style-src 'self' 'unsafe-inline';
       script-src 'self' 'unsafe-inline' 'unsafe-eval'; media-src *">

這里的關鍵部分是gap:

似乎需要在iOS上正確執行cordova插件代碼。 但我仍然覺得這個政策受到恢復應用程序的影響很奇怪。

附加說明:該問題似乎會影響在webview外部顯示的所有插件。 我用cordova-plugin-camera,phonegap-plugin-barcodescanner,cordova-plugin-dialogs。 其他插件如cordova-plugin-file-transfer工作得很好。

湯姆,雖然不是真正的答案,因為我不確定是什么修復它,我可以確認我的應用程序不再這樣做。 這就是我做的:

將cordova更改為使用3.3.0而不是3.4.0 ,同時為我的插件指定版本號:

<gap:plugin name="org.apache.cordova.console" version="0.2.7" />
<gap:plugin name="org.apache.cordova.contacts" version="0.2.11" />
<gap:plugin name="org.apache.cordova.device" version="0.2.8" />
<gap:plugin name="org.apache.cordova.device-orientation" version="0.3.5" />
<gap:plugin name="org.apache.cordova.dialogs" version="0.2.6" />
<gap:plugin name="org.apache.cordova.file" version="1.0.1" />
<gap:plugin name="org.apache.cordova.file-transfer" version="0.4.2" />
<gap:plugin name="org.apache.cordova.network-information" version="0.2.7" />
<gap:plugin name="org.apache.cordova.vibration" version="0.3.7" />

然后我重新構建了我的應用程序,它在iOS上運行正常。 所以我然后將Cordova升級到3.4.0,使插件保持不變,它仍然有效。

所以我不知道是不是因為一個舊的插件版本,或者因為我只是降級然后升級了Cordova,但它現在已經修復了它。

哦,僅供參考,我正在使用Phonegap Build,這就是為什么它更容易降低/升級Phonegap / Cordova版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM