Я делаю pushnotification для Android и IOS.Cordova PushNotification onNotificationGCM не называется
Я использовал кордову push-plugin https://github.com/phonegap-build/PushPlugin, кажется, отлично работает.
Информация: Я работаю над проектом AngularJS.
В моей NotificationHelper заводе у меня есть этот метод инициализации:
helper.init = function() {
// Instanciate push plugin notification
var pushNotification = window.plugins.pushNotification;
var errorHandler = function(error) {
logger.debug('errorHandler = ' + error);
};
if ($rootScope.isAndroid()) {
var senderId = CONFIG.NOTIFICATION_ANDROID_SENDER_ID;
pushNotification.register(function(result) {
logger.debug('successHandler = ' + result);
}, errorHandler, {
'senderID' : senderId,
'ecb' : 'onNotificationGCM'
});
}
};
Я также определил эти методы на mains.js:
var onNotificationGCM = function(event) {
// call back to web service in Angular.
var elem = angular.element(document.querySelector('[ng-app]'));
var injector = elem.injector();
var service = injector.get('NotificationHelper');
service.onNotificationGCM(event);
};
Это трюк, чтобы позвонить angularJS завод из основного JavaScript.
'onNotificationGCM' вызовите метод 'NotificationHelper.onNotificationGCM':
helper.onNotificationGCM = function(e) {
switch (e.event) {
case 'message':
// Notification happened while app was in the foreground
if (e.foreground) {
logger.debug('[notification] [message] Foreground : ' + JSON.stringify(e));
} else { // Notification touched in the notification tray
logger.debug('[notification] [message] Background : ' + JSON.stringify(e));
if (e.coldstart) {
// App was not running and user clicked on notification
} else {
// App was running and user clicked on notification
}
}
decriptPayloadNotification(e.payload);
break;
case 'registered':
logger.debug('[notification] [registered] : ' + JSON.stringify(e));
if (e.regid.length > 0) {
registerUser(e.regid, 'gcm');
}
break;
case 'error':
logger.debug('[notification] [error] : ' + JSON.stringify(e));
break;
default:
logger.debug('[notification] [default] : Unknown, an event was received and we do not know what it is : ' + JSON.stringify(e));
break;
}
};
Во время первого использования, все работает хорошо:
- 'Registered' событие получено
- Уведомления принимаются
- Когда я нахожусь на переднем плане, я получаю сообщение «сообщение»:
УведомлениеHelper: [уведомление] [сообщение] Foreground: {"event": "message", "from": "847593779913", "message": "Agenêts 23/03 10h \ r \ n", " collapse_key ":" do_not_collapse "," theeground ": true," loadload ": {" lt ":" school "," lv ":" E1154 "," notId ":" 35429 "," title ":" Agenêts le 23/03/2015" , "сообщение": "Agenêts 23/03 10h \ г \ п"}}
- Когда я нахожусь на фоне, если я получаю Notif и Туш его на лоток уведомлений, я получать сообщение «сообщение»:
NotificationHelper: [уведомление] [сообщение] Справочная информация: {«событие»: «сообщение», «от»: «847593779913», «сообщение»: «la piscine sera fermée 1 journalee pour raison technique», «coldstart»: false , «collapse_key»: «do_not_collapse», «foreground»: false, «полезная нагрузка»: {«lt»: «плавательный бассейн», «lv»: «E114», «notId»: «29869», «title»: 23/04/2015 FERMETURE де ла Пискин», "сообщение": "La Piscine сывороток fermée 1 journée налить технику RAISON"}}
НО, если я убить мое приложение, все перестают работать.
Если я перезапущу приложение, я больше не буду получать сообщение 'message'event и' onNotificationGCM 'не будет вызываться.
Я основал несколько статей говоря об этой проблеме, но без успеха:
Stackoverflow : Phonegap PushNotification to open a specific app page
ли кто-нибудь имеет представление об этой проблеме?
Я думаю, только 'требуется message'. 'title' является необязательным – Ajoy
Я сделал то, что вы сказали. 1) В adb logcat я вижу некоторые журналы из gcmservices. 2) У меня есть «заголовок» и «сообщение» в моих сообщениях. 3) И я установил для параметра delayWhileIdle значение false. Но у меня такая же проблема :( –