Sin categoría

Tutorial: Implementa las notificaciones push de Android en tu aplicación Couchbase Mobile

Al desarrollar una aplicación, es muy útil utilizar la replicación push y pull en modo continuo. Los replicadores se encargan de todo para asegurarse de que su aplicación y Sync Gateway siempre tengan sincronizados los documentos más recientes.

Sin embargo, una replicación pull continua significa que Couchbase Lite utilizará técnicas como sondeos largos o web sockets para comprobar si hay nuevos datos que obtener de Sync Gateway. Esto puede tener un impacto en la duración de la batería y, en consecuencia, en la experiencia del usuario.

En este post, exploraremos una alternativa a la replicación pull continua utilizando Google Cloud Messaging, el servicio de notificaciones push de Android.

Puede consultar un ejemplo práctico en ToDoLite Android. ¡Veamos cómo puedes incluir la sincronización GCM en tu aplicación!

Activar GCM en tu aplicación

En primer lugar, vamos a configurar ToDoLite Android para que se registre en Google Cloud Messaging. Crearemos un nuevo proyecto Google API en el directorio consola para desarrolladores. Siga este guía para configurarlo. Deberías tener un número de proyecto y una clave API. Ahora podemos actualizar el proyecto de AndroidManifest.xml con los permisos necesarios, el filtro de intención y el servicio. Debería tener este aspecto:

Nota: Echa un vistazo a la ejemplo desde el sitio de desarrolladores de android también.

Si el proyecto está configurado correctamente, podemos recuperar el token de dispositivo con el número de proyecto que obtuvimos al crear la app en la consola de desarrollador de google. Añade un método en la Actividad Principal para recuperar el token de dispositivo desde GCM y guardarlo en el documento de perfil de usuario, por ejemplo:

Nota: Los tokens de dispositivo en Android siempre empiezan por APA91, así que no los pierdas de vista en LogCat ;)

A continuación, tenemos que añadir algo de código para manejar una notificación entrante. Subclasificamos la clase WakefulBroadcastReceiver donde el método onReceive es llamado cada vez que recibimos una notificación.

A partir de ahí, el servicio wakeful inicia la clase GcmMessageHandler y realiza una única replicación pull. El servicio wakeful se ejecuta incluso si tu aplicación se está ejecutando en segundo plano. Así, tu aplicación mostrará los nuevos datos cuando se abra.

Fíjate que estamos usando el escuchador de cambios de replicación para que nos notifique cuando haya terminado y para apagar el servicio de vigilia.

Eso es todo lo que tenemos que hacer en el lado de Android para manejar la notificación de sincronización.

Guardar las fichas de los dispositivos

Ahora podemos almacenar el token de dispositivo en el documento de perfil de usuario. Cada usuario puede estar conectado a más de un dispositivo a la vez por lo que debemos almacenar cada uno de ellos. El documento de usuario tendrá este aspecto:

En la siguiente sección, hablaremos sobre cómo añadir lógica de aplicación adicional a Sync Gateway utilizando la fuente de cambios.

La pasarela de sincronización cambia de fuente

En /base de datos/cambios devuelve una lista ordenada de los cambios realizados en los documentos de la base de datos. Este endpoint forma parte de CouchDB spec y tanto Couchbase Lite Listener como Sync Gateway lo implementan.

Es muy fácil conectarse a la fuente de cambios de Sync Gateway para añadir lógica adicional al back-end como, en nuestro caso, el envío de notificaciones push.

Puede utilizar cualquier biblioteca que implemente la api de alimentación de cambios:

De todos los parámetros disponibles en la cadena de consulta, las más importantes en nuestro caso son:

  • feed=continuous para garantizar que recibimos los cambios inmediatamente
  • since=ahora para obtener los cambios desde el momento actual, de lo contrario registrará todos los cambios desde que se creó la base de datos.

Por último, centrémonos en la última pieza del rompecabezas: dado un cambio de documento del feed de cambios, necesitamos obtener los documentos del perfil de usuario "interesado" en ese cambio porque tienen las fichas de los dispositivos.

Cambios Feed → GCM

En ToDoLite, existen 3 tipos de documentos: un perfil, una lista y una tarea. El documento de tarea contiene una referencia a la lista a la que pertenece y una lista tiene un propietario y una matriz de miembros.

Cuando un documento de tarea o un documento de lista cambia, nos gustaría notificar al propietario y a los miembros de esa lista. Hay dos tipos de eventos que nos gustaría manejar:

1. Un evento de cambio de documento de lista:

  • obtener el documento de perfil del propietario
  • obtener el documento de perfil de cada miembro

2. Un evento de cambio de documento de tarea:

  • obtener el documento de la lista a la que pertenece
  • siga los mismos pasos que en 1)

Con los tokens de dispositivo recuperados, el último paso es enviar una petición a los servidores de Google Cloud Messaging con nuestra API Key y el payload de la notificación. También puedes encontrar muchas librerías en GitHub que simplifican la interacción con los servidores de GCM:

Conclusión

El uso de Google Cloud Messaging para activar la obtención de datos desde el lado del servidor puede proporcionar una gran experiencia de usuario sin ninguna sobrecarga adicional de batería y uso de red.

Siga las léame instrucciones para ejecutar la demo de ToDoLite.

Me encantaría saber cómo utilizas las notificaciones de Google Cloud Messaging en tu aplicación. Házmelo saber en los comentarios.

Más lectura:

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Author

Posted by James Nocentini

James Nocentini es el escritor técnico encargado de la documentación de Couchbase Mobile. Anteriormente, trabajó como Developer Advocate y antes de eso como desarrollador front-end para HouseTrip. También disfruta escribiendo tutoriales de Android para raywenderlich.com en su tiempo libre.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.