2015-08-23 3 views
1

Я потратил почти 3 дня на то, чтобы PushPlugin работал с моим приложением. У меня были следующие вопросы и для этого я должен был изменить PushPlugin как это было предложено «https://github.com/kentmw/PushPlugin»Настройка PushPlugin для кордовы. (Для android)

  1. Когда приложение приостановлено или закрыто pushBundle не получал передается в приложение. (Было так много борьбы с этой проблемой. Этот вопрос также обсуждался на gitbucket. В ходе обсуждения было не очень понятно, как решить эту проблему. Поэтому я пишу этот вопрос и отвечу на него тоже.)

  2. Если уведомление очищено (не нажато) пользователем, pushBundle не передается в приложение.

  3. Я делаю несколько изменений, подходящих для моего приложения.

+0

Большой вопрос. Я [ответил] (http://stackoverflow.com/a/29437083/1761793) аналогичную проблему раньше. Вероятно, он решает # 1 и # 2. Создайте и отправьте запрос на pull в [PushPlugin] (https://github.com/phonegap-build/PushPlugin) и добавьте комментарий к моему ответу. Таким образом, больше людей узнают об этом решении. Он может даже объединяться в исходный репозиторий. – Ajoy

+0

Кроме того, это было бы менее сложно, если бы вы задали этот вопрос специально для одной цели. Вы можете решить все изменения в # 3 в другом вопросе. – Ajoy

ответ

1

Так, по мнению автора, вы должны зарегистрировать приложение с сервера каждый раз Google GCM вы открываете приложение, для того, чтобы функция обратного вызова доступны для вызова, когда уведомление получено.

Таким образом, я сделал следующие изменения.

В плагине изменения различаются here.

Здесь в этих изменениях смотрите глубоко для pushCachedExtras(). в каких случаях он был вызван.

Изменения внесены 2 файлов
1. src/android/com/plugin/gcm/PushPlugin.java
2. www/PushNotification.js

в вас код, который вы должны сделать что-то вроде

if(ALREADY_REGISTERED) { 
    pushNotification.setECB(success, error, { "senderID" :"SENDER_ID_HERE","ecb": "window.onNotificationGCM" }); 
} else { 
    pushNotification.register(success, error, { "senderID" :"SENDER_ID_HERE","ecb": "window.onNotificationGCM" }); 
} 

Каждый раз, когда вы должны сделать обратный вызов событий доступен при запуске приложения, до этого pushBundle - "cached".

Debugging Plugin

adb logcat -s GCMIntentService:* PushPlugin:*

Примечание: Я работаю на 2 и 3 очка, и должны были внесены изменения в плагин для прошивкой также.