ios notifications

40
iOS Notifications Teoría, programación, registro, envío, recepción, manejo, etc...

Upload: carlos-alonso-perez

Post on 16-Apr-2017

219 views

Category:

Engineering


0 download

TRANSCRIPT

iOS NotificationsTeoría, programación, registro, envío, recepción, manejo,

etc...

¿Qué es una notificación?

• Comunicación oficial y con las formalidades preceptivas de una resolución.

• Noticia veraz de algo.

RAE, 2005

¿Qué es una notificación?

¿Qué es una notificación?

Mecanismo que tienen las aplicaciones móviles que no se están ejecutando en primer plano para indicar al usuario que tiene alguna información para él.

¿Cómo se muestran?

¿Y luego?

¡Empezamos!

NotificacionesNotificaciones locales y remotas en profundidad

Propósito

Permitir a una aplicación informar al usuario que tiene algo para él.

Casos prácticos

Notificaciones locales

• Almacenadas y entregadas por el propio sistema operativo.

• Útiles para aplicaciones tipo calendarios, recordatorios, temporizadores, etc...

• Límite de 64 notificaciones programadas por aplicación.

Notificaciones LocalesApp iOS

App iOS

Programación

Entrega

Notificaciones remotas

• Conocidas como notificaciones Push.

• Almacenadas por un servidor propio.

• Enviadas por internet (Wi-Fi, 3G, ...).

• Entregadas por APNs al dispositivo.

• Útil para aplicaciones y/o juegos con interacción entre usuarios.

Push vs. Pull design

Client Server...

Client Server

Pull

Push

Notificaciones Push

App

iOS

Server

APNs

Notificaciones LocalesProgramación, recepción y manejo

Calentamiento

• Crear una nueva aplicación iOS.

• Cuando arranque debe mostrar una pantalla con un sólo botón.

Programación

Recepción

ManejoCon la aplicación abierta (foreground o background)

Con la aplicación cerrada...

Finalizando...

• Completar la aplicación para que cuando se reciba una notificación se vaya directamente a una pantalla que muestre los detalles de esa notificación.

• Debe funcionar tanto si la aplicación esta en background, foreground o cerrada.

... y esto?

Badge

AsignaciónManejo

¡¡Asigna directamente el valor al badge!!

Badge

Finalizar la aplicación de ejemplo añadiendo funcionalidad para poner a cero el badge cuando la notificación sea ‘leída’.

Puesta en común

• ¿Cómo diseñaríais una aplicación de recordatorios basados en fechas?

• El badge debe indicar exactamente el número de tareas pendientes

Conclusiones

• No se puede controlar el badge 100%, habrá que actualizarlo desde la app siempre que sea posible.

• La funcionalidad de nuestra aplicación no puede depender de la notificación, ya que ésta puede no recibirse o ser ignorada.

Notificaciones PushRegistro, envío, recepción y manejo

Notificaciones Push

App

iOS

Server

APNs

APNs

• Siglas de Apple Push Notificacion service.

• ‘Piedra Angular’ del sistema de Notificaciones Apple.

• Recibe y distribuye las notificaciones a sus destinatarios.

• Esa distribución es un servicio PUSH.

¿Servicio Push?

• ¿Qué es?

• ¿Cómo se consigue?

• ¿Qué ocurrirá con la notificación si el teléfono está apagado?

• ¿Y si no tiene internet?

APNs: SeguridadMecanismo 1: Seguridad basada en certificados digitales para todas las

comunicaciones.

Aseguramiento de la conexión dispositivo - APNs Aseguramiento de la conexión server - APNs

APNs: SeguridadMecanismo 2: Seguridad basada en un token único que identifica a cada

dispositivo.

Generación y distribución del token Notificación

APNs: Seguridad

• Servidor

• Certificado proporcionado por Apple.

• Token de los dispositivos.

• Aplicación Cliente

• Certificado proporciondo por Apple (code sign).

• Haber enviado su token al servidor.

DEMOGeneración de certificados, configuración del app, ...

APNs: Otros servicios

• Servicio de información (feedback) que indica los dispositivos que rechazaron notificaciones.

• Política de almacenamiento y reenvío (store and forward), si el destinatario no se encuentra conectado.

Calentamiento

• Crear una nueva aplicación iOS que tenga un sólo botón en pantalla.

• Cuando arranque debe mostrar una vista oscurecida, tapando el botón y un UIActivityIndicator en el medio girando constantemente y un mensaje de espera.

• La aplicación debe funcionar en el dispositivo real, no solo en el simulador.

Registro APNs

• Cuando se complete el registro, la vista de carga debe desaparecer.

• El botón debe habilitarse/deshabilitarse dependiendo de si el registro fue correcto o no.

Solicitando notificaciones

• El botón de la pantalla servirá para solicitar notificaciones a un provider.

• API del provider:

• POST http://mimo-apns.herokuapp.com/users/greet

• Body(JSON): {“name”: “<nombre>”, “token”:”<token>”}

• El token debe contener sólo números y letras, no espacios en blanco ni otros caracteres.

• Pista: Para asegurarnos de que el provider interpreta el body como JSON se debe especificar la cabecera “Content-Type” con “application/json”

Solicitando notificaciones

Carlos Alonso Pérez Developer

Twitter: @calonso LinkedIn: mrcalonso Mail: [email protected]

¡Gracias!