Archivo de la etiqueta: GCM

Google Cloud Messaging con NodeJS

google-cloud-messaging

Google Cloud Messaging una de las funcionalidades más lindas que he utilizando en Android, sin tener la necesidad de tener que conectarnos cada vez al servidor, podemos mandar información a través de push a los dispositivos que tengan instalada nuestra aplicación para luego ser tratada, perfecto para notificaciones, ya que ocurre al instante. Ese post no está dedicado a explicar como funciona gcm, si lo desean pueden consultar la documentación oficial de Google para más detalles Google Developer
Entonces lo primero es crear nuestra librería con la cuál nos comunicamos en los servidores de Google, la llamaremos gcm.js

[javascript]
var request = require(‘request’);
var GCM = function(api_key) {
this._api_key = api_key;
}
GCM.prototype.send = function(msg, callback) {
request.post({
uri: ‘https://android.googleapis.com/gcm/send’,
json: msg,
headers: {
Authorization: ‘key=’ + this._api_key
}
}, function(err, response, body) {
callback(err, body);
})
}
module.exports = GCM;
[/javascript]

Recuerden que para como estamos importando ‘request’ debemos instalarla en nuestro proyecto con:

sudo npm install request

Paso seguido, creamos la función que determinará a que usuario notificaremos. Importamos el gcm.js que acabamos de crear y reemplazamos las XxxXXXxXxxXxXxXxXXxXxXxXxXxXxXxXxXx por nuestro api key (recuerden que deben dar los respectivos permisos en Google Console), para este ejemplo estoy creando un modulo llamado ‘notify’ que, apoyandome con ExpressJS, recibe a través de una consulta POST el parámetro user_id, luego en un schema llamado ‘User’ busco en mi base de datos un usuario con ese id y obtengo su gcm_id, que había guardado previamente desde el dispositivo del usuario, para poder rutear el mensaje que deseo enviar.

[javascript]
var GCM = require(‘./gcm.js’);
var gcm = new GCM(‘XxxXXXxXxxXxXxXxXXxXxXxXxXxXxXxXxXx’);

exports.notify = function(req, res){
var user_id = req.body.user_id;
User.findOne({_id: user_id}, function(err, user){
if(!err && user){
var msg = {
registration_ids: [user.gcm_id],
collapse_key: "your_collapse_key",
time_to_live: 180,
data: {
message: ‘Este es mi mensaje!’
}
};
gcm.send(msg, function(err, response){
console.log(response);
res.send(response.success);
});
}else{
res.send(‘false’);
}
});
}
[/javascript]

Y listo! Una implementación bastante sencilla de Google Cloud Message en NodeJS.
Saludos!