Приложение Ionic / Cordova не получает push-уведомления в фоновом режиме
Мое приложение для Android не получает push-уведомлений в фоновом режиме и должнодокументация.
Приложение Android на устройстве Android не должно запускаться для получения сообщений. Система будет активировать приложение Android через широковещательную рассылку при поступлении сообщения, если приложение настроено с соответствующим широковещательным приемником и разрешениями.
Попытка различных уведомлений обнаружила, что он получает push-уведомления, пока он закрыт, если и только если уведомления содержат атрибут"сообщение"если нет, то просто отбрасывает его. (Push-уведомления - это просто объекты JSON).
Мои уведомления содержат все виды атрибутов, включая «alert», «id» и «title», но только «message» заставляет Android «разбудить» приложение.
Пример уведомления о том, чтоне работает:
{ event: 'message',
from: '947957531940',
collapse_key: 'do_not_collapse',
foreground: true,
payload:
{ alert: 'Mensaje de Prueba',
title: 'Titulo Mensaje de Prueba' } }
Пример уведомления о том, чтоработает:
{ event: 'message',
from: '947957531940',
message: 'Contenido del mensaje de prueba.',
collapse_key: 'do_not_collapse',
foreground: true,
payload:
{ alert: 'Mensaje de Prueba',
title: 'Titulo Mensaje de Prueba',
message: 'Contenido del mensaje de prueba.' } }
Это стандарт Android по дизайну или я что-то не так делаю в своем приложении?
Мое приложение было разработано с использованием Ionic с Cordova.
PD: Извините мой английский.
РЕДАКТИРОВАТЬ:
Это push-код Android внутри модуля .run в app.js, так какнг-Cordova в инструкциях уточняется:
if (ionic.Platform.isAndroid()){
var androidConfig = {
"senderID": "94*************",
"ecb": "window.casosPush"
};
try{
var pushNotification = window.plugins.pushNotification;
} catch (ex){
}
// Llamada en caso de exito
var successfn = function(result){
//alert("Success: " + result);
};
// Llamada en caso de error
var errorfn = function(result){
window.alert("Error: " + result);
};
// Llamada de casos de notificacion push
window.casosPush = function(notification){
switch (notification.event){
case 'registered':
if (notification.regid.length > 0){
$rootScope.data.token = notification.regid;
//alert('registration ID = ' + notification.regid);
}
break;
case 'message':
$rootScope.mensajes.unshift(notification.payload);
$localstorage.setArray('mensajes', $rootScope.mensajes);
alert(JSON.stringify(notification));
break;
case 'error':
alert('GCM error = ' + notification.msg);
break;
default:
alert('An unknown GCM event has occurred');
break;
}
};
try{
// Llamada de registro con la plataforma GCM
pushNotification.register(successfn,errorfn,androidConfig);
} catch(notification){
}
}