Intereting Posts
Что такое com.google.android.gms.persistent и почему он всегда использует CPU? Как найти текущую позицию перевода в Canvas? Значок навигационного ящика (ic_drawer) не отображается Может быть включен / выключен Wii в тестовом режиме через роботизм Почему я не могу создать несколько идентификаторов клиента OAuth 2.0 для одного и того же имени пакета? Android Nested Fragments Issue "java.lang.IllegalStateException: активность была уничтожена" Как запросить у поставщика MEDIA опцию «group by»? Intelij Ошибка: Причина: org.gradle.internal.component.external.model.DefaultModuleComponentSelector Facebook login null указатель исключение android NotificationCompat 4.1 SetSmallIcon и SetLargeIcon Приложения iPhone или Android, использующие аутентификацию на основе SMS? Ошибка Javah android.app.Activity не найдена Как добавить строку в нижней части счетчика, как, например, edittext в android Android: StaggeredGridLayoutManager прокручивает вверх до конца при инициализации Android получает намерение при внедрении RecognitionListener

Уведомление GCM Cordova Push не работает, когда приложение не работает

Приложение находится в PhoneGap. Я использую функцию push-уведомления с помощью https://github.com/marknutter/GCM-Cordova

Я реализовал всю функцию и работал до вчерашнего дня. Когда я проверил приложение в последний день, push-уведомление не работает, когда приложение не работает. Все уведомления получаются на моем устройстве, при нажатии на сообщение открывается приложение.

Но элементы управления не получают в части javascript, где обрабатывается уведомление о сообщениях.

Код из файла GCMIntentService.java:

JSONObject json; json = new JSONObject().put("event", "message"); json.put("message", extras.getString("message")); json.put("link", extras.getString("link")); Log.v(ME + ":onMessage ", json.toString()); GCMPlugin.sendJavascript( json ); // Send the MESSAGE to the Javascript application 

Этот код будет работать, когда полученное сообщение. Но в то время приложение не работает.

Когда я нажимаю на уведомление, приложение открывается, как обычно, не регистрируя событие сообщения; Тем самым не получив контроль над JavaScript для обработки push-уведомления.

Код для CORDOVA_GCM_script.js доступен по адресу:

https://github.com/marknutter/GCM-Cordova/blob/master/assets/www/CORDOVA_GCM_script.js

Примечание . Работает нормально, когда приложение запущено.

EDIT: уведомление выполняется иногда. JavaScript получает случайное событие.

EDIT 2:

Я определенно знаю проблему.

Из java-файла он запускает javascript-код при открытии приложения, нажав на сообщение с уведомлением push. Но в то время WebView не загружается, поэтому не удается выполнить скрипт (который является триггером события). Это условие, все, кто использует плагин, будут испытывать то же самое. Есть ли обходной путь или какое-либо исправление?

Я что-то делаю неправильно?

Solutions Collecting From Web of "Уведомление GCM Cordova Push не работает, когда приложение не работает"

Я нашел простое решение. В GCMIntentService перед отправкой javascript проверьте, загружен ли веб-просмотр:

 while (GCMPlugin.gwebView == null || GCMPlugin.gwebView.webView == null || !GCMPlugin.gwebView.webView.isEnabled()) { // Wait until webView is enabled } GCMPlugin.sendJavascript(json); 

Это работает для меня … возможно, это хороший выбор, чтобы добавить также таймаут, чтобы предотвратить бесконечный цикл (это не должно произойти, но …)

Davide

Использование плагина GCM-Cordova не будет корректно обрабатывать уведомление, если приложение не работает. Это связано с тем, что WebView не был загружен в то время, когда плагин инициировал javascript.

Решение:

  • Изменен код плагина, чтобы сохранить данные сообщения как временные, когда приходит уведомление.
  • Создал еще один плагин с методами для чтения этих загруженных данных и очистки данных.
  • Вызовите мой настраиваемый метод плагина на deviceready и проверите, есть ли какие-либо данные.
  • Если есть, очистите локально сохраненные данные и вызовите метод, чтобы показать уведомление.

Наконец, удалось решить эту проблему с помощью двух плагинов – GCM-Cordova и настраиваемого плагина.

IvenMS – У меня тоже такая же проблема, поэтому вы не единственная. Если я правильно понял praneetloke, Push Notifications не будет работать с приложениями PhoneGap, которые в настоящее время не запущены.