notificaciones push

21
Instructor: Rodrigo Iván Fonseca Daza

Upload: david-vanegas

Post on 09-Dec-2015

245 views

Category:

Documents


1 download

DESCRIPTION

Material Android

TRANSCRIPT

Instructor: Rodrigo Iván Fonseca Daza

Mensajes entrantes de chat, correo…

Actualizaciones del sistema

Finalización de un proceso

Ícono

Título

Contenido

Una actividad para abrir

Intent intent = new Intent(this, ListaLugares.class);

PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);

// Construir notificación

Notification n = new NotificationCompat.Builder(this)

.setContentTitle("Lista de lugares actualizada")

.setContentText("Ver lista de lugares")

.setSmallIcon(R.drawable.ic_launcher)

.setContentIntent(pIntent)

.setAutoCancel(true)

.build();

NotificationManager notificationManager =

(NotificationManager) getSystemService(NOTIFICATION_SERVICE);

notificationManager.notify(0, n);

Las notificaciones pueden tomar varios estilos ◦ InboxStyle

◦ BigTextStyle

// Preparar el Intent de la notificación

Intent intent = new Intent(this, ListaLugares.class);

PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);

// Construir notificación

Notification n = new NotificationCompat.Builder(this)

.setStyle(

new NotificationCompat.InboxStyle()

.addLine("Se ha actualizado la lista de lugares porque agregaron mucnos más").addLine("Esta es una línea de prueba"))

.setContentTitle("Lista de lugares actualizada")

.setSmallIcon(R.drawable.ic_launcher).setContentIntent(pIntent)

.setAutoCancel(true).build();

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

notificationManager.notify(0, n);

Al generar una notificación, se utiliza un identificador único.

Este identificador se puede utilizar para actualizar la notificación, si ésta es visible.

El método cancel() se puede utilizar en cualquier momento, si la notificación sigue siendo visible.

La aplicación debe ser capaz de recibir ofertas relacionadas con lugares específicos.

Estas ofertas deben llegar, incluso cuando el usuario está por fuera de la aplicación.

Servicio de mensajería instantánea de Google en la nube.

Permite la comunicación entre un servidor y dispositivos móviles, en ambos sentidos.

Nosotros usaremos GCM para enviar mensajes de un servidor a varios dispositivos móviles.

Se crea un proyecto en la consola de desarrolladores de Google, que tendrá identificadores únicos.

Se registran los dispositivos móviles que tengan la aplicación instalada.

Desde el servidor, se envían mensajes a GCM, y de aquí son enviados a todo los dispositivos que estén registrados. ◦ Esto hace posible que los mensajes sean recibidos

incluso cuando las aplicaciones están cerradas

Crear un proyecto Android en la consola de desarrolladores de Google

Implementar un servidor capaz de enviar mensajes PUSH, y de guardar un registro de los dispositivos que se registran en la aplicación

Montar un mecanismo para generar un id de registro de la aplicación para cada dispositivo

Construir un ‘Service’, que esté atento a la llegada de mensajes PUSH

En el ‘Service’ establecer una serie de acciones relacionadas con la llegada de mensajes PUSH

Al crear el proyecto, se genera un número de proyecto ◦ Más adelante, se utilizará como ‘Sender-id’

Adicionalmente, se debe crear una llave para servidores, que permita que servidores externos tengan acceso al proyecto ◦ API-Key

Debe existir una entidad capaz de enviar mensajes a GCM

Se asume que estos servidores almacenan los id de registro de los dispositivos que tengan instalada la aplicación

Dos mecanismos: HTTP y CCS

En la primera instalación, se debe registrar el dispositivo, para hacerlo capaz de recibir mensajes

Para hacer este registro, se necesita: ◦ Un identificador de quien envía los mensajes

(Sender-id) ◦ La versión de la aplicación

El id de registro se debería guardar a nivel local

También debería guardarse en el servidor que envía los mensajes

Un Service puede funcionar, incluso cuando la aplicación está cerrada

Es ideal para estar pendiente de los mensajes que llegan desde el servidor, en cualquier momento

Tipo especial de Service, recomendado para la recepción de mensajes PUSH

Debe implementar el método onHandleIntent()

Los ‘Intents’ que soliciten la ejecución del servicio son procesados uno por uno, en orden de llegada

Entidad para manejar eventos asociados al sistema ◦ Boot

◦ Cargador conectado

◦ Cargador desconectado

◦ Batería baja

◦ Batería con carga

◦ …

public class MyReceiver extends

BroadcastReceiver {

@Override public void onReceive(Context

context, Intent intent) {

// assumes WordService is a registered

service Intent intent = new Intent(context,

WordService.class);

context.startService(intent); }

}

Un tipo especial de BroadcastReceiver

Permite que el Service requerido por el BroadcastReceiver solicite que el dispositivo esté encendido únicamente cuando se esté procesando la información

Generalmente, se genera una notificación relacionada con el mensaje que acaba de llegar

Sin embargo, se podría ejecutar cualquier otra tarea, incluso si el usuario no es consciente de ello.