O aplicativo Ionic / Cordova não recebe notificação por push em segundo plano
Meu aplicativo Android não recebe notificações por push em segundo plano e deve, de acordo com odocumentação.
Um aplicativo Android em um dispositivo Android não precisa estar em execução para receber mensagens. O sistema ativará o aplicativo Android via transmissão por intenção quando a mensagem chegar, desde que o aplicativo esteja configurado com o receptor e as permissões de transmissão adequados.
A tentativa de notificações diferentes descobriu que ele recebe as notificações por push enquanto está fechado se e somente se as notificações contiverem o atributo"mensagem", se não, apenas o descarta. (As notificações por push são apenas objetos JSON).
Minhas notificações contêm todos os tipos de atributos, incluindo "alerta", "id" e "título", mas apenas "mensagem" faz o Android ativar o aplicativo.
Exemplo de notificação quenão funciona:
{ event: 'message',
from: '947957531940',
collapse_key: 'do_not_collapse',
foreground: true,
payload:
{ alert: 'Mensaje de Prueba',
title: 'Titulo Mensaje de Prueba' } }
Exemplo de notificação quetrabalho:
{ 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.' } }
Esse é um padrão do Android ou estou fazendo algo errado no meu aplicativo?
Meu aplicativo foi desenvolvido usando o Ionic com o Cordova.
PD: Desculpe meu inglês.
EDITAR:
Este é o código push do Android dentro do módulo .run no app.js, comong-cordova instruções especificam:
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){
}
}