Seleccionar página

Bueno, pues después de un largo tiempo, aquí estamos otra vez para hablar sobre Notificaciones Push en Android.

Vamos por fin a cerrar el círculo hablando sobre la parte del cliente y su implementación.

En los post’s anteriores (Introducción e Implementación del Servidor) dimos las pautas a seguir para el uso del GCM y para implementar desde la parte del servidor todas las funciones necesarias para poder recibir y enviar notificaciones push.

Ahora vamos a ver como recibirlas en nuestro dispositivo Android y como gestionarlas. Vamos a dividirlo en dos fases.

En la primera vamos a hablar de como registrar nuestro dispositivo en el GCM y la segunda como recibir notificaciones.

Registrar el dispositivo Android en el GCM

Para el registro del dispositivo podemos hacerlo la primera vez que el dispostivo se registre en nuestra aplicación o la primera vez que la ejecute.

Para ello debemos primero de comprobar si el dispositivo tiene instalado Google Play Services. A continuación, comprobamos si ya hemos registrado el dispositivo en el servicio GCM y en caso negativo procedemos a su registro.

Vamos a ver en unas capturas de pantalla el código comentado que realiza esta parte.

En esta primera captura se muestra como en la función principal comprobamos si tenemos el play services instalado. Posteriormente en caso afirmativo procedemos a comprobar si el dispositivo ha sido ya registrado.

En caso contrario ejecutamos la clase que va a registrar el dispositivo.

En la siguiente imagen se muestran las funciones que comprueban si el tenemos registrado el dispositivo correctamente.

Por último, mostramos la clase que va a registrar nuestro dispositivo en el GCM. Si nos fijamos le pasamos el SENDER_ID, que si recordamos de los post’s anteriores es el id de proyecto que obtuvimos el cuál nos va a relacionar la api key con el dispositivo para que el GCM sepa a que dispositivos van los mensajes.

Posteriormente a esto, podríamos registrar en nuestro servidor el nuevo usuario. Podríamos enviarle el nombre del usuario del dispositivo y el TOKEN que es el registration id que devuelve el GCM cuando registra. Con este token le diremos al GCM a que dispositivos le enviaremos el mensaje, como se vió en el anterior post.

Ahora ya sólo queda trabajar con la recepción de las notificaciones push.

Para ello necesitamos hacer uso de las clases GCMBroadcastReceiver y GCMIntentService.

GCMBroadcastReceiver y GCMIntentService

La clase GCMBroadcastReceiver es sencilla y no es necesario en principio que hagamos nada con ella, por lo que podríamos simplemente copiar y pegar el código de la siguiente captura.

Sin embargo, a la clase GCMIntentService se le puede sacar mucho más jugo. En ella podemos extraer los datos que van a venir en la notificación. Además podemos decidir, por ejemplo, que si estamos dentro de la aplicación no es necesario que la notificación aparezca en nuestra barra de notificaciones si no que puede abrirse un Dialog que nos avise.

A continuación y haciendo uso de la siguiente captura vamos a ver algunas de las cosas que se pueden hacer.

En esta primera parte de la clase podemos ver como se captura la notificación a través del método onHandleIntent.

Empezando por el principio, vemos que tenemos una variable llamada NOTIF_ALERTA_ID, esta variable nos va a ayudar a que una vez que entremos en la app para ver la notificación podamos eliminarla de nuestra barra de notificaciones. En la clase que llamemos debemos poner al principio lo siguiente:

NotificationManager mNotificationManager =    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

mNotificationManager.cancel(“BIEN”, 1);

Volvamos pues al GCMIntentService después de este inciso.

Dentro de la función onHandleIntent lo primero que hacemos es captar la notificación y extraer el data que enviamos desde nuestro servidor.  A continuación vamos a ver en que tarea estamos, lo cuál nos va a ayudar en lo siguiente.

Si el mensaje no viene vacío ni incorrecto, tenemos dos opciones como comenté anteriormente.

  1. Estar dentro de la aplicación.
  2. Estar fuera de la aplicación.

Si estamos en el caso uno, entonces la condición que nos dice que el nombre del paquete es com.appandweb.blog será cierta por lo que vamos a lanzar un Dialog que informe al usuario.

Como vemos aquí, lo que hacemos es lanzar una actividad sincronizada que se llama DialogNoti, la cuál extiende de Activity y podemos tratarla como una actividad más. Aunque lo ideal, es hacer un layout como un dialog personalizado y mostrar el mensaje. Para que se muestre como un Dialog en el Manifest DialogNoti tendrá la siguiente característica:

 

android:theme=“@android:style/Theme.Dialog”

Ahora si estamos en el caso dos, lo que vamos a hacer es mostrar la notificación en la barra de notificaciones que se hace como en la siguiente captura de pantalla.

 

Como podemos ver en la captura anterior, le pasamos al notification manager los datos necesarios para poder cancelar posteriormente la notificación de nuestra barra de herramientas una vez que estemos dentro de la app como he comentado anteriormente.
Por último, debemos de rellenar el AndroidManifest con los datos necesarios para que funcionen las notificaciones.

Y con esto damos por finalizada la explicación de como utilizar las notificaciones push en Android. Esperamos que os pueda servir de ayuda y estamos abiertos a cualquier tipo de duda o cuestión.
Pronto empezaremos a trabajar en el siguiente post.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies