Notificaciones Push en Android. Parte 3a. Crear un servidor para enviar notificaciones Push con NodeJS

Para poder enviar notificaciones Push necesitamos un servidor, en este tutorial vamos a hacerlo desde NodeJS, pero se podría usar Java, PHP, o cualquier otro lenguaje de servidor. Hemos llamado a esta parte como 3a por si en un futuro hacemos otros tutoriales de como enviar las notificaciones Push usando otro servidor.

Esta parte también ha sido elaborada por Eloy Fernández, basandose en el tutorial en inglés de Holly Schinsky

Para poder seguir este tutorial debemos tener Node.js instalado, cosa que ya deberíamos tener porque es necesario para crear las aplciaciones phonegap

También deberíamos tener instalada la libreía node-gcm y conectada con node.js
Para instalarla haremos:
npm install node-gcm-service

Y para linkar la librería con el servidor
npm link node-gcm

-Ahora para enviar nuestro primer mensaje de notificación crearemos un archivo javascript (donde creamos más oportuno) llamado notify.js (el nombre es arbitrario, pero es un buen nombre). Este archivo contendrá el siguiente código:

var gcm = require('node-gcm');

var sender = new gcm.Sender('XXXXXX');//API key de la parte 1 del tutorial

var registrationIds = [];

//Creamos el mensaje a enviar
var message = new gcm.Message();
message.addData('message',"u270C Peace, Love u2764 and PhoneGap u2706!");
message.addData('title','Push Notification Sample' );
message.addData('msgcnt','3'); // Se muestra en la notificación en la barra de tareas.
message.addData('soundname','beep.wav'); //Sonido en el dispositivo para avisar de la llegada
message.timeToLive = 3000;// Duración en segundos que permanecerá en GCM e intentarlo de nuevo antes de finalizar. Por defecto son 4 semanas (2,419,200 segundos) si no se especifica.

registrationIds.push('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');//Id del dispositivo obtenida en la parte 2 del tutorial

sender.send(message, registrationIds, 4, function (err,response) {
if(err) {
    console.error(err);
} else {
    console.log(response);
}
});

gcm.Sender(‘XXXXXXXXX’) es el API Sender Key conseguido en la parte 1 del tutorial
registrationIDs.push(‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’); será el número de registro del dispositivo obtenido en la parte 2 del tutorial.

Para ejecutar el notify.js y así enviar el mensaje push al dispositivo tan solo tenemos que escribir esto por consola (estando en la misma carpeta donde esté creado el notify.js):
node notify.js
Y la notificación debería aparecer en nuestro dispositivo.

El notify.js al final del tutorial debería quedar tal que así

Este es un servidor muy sencillo que solo envía una notificación a nuestro dispositivo, como deberes os dejo que modifiqueis el notify.js para poder mandar las notificaciones a todos los usuarios de vuestra aplicación, cogiendo los ids de todos los dispositivos de vuestra base de datos.

17 comentarios en “Notificaciones Push en Android. Parte 3a. Crear un servidor para enviar notificaciones Push con NodeJS

  1. Perdona, he tenido problemas con los comentarios y hasta ahora no lo había visto. Esta ya es la última parte, has tenido algún problema? Necesitarías algo más?

  2. Amigo me parece interesante tu tutorial pero tengo dudas yo no ocupo node.js y no se muy bien como funciona pero me agrada hacer pruebas, lo único que me gustaría saber es si por ejemplo eso lo podría ejecutar por tiempos cada 3 min o imtervalos de tiempo. Y si eso podri utlizarlo por web

    1. Nodejs es simplemente un servidor que se programa con js, si no te gusta o ya tienes tu propio backend tendrás que mirar como hacerlo con el lenguaje que uses, o también hay servicios push que se encargan de la parte de servidor (pushwoosh, urbanairship, parse, etc)

    1. Perdona, había un error en el tutorial, el null que sale es el error, lo que hay que sacar por consola es el response, lo he actualizado. Pruebalo a ver si el response te da más datos de lo que te puede estar pasando

  3. Hola, ante todo muchas gracias por el tutorial…

    Tengo una duda, he conseguido que me lleguen las notificaciones push al movil, pero cuando intento pasarlo a otro movil(la apk) me dice error al analizar el paquete…¿hay alguna forma de exportar correctamente el apk? Muchas gracias por el tutorial, ha sido muy claro a la hora de explicarlo!

      1. Hola, ya lo he conseguido, se ve que no estaba pasando la apk buena.. y si, el movil tenia lo de los origenes desconocidos activados

        Gracias

  4. Hola,

    Antes que nada quiero agradecer por estos tres tutoriales sobre notificaciones push. Tengo un dilema y quisiera saber si alguno de ustedes me puede ayudar.

    Quisiera implementar lo de las notificaciones push en mi app de android pero se me está haciendo muy difícil. He vistos que hay servicios de terceros pero tienen un precio elevado y no sería lo mejor para empezar.

    Quiero algo sencillo, solo pido mandar una notificación a mi app con un titulo un mensaje y un url, cuando el usuario toque la notificación se abrirá mi app mostrando la url en un webview, eso es todo.

    He visto un poco de gcm pero hasta allí, necesito poder mandar las notificaciones, no me importa registrar los dispositivos, quiero manejarlos como uno sólo.

    Esto de NodeJS lo desconozco y en otros casos hablan de Python y también lo desconozco. Por favor si alguien sabe de otro método que me ayude, ya no sé donde buscar.

    Gracias de antemano.
    Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *