IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Llegiu abans Google Cloud Messaging ara anomenat Firebase Cloud Messaging

Instal·lació

$ npm install node-gcm --save

Exemples

Android Push Notifications amb Cordova

Vegeu Android Push Notifications amb Cordova

Exemple bàsic

https://github.com/phonegap/phonegap-plugin-push/tree/master/example/server
http://macdonst.github.io/push-workshop/module4.html

Requeriments:

// Load modules

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

// Replace these with your own values.
var apiKey = "";
var deviceID = "";

var service = new gcm.Sender(apiKey);
var message = new gcm.Message();
message.addData('title', 'Hello, World');
message.addData('body', 'This is a notification that will be displayed ASAP.');

service.send(message, { registrationTokens: [ deviceID ] }, function (err, response) {
	if(err) console.error(err);
	else 	console.log(response);
});

Exemple pas a pas amb client Android i client nodeJS

Client

Consulteu:

http://cartucho.gl/google-cloud-messaging-cgm-y-nodejs/

Bàsicament s'utilitza el codi d'exemple del SDK android:

extras/google/gcm/samples/gcm-demo-client
Recursos:

Server: nodejs, express i node-gcm

Abans de res seguiu les passes de:

http://developer.android.com/google/gcm/gs.html

Instal·leu nodejs a mà:

Nodejs#Manual

Utilitzarem Express per fer més fàcil el servidor node-gcm:

$ npm install -g [email protected]

ara creem la app amb express:

$ express gcm-server

Editem el fitxer package.json per afegir mòduls (gcm-node, connectar el servei API key, underscore):

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": "3.0.0rc4",
    "jade": "*",
    "gcm-node": "*",
    "underscore": "*"
  }
}
$ npm install

Configurem 4 rutes:


/

On mostrarem un llistat de dispositius connectats i un formulari per enviar un missatge

/register

On registrar la app Android

/unregister

Per unregistrar

/send acción

el formulari per enviar missatges:

Ara editeu app.js per modificar les rutes:

app.get( '/',           routes.index);
app.post('/register',   routes.register);
app.post('/unregister', routes.unregister);
app.post('/send',       routes.send_message);   

I el fitxer routes/index.js

var gcm = require('node-gcm')
  , _ = require('underscore')
  , registrationIds = []
  , sender = new gcm.Sender('YOUR-API-KEY');
 
/*
 * GET home page.
 */
 
exports.index = function(req, res) {
 res.render('index', {
   title: 'Express',
   receptors: registrationIds
 });
};
 
exports.register = function(req, res) {
  registrationIds.push(req.body.regId);
  res.send(200);
};
 
exports.unregister = function(req, res) {
  registrationIds = _.without(registrationIds, req.body.regId);
  res.send(200);
};
 
exports.send_message = function(req, res) {
  var message;
  message = new gcm.Message;
  message.addData('message', req.body.message);
  _.intersection(registrationIds, req.body.receptors.split(','));
  sender.send(message, registrationIds, 4, function(result) {
    console.log(result);
  });
  res.redirect('/');
};

Usaremos un array para almacenar los identificadores de los dispositivos para poder mandarles los mensajes. No parece la solución mas robusta del mundo pero nos servirá para conectar todas las piezas y comprobar que funciona.

Las funciones register y unregister añaden y eliminan el id que recibe en el parametro regId. send_message sirve de action para el formulario que añadiremos ahora para enviar los mensajes, en el podrás seleccionar una serie de ids y enviarles un mensaje dado. Se lo añadimos a views/index.jade ...

Welcome to #{title}
form(action="/send",method="post")
  p
    select(name="receptors",multiple="multiple")
      for recep in receptors
        option(value="#{recep}")= recep.slice(0,24)+"..."
  p
    textarea(name="message")
  p
    input(type="Submit")

Arranquem l'aplicació amb:

node app.js

per provar el server aneu a la URL:

http://localhost:3000

Al arrancar l'app s'hauria de registrar el dispositiu.

Recursos:

CodiFont Github

Vegeu també

Enllaços externs