Cordova запускает плагины только после события возобновления
Я использую Cordova 3.5.0 на iOS.
Мое приложение загружается, событие "deviceReady" запускается, но никакие действия плагина не выполняются, пока я не помещу свое приложение в фоновый режим (переходя на домашний экран).
Когда я возвращаюсь в свое приложение, запускается обработчик "резюме", в LLDB появляются журналы, а плагин PushNotification начинает прослушивать события и пытается зарегистрировать push-уведомления.
Почему это происходит только после того, как я уложил свое приложение в режим сна?
Это установленные плагины (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"
Заранее спасибо.
2 ответа
У меня была такая же проблема в моем собственном приложении с 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:
Кажется, необходимо правильно выполнить код плагина Cordova на iOS. Но я все еще нахожу странным, что на политику влияет возобновление работы приложения.
Дополнительное примечание: проблема затрагивает все плагины, которые отображаются за пределами веб-просмотра. У меня это было с помощью cordova-plugin-camera, phonegap-plugin-barcodescanner, cordova-plugin-dialogs. Другие плагины, такие как cordova-plugin-file-Transfer, работали просто отлично.
Том, хотя на самом деле это не ответ, так как я не уверен, что это исправило, я могу подтвердить, что мое приложение больше не делает этого. Вот что я сделал:
Поменял кордову на использование 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.