2016-08-08 3 views
2

Я пытаюсь внедрить уведомление Firbase push с использованием cordova. Я использую код для последней fcm-вилки в specificaion отсюда: Cordova Push PluginFireBase push уведомление используя cordova

Я могу получить регистрационный токен. Затем я попытался отправить уведомление от модуля уведомления об испытаниях Firebase, используя этот токен. Каждый раз, когда я запустить приложение в моем устройстве я имею в alert-

«Msg: onNotification обратный вызов успешно зарегистрирован: OK»

он находится внутри второй функции FCMPlugin.onNotification события.

Но первая функция [, где я хочу получить уведомление] не вызывается. Не знаю, где я ошибаюсь. Вот мой код внутри onDeviceReady:

function onDeviceReady() { 
    // Handle the Cordova pause and resume events 
    document.addEventListener('pause', onPause.bind(this), false); 
    document.addEventListener('resume', onResume.bind(this), false); 

    // TODO: Cordova has been loaded. Perform any initialization that requires Cordova here. 
    var parentElement = document.getElementById('deviceready'); 
    var listeningElement = parentElement.querySelector('.listening'); 
    var receivedElement = parentElement.querySelector('.received'); 
    listeningElement.setAttribute('style', 'display:none;'); 
    receivedElement.setAttribute('style', 'display:block;'); 

    //========================= 
    FCMPlugin.getToken(
     function (token) { 
      alert("Token: " + token); 
       cordova.plugins.email.open({ 
        to: '[email protected]', 
        subject: 'Greetings', 
        body: token 
       }); 
     }, 
     function (err) { 
      alert("Error: " + 'error retrieving token: ' + err); 
     } 
    ); 

    FCMPlugin.onNotification(
     function (data) { 
      alert("Notify: " + JSON.stringify(data)); 
      if (data.wasTapped) { 
       //Notification was received on device tray and tapped by the user. 
       alert("Wrapped Notify: " + JSON.stringify(data)); 
      } else { 
       //Notification was received in foreground. Maybe the user needs to be notified. 
       alert("Notify: " + JSON.stringify(data)); 
      } 
     }, 
     function (msg) { 
      alert("Msg: " + 'onNotification callback successfully registered: ' + msg.Notification); 
     }, 
     function (err) { 
      alert("Error: " + 'Error registering onNotification callback: ' + err); 
     } 
    ); 
}; 
+0

Эй вы получите какое-либо решение.? Мое уведомление FCM доставлено успешно, но моя проблема в том, что я хочу получить предупреждение, когда я нажимаю на уведомление, также я использую тот же плагин, который вы используете. если вы решили, тогда plz скажите мне. –

+0

@ KAUSHAL: Я изменил вилку. Следующий подключаемый модуль работает для меня хорошо: [link] (https://lokesh-patel.blogspot.com/2016/06/cordova-plugin-firebase-cloud -messaging.html? showComment = 1470646658688 # c897350184092951555) –

ответ

1

У вас не хватает, чтобы подписаться на тему, прежде чем onNotification функции, как это:

FCMPlugin.subscribeToTopic('topic'); 
2

Убедитесь, что вы добавить "click_action":"FCM_PLUGIN_ACTIVITY" к полезной нагрузке для REST API. Это должно присутствовать на Android. Если это не доступно, вы не будете получать данные от прослушанного уведомления (или слышать звук).

Смотрите пример полезной нагрузки REST API из документации Cordova-плагин-FCM:

//POST: https://fcm.googleapis.com/fcm/send 
//HEADER: Content-Type: application/json 
//HEADER: Authorization: key=AIzaSy******************* 
{ 
    "notification":{ 
    "title":"Notification title", 
    "body":"Notification body", 
    "sound":"default", 
    "click_action":"FCM_PLUGIN_ACTIVITY", // <<<<<<< Must be present for Android 
    "icon":"fcm_push_icon" 
    }, 
    "data":{ 
    "param1":"value1", 
    "param2":"value2" 
    }, 
    "to":"/topics/topicExample", 
    "priority":"high", 
    "restricted_package_name":"" 
} 
Смежные вопросы