Плагин Cordova Push: onNotificationGMC не запускается и не может получить regID

Привет всем, я разрабатываю гибридное приложение cordova, которое требует, чтобы служба Push Notification для Android и iOS работала, и поэтому я установил плагин cordova « PushPlugin ».

Вот мой код

Document.addEventListener ("deviceready", deviceready, false);

function deviceready() { try { pushNotification = window.plugins.pushNotification; pushNotification.unregister(successHandler, errorHandler); pushNotification.register( successHandler, errorHandler, { "senderID": "7645XXXXXXXX", "ecb": "onNotificationGCM" }); function successHandler(data) { alert("SUCCESS: " + JSON.stringify(data)); }; function errorHandler(e) { alert("ERROR" + e); } function onNotificationGCM(e) { alert("Done") } } catch (e) { alert(e); } } 

Когда я запускаю приложение, я ожидаю, что у меня будет два предупреждения: succesHandler one и onNotificationGCM, но он только запускает succesHandler: «ОК» … С этой проблемой я не могу даже получить доступ к параметру regID, который будет сохранен На моем сервере …

Может кто-нибудь, пожалуйста, объясните мне, как получить regID. Вся моя работа зависит от этого

Я тестирую это приложение на Galaxy S4 Mini с Android 4.4.2.

ИСПРАВЛЕНО

Я переместил onNotificationGCM в пустой тег скрипта следующим образом:

 <script> function onNotificationGCM(result) { alert(result.regid); } </script> 

И теперь он дает вам РЕЙД 🙂

У меня такая же проблема. Если вы используете AngularJS + IonicFramework, вам не нужно это делать:

После создания фабрики с помощью функции onDeviceReady создается функция onNotificationGCM. Что-то вроде этого:

App.factory ('PushProcessingService', function () {..

});

Функция onNotificationGCM (e) {}

Я создавал onNotificationGCM внутри моей фабрики. Это решает мою проблему. Надеюсь, это поможет вам.

В ионной структуре у вас есть готовый плагин: http://ngcordova.com/docs/plugins/pushNotifications/

Вот пример рабочего кода для устройств Android:

 module.run(function($cordovaPush) { var androidConfig = { "senderID": "replace_with_sender_id", "ecb": "replace_with_the_name_of_function that will return you the regid" }; document.addEventListener("deviceready", function(){ $cordovaPush.register(config).then(function(result) { // Success }, function(err) { // Error }) window.function replace_with_ecb(notification) { //notification.regid switch(notification.event) { case 'registered': if (notification.regid.length > 0 ) { alert('registration ID = ' + notification.regid); } break; case 'message': // this is the actual push notification. its format depends on the data model from the push server alert('message = ' + notification.message + ' msgCount = ' + notification.msgcnt); break; case 'error': alert('GCM error = ' + notification.msg); break; default: alert('An unknown GCM event has occurred'); break; } }; }, false); }); 

Этот код работает только с реальным устройством (а не с эмулятором)