APP – AirsoftGames Futura Funcionalidad: Notificaciones ( Tutorial )

Hola,

  Hace un tiempo que quería aprender a usar el sistema de notificaciones de Android pero no sabía como usarlo ni para que aplicarlo a la aplicación pero hoy, se me ha ocurrido que estaría bien que la aplicación revisara de manera automática(configurable) las partidas de nuestros foros preferidos y que nos lo notificara, en caso de encontrar nuevos eventos, en la barra de estado.

Asi que me he puesto a ello y he decidido compartirlo con vosotros por si os ayuda de cara a realizar algo similar :).

  En principio, iba a crear un servicio que ejecutara tal chequeo en segundo plano cada x tiempo pero, he visto que no hacía falta gracias a que ya existe una clase para tal objetivo llamada ScheduledExecutorService que hace justo eso, crear un pool de hilos que se ejecutan cada x tiempo a través de un proceso runnable.

Asi que una vez salvado este escollo, solo quedaba usar el sistema de notificaciones de Android. Me ha sorprendido gratamente, como suele ser habitual en este sistema, ver lo bien montado que Google tiene el sistema para la gestión de notificaciones y, lo cómodo que es crear y gestionarlas :).

Cada notificación:

  • Tiene una información breve que es la que se muestra cuando surge.
  • Tiene una información mas detallada que se muestra cuando el usuario despliega dicha notificación.
  • Se le asocia un tipo especial de Intent, PendingIntent, que lo que hace es contener la acción, Intent, que se desea que se lance una vez el usuario selecciona la notificación de la barra de estado del terminal. Si no se quiere que se lance acción alguna, no hay mas que no pasarle ninguna accion al objeto PendingIntent. PendingIntent poseé ademas una serie de flags que nos permiten personalizar su comportamiento.
  • Posee una flags que permiten personalizar desde el sonido hasta el color de la luz de notificación.

Una vez tenemos la notificación, no hay mas que enviarla al servicio de notificaciones para que la muestre al usuario,  asignándole un ID por si quisiéramos luego hacer referencia a ella.

Como veis, bastante completo y sencillo.

Lo único que he encontrado extraño, ha sido el caso de que una aplicación requiera mostrar n notificaciones diferentes, cada una ejecutando una acción con unos parámetros determinados. En dicho caso, siguiendo las instrucciones del SDK no funciona. Para arreglar esto, se ha de utilizar el método setAction(String action) del Intent que lanza el PendingIntent, indicando en “action” un valor diferenciante para que así el servicio de notificaciones pueda distinguir entre ellas. Si no se hace de esta manera, cuando el usuario pulse en cualquiera de las notificaciones de nuestra aplicación, Android ejecutará la acción de la primera notificación creada, obviando el resto :(.

Bueno, espero que os sirva de ayuda este mini-howto y vereis funcionando esto en la siguiente versión de la aplicación :).

Un saludo, ciao.

Leave a Reply

Your email address will not be published. Required fields are marked *