¿Cómo obtener las notificaciones push android de Córdoba, cuando la aplicación está en estado inactivo o está en segundo plano?

¿Cómo podemos obtener las notificaciones push de GCM en una aplicación Android android , incluso cuando la aplicación se vuelve inactiva o está en segundo plano.

"Katzer / cordova-plugin-background-mode" no parece funcionar …

" Estoy recibiendo las notificaciones push con éxito cuando la aplicación se ejecuta en primer plano "

Cordova versión: 4.3.0 android 4.4 phonegap 4.2.0

Copiaré mis funciones de notificación a continuación … en deviceready

Function onDeviceReady () {

try { pushNotification = window.plugins.pushNotification; jQuery("#app-status-ul").append('<li>registering ' + device.platform + '</li>'); if (device.platform == 'android' || device.platform == 'Android' || device.platform == 'amazon-fireos' ) { pushNotification.register(successHandler, errorHandler, {"senderID":"my-project-id","ecb":"onNotification"}); } else { pushNotification.register(tokenHandler, errorHandler, {"badge":"true","sound":"true","alert":"true","ecb":"onNotificationAPN"}); // required! } } catch(err) { txt="There was an error on this page.\n\n"; txt+="Error description: " + err.message + "\n\n"; alert(txt); } } 

y

Función onNotification (e) {

  switch( e.event ) { case 'registered': if ( e.regid!='' ) { android_reg_id = e.regid; jQuery.ajax({ type:"POST", url:SITEURL+"index.php?r=Manageuser/App_Reg_Android", data:{regid: android_reg_id,employeeno:employeeno} }).done(function(msg) { }); } break; case 'message': // if this flag is set, this notification happened while we were in the foreground. // you might want to play a sound to get the user's attention, throw up a dialog, etc. if (e.foreground) { //jQuery("#app-status-ul").html('<li>MESSAGE -> MSG: ' + e.payload.message + '</li>'); // on Android soundname is outside the payload. // On Amazon FireOS all custom attributes are contained within payload var soundfile = e.soundname || e.payload.sound; // if the notification contains a soundname, play it. // playing a sound also requires the org.apache.cordova.media plugin var my_media = new Media("/www/"+ soundfile); my_media.play(); } else { if (e.coldstart) $("#app-status-ul").append('<li>--COLDSTART NOTIFICATION--' + '</li>'); else $("#app-status-ul").append('<li>--BACKGROUND NOTIFICATION--' + '</li>'); //location.href = e.payload.redid; // otherwise we were launched because the user touched a notification in the notification tray. } jQuery("#app-status-ul").html('<li>MESSAGE -> MSG: ' + e.payload.message + '</li>'); //window.localStorage.setItem("push_que", e.payload.redid); //location.href = e.payload.redid; break; case 'error': jQuery("#app-status-ul").append('<li>ERROR -> MSG:' + e.msg + '</li>'); break; default: jQuery("#app-status-ul").append('<li>EVENT -> Unknown, an event was received and we do not know what it is</li>'); break; } } 

Plugin que se utiliza es com.phonegap.plugins.PushPlugin 2.4.0 "PushPlugin"

No estoy seguro de qué plugin está utilizando para capturar la Notificación de empuje, pero te recomendaría usar el phonegap-build / PushPlugin . Tiene un controlador que captura las notificaciones cuando se abre la aplicación, en segundo plano o cerrado. Si pulsa en la Notificación, abrirá su aplicación.

Para usar el plugin, simplemente colócalo en tu código:

 var pushNotification; document.addEventListener("deviceready", function(){ pushNotification = window.plugins.pushNotification; if ( device.platform == 'android' || device.platform == 'Android' ){ pushNotification.register( successHandler, errorHandler, { "senderID":"replace_with_sender_id", "ecb":"onNotification" }); } //the rest of your deviceReady function }); // result contains any message sent from the plugin call function successHandler (result) { alert('result = ' + result); } // result contains any error description text returned from the plugin call function errorHandler (error) { alert('error = ' + error); } 

Ahora hemos configurado una instancia del complemento para la variable global pushNotification y una instrucción if que registra su dispositivo android con el servicio GCM, pero debe colocar el senderID de su proyecto de API de Google aquí: "senderID":"replace_with_sender_id" . Si el dispositivo se registró correctamente llamará a la función onNotification . Esa función debe hacer algo como esto:

 function onNotification(e) { console.log('event received: '+e.event); switch( e.event ) { case 'registered': if ( e.regid.length > 0 ) { //Here you should call a function that sends the registration-ID //to your server so you can save it and send push notifications to your device console.log("regID = " + e.regid); } break; case 'message': if ( e.foreground ) { //App was open when the notification was received console.log('foreground'); // on Android soundname is outside the payload. var soundfile = e.soundname || e.payload.sound; // if the notification contains a soundname, play it. var my_media = new Media("/android_asset/www/"+ soundfile); my_media.play(); } else { if ( e.coldstart ) { //App was closed console.log('coldstart'); } else { //App was open in the background console.log('background'); } } alert('message: '+e.payload.message); break; case 'error': alert('GCM error: '+e.msg); break; default: alert('An unknown event has occurred'); break; } } 

Esta función recibe un evento del servicio GCM que le dice qué hacer. Si el dispositivo está registrado registra el ID de registro del dispositivo en la consola y si se recibió un mensaje, comprueba si la aplicación está abierta, cerrada o abierta en segundo plano y alertará el mensaje de alert('message: '+e.payload.message); .

Como utilizas Android, acabo de incluir el código para Android. Espero que esto es lo que estabas buscando.

Recibir notificaciones push no requiere que la aplicación se ejecute en segundo plano.

El complemento Push de Cordova
Recomiendo este complemento: https://github.com/phonegap-build/PushPlugin para recibir notificaciones push (cuando la aplicación no se está ejecutando).
La documentación en esa página es bastante buena.
El complemento es compatible con iOS, Android y otras plataformas.

Opciones del lado del servidor
No sé lo que está ejecutando en el servidor, y en realidad no suena como que necesariamente tiene algún problema en el extremo del servidor, pero en el interés de proporcionar una más completa (y más general) cordova push solución respuesta, Quiero mencionar esto:
Para Android GCM push messaging, consulta https://www.npmjs.com/package/node-gcm
Y para la mensajería de empuje de APN de iOS hay https://github.com/argon/node-apn
He incluido estos enlaces porque, incluso si no se está ejecutando nodo en el servidor, la documentación de estas páginas es un gran punto de partida y ambos tienen enlaces a información más útil.

—– Actualización 4/12/2015 —–

El plugin recomendado anteriormente ha sido obsoleto, el complemento de reemplazo, https://github.com/phonegap/phonegap-plugin-push , tiene una interfaz mucho más simple.
Este sencillo ejemplo del código del cliente tiene todo lo que necesita para la mayoría de los casos de uso: https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/EXAMPLES.md

  • ¿Cómo configurar el proyecto Cordova plugin con soporte IDE?
  • La etiqueta de audio HTML5 no funciona en Android
  • Donde poner el archivo de sonido personalizado para notificaciones push en Ionic 2 para Android
  • Barra de pie de página fija: Android HTML5 Phonegap app?
  • El código de versión de su APK debe ser superior a 378
  • Android Cordova 5.0+ caída de la cámara
  • Crear PhoneGap 3.0.0 error de proyecto - 'plataforma add android' no es un nodo
  • Cordova / Phonegap Plugins para Blackberry
  • Luchando entre el nativo y el teléfono, los requisitos de la aplicación sencilla
  • ¿Cómo utilizar OpenStreetMap / OpenLayers?
  • Android cordova cámara cancelada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.