iOS Notifications
Teorí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!
Notificaciones
Notificaciones 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 Locales
App 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 Locales
Programació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
Manejo
Con 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ón
Manejo
¡¡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 Push
Registro, 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: Seguridad
Mecanismo 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: Seguridad
Mecanismo 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.
DEMO
Generació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: info@mrcalonso.com
¡Gracias!

iOS Notifications