Google Cloud Messaging… DONE!

Para las notificaciones siempre he tenido en mente hacer uso del servicio que ofrece el propio Android con la Nube Interna que tiene para ello denominada Google Cloud Messaging. De hecho ya he trabajdo y hecho alguna aplicación que otra usando este servicio, así que he tenido buenas experiencias y es una auténtica pasada lo eficaz que es.

Para el que no le sepa, Google Cloud Messaging (GCM) es el servicio que Google ofrece para desarrollar Notificaciones Push en Android. Las notificaciones push tienen un gran incoveniente, si la queremos desarrollar por nuestra cuenta, y es que nos tenemos que cerciorar cuando el usuario al que va dirigida está operativo (hablando en temas de conexión a internet) para hacerle llegar la notificación. Esto inmiscuye, forzosamente, que quien quiera desarrollar este servicio deba comunciar de forma eficiente al móvil con su servidor (porque si no la batería y los recursos lo achacarían). Y ¿cuál sería la politica a determinar?… esa es otra, estaria el móvil constantemente solicitando si hay cambios al servidor, algo asi como preguntando si tiene algún paquete para él. O sería más bien al contrario que el servidor intentara comunicarse con el móvil sólo cuando le llegara el paquete que el debe entregar. Si es así, de la última forma que parece más eficiente… ¿Qué pasaria si el móvil no tiene internet en ese momento? ¿Cuantas veces se reintentaria? ¿Y en que periodo de tiempo?…

Pues para evitar todas estas cuestiones que se abrirían al intentar implementar un servicio de notificaciones push propio, existen diferentes plataformas que te abstraen de este problema y lo implementan por ti. A parte de la de Google, su GCM, hay startups dedicadas últimamente a crear este tipo de nubes, con diferentes SDKs para las diferentes plataformas móviles, creando incluso compatibilidad entre ellas. De momento GCM sólo está operativo para Android, así que una plataformas externas de esta sería un buena solución si trabajamos con el desarrollo multipltaforma (ya sea nativamente o no). De las mejorcitas plataformas externa, yo recomiendo: Parse, te simplifica al máximo las labores a realizar y es realmente rápida. Lo único malo que en su versión gratuita, te pone un límite de mensajes que puedes enviar con él, pero bueno, para hacer pruabas y demás, es más que suficiente. El problema de todas estas plataformas externas, es que nunca llegarán a ser más fiables, rápidas, seguras y eficientes que la nativa. GCM es la más rápida y efectiva que he usado yo, y es auténticamente increíble con la rapidez que te llega al notificación, si tienes intenet o si no tienes (a posteriori cuando tengas). Esta implementada por desarrolladores internos de Android, por lo que el código más optimizado es imposible que esté.

Como he dicho, ya había trabajado con ella, hará menos de 1 año, pero en vez de tirar del código que ya tenía, busqué a en la página de desarrolladores de Android, oficial, para ver si el tutorial seguía igual o había cambiado. Y en efecto, el servicio se había actualizado a una nueva versión, y las labores para su uso desde Android se han simplificado considerablemente desde que yo lo usé. Ahora es realmente sencillo usarla, y es una gozada como te lo explican en el tutorial, incluso dandote el código de una aplicación de ejemplo que te facilita en demasía saber dónde hay que poner el qué y por qué.

Podeis encontrar el tutorial aquí: Tutorial GCM, y el código fuente de una aplicación demo en Google Code, aquí: Demo Google Code

¿Pero como funciona este Servicio integrado con Qdemos?… pues abajo teneis una imagen (de autoría propia ^.^) que lo explica, pero a grande rasgos es:

  • El usuario crea una Qdada y manda la información a nuestro servidor de Node.js para su almacenamiento.
  • El servidor la guarda en su BBDD en MongoDB, y a los invitados de la misma le manda un mensaje, a cada uno, con los datos de la Qdada a través de la nube de Google (GCM).
  • El servicio de Google (GCM) se encarga de ver cuando el usuario tiene conexión a internet y notificarle en su móvil que ha sido invitado a una nueva Qdada.
  • La aplicación de Qdemos (que tiene un broadcast receiver implementando para capturar las notificaciones de GCM que sean para él) mostrará al usuario el tipico mensaje de nueva notificación push en la barra de estado del smartphone.
  • El usuario puede desplegar la barra y ver la notificación, que si pincha en ella le llevará a la aplicación de Qdemos, abriendo la Activity encargada de mostrar la info de la Qdada y poder responer a las fechas propuestas en esta.
Funcionamiento de GCM para Android usando un servidor propio.

Funcionamiento de GCM para Android usando un servidor propio.

Para la parte del servidor, al usar Node.js, pues tenía que buscar algún módulo que me permitiría comunicar mi servidor con la nube de Google. Y afortunadamente, y gracias a la comunidad, hay uno realmente bueno, que podeis encontrar aquí: Modulo GCM para Node.js De manera que podeis ver en la imagen de abajo qué fácil es enviar algo por GCM a nuestra app desde nuestro servidor. El código ya está implementado para enviar esa Qdada a todos los invitados, así que esto va viento en popa a toda vela. 🙂

Código para enviar una Qdada desde el servidor nuestro al móvil de los invitados

Código para enviar una Qdada desde el servidor nuestro al móvil de los invitados

Como siempre el commit de esto que os explico lo podeis ver aquí: Commit.

¡Sed Felices!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s