servicios ios - ua · //icloud query: busca si hay un fichero llamado "text.txt" en...
TRANSCRIPT
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
© 2012-13 Depto. Ciencia de la Computación e IA
Servicios iOS
Sesión 2: iCloud y Notificaciones push
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Índice de contenidos• iCloud• ¿Qué es y cómo funciona?• Ejemplos de uso en aplicaciones móviles• Integrando iCloud
• Notificaciones push• ¿Qué son y cómo funcionan?• Plataformas externas: Urban Airship• Integrando notificaciones push
2
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
iCloud• iCloud• ¿Qué es y cómo funciona?• Ejemplos de uso en aplicaciones móviles• Integrando iCloud
3
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
iCloud: ¿Qué es y cómo funciona? (1)• Servicio para almacenar documentos y datos en la nube.• Posibilidad de acceso a todo lo almacenado desde cualquier
dispositivo iOS.• Ahora integrado en Mountain Lion (OS X 10.8)• Cada usuario deberá tener una cuenta iTunes.• Todos los dispositivos deberán estar configurados con la misma
cuenta.• La sincronización será automática e invisible al usuario.
4
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
iCloud: ¿Qué es y cómo funciona? (2)• Ventajas de su uso para los desarrolladores:• No hará falta contratar un servidor externo que sirva de
almacenamiento para datos de nuestra aplicación -> Ahorro de costes.
• No tendremos que programar una API de acceso a servicios externos, Apple lo hace por nosotros -> Menor tiempo de desarrollo.
• Integración con Core Data.
5
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
iCloud: ¿Qué es y cómo funciona? (3)• Restricciones de uso:• Límite de capacidad: Máximo 5 GB. Uso responsable por parte del
desarrollador.
• Sincronizaciones: Resolución de conflictos.
• Configuración de las autorizaciones (entitlements) en el portal de desarroladores y en XCode.
• Compatibilidad si no hay iCloud: El desarrollador debe de gestionar este caso.
• No compatible al 100% con el simulador de iPhone.
6
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
iCloud: ¿Qué es y cómo funciona? (4)• Existen dos formas de implementar iCloud:• Almacenamiento de documentos: Almacenamiento de ficheros de
cualquier tipo en la nube.• Almacenamiento de datos tipo clave-valor: Almacenamiento de
objetos tipo diccionario (clave-valor). Máximo tamaño permitido: 64KB por objeto.
7
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
iCloud• iCloud• ¿Qué es y cómo funciona?• Ejemplos de uso en aplicaciones móviles• Integrando iCloud
8
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
iCloud: Ejemplos de uso• Aplicaciones de gestión documental: Compartir documentos de
texto. Ej.: Pages (Apple), TextEdit (Apple)...
• Aplicaciones de fotografía: Compartir fotos que hagamos con el iPhone o iPad entre dispositivos. Ej: iPhoto (Apple).
• Aplicaciones con calendarios: Compartir eventos de calendario entre varios dispositivos.
• Aplicaciones de gestión de tareas o recordatorios: Compartir tareas entre varios dispositivos.
• Juegos de distintos tipos: Almacenar datos de niveles, puntuaciones, etc.. entre dispositivos.
9
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
iCloud• iCloud• ¿Qué es y cómo funciona?• Ejemplos de uso en aplicaciones móviles• Integrando iCloud
10
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando iCloud (1)• En el Provisioning Portal de Apple:• Crear un nuevo App ID.• Configurar la aplicación para que permita el acceso a iCloud.
11
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando iCloud (2)• Configuraciones previas en XCode:• Campo Entitlements: Escribimos el App ID en los campos
correspondientes.• De esta forma indicamos a Apple que esta aplicación será
compatible con iCloud.
12
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando iCloud (3)• Código que inicia iCloud• En el método didFinishLaunchingWithOptions de la clase AppDelegate.
• Indicamos en la URL el App ID completo.
13
// (1) Iniciamos iCloudNSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:@"3S952AGH46.ua.es.jtech.ejemploicloud"];
if (ubiq) { NSLog(@"AppDelegate: Entra en iCloud!"); [self cargaDocumento];} else { NSLog(@"AppDelegate: No hay acceso a iCloud (puede que estés en el simulador o que no esté configurado correctamente el dispositivo");}
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando iCloud (4)• Buscamos el documento (tipo fichero) en el iCloud del usuario:
14
- (void)cargaDocumento { //iCloud query: Busca si hay un fichero llamado "text.txt" en iCloud. NSMetadataQuery *query = [[NSMetadataQuery alloc] init]; //Indicamos el ámbito de búsqueda (ámbito de documentos) [query setSearchScopes:[NSArray arrayWithObject: NSMetadataQueryUbiquitousDocumentsScope]]; //Creamos un predicado y lo asignamos a la query NSPredicate *pred = [NSPredicate predicateWithFormat: @"%K == %@", NSMetadataItemFSNameKey, @"text.txt"]; [query setPredicate:pred]; //Creamos una notificacion que se ejecute cuando la query haya terminado // (esta se ejecutará en segundo plano de forma asíncrona) [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:query]; [query startQuery]; }
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando iCloud (5)• API de iCloud: https://developer.apple.com/icloud• ¡Recomendable su lectura!
• iCloud y Core Data: No muy estable actualmente.
• En contínua mejora...
15
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Notificaciones push• Notificaciones push• ¿Qué es y cómo funciona?• Plataformas externas: Urban Airship• Integrando notificaciones push
16
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Push: ¿Qué es y cómo funciona? (1)• Mensajes que se muestran en el dispositivo en forma de
notificación.• Objetivo: evitar la ejecución de procesos recurrentes en el
dispositivo -> Los procesos se ejecutan en el servidor.• Uso en aplicaciones como WhatsApp o Twitter.
17
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Push: ¿Qué es y cómo funciona? (2)• Se podrán recibir distintos tipos de mensajes:• Mensajes de texto corto.• Sonidos.• Número de eventos en el icono de la aplicación (badge)• Combinación de lo anterior.
• Campañas de marketing• Incitar al usuario hacer uso de la aplicación.• Publicitar eventos o cualquier cosa a los usuarios de nuestra
aplicación.• OJO: Evitar el uso desmesurado o fraudulento.
• Necesitaremos un servidor propio o el uso de un servicio externo.
18
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Push: ¿Qué es y cómo funciona? (3)• Esquema de funcionamiento de la tecnología:
19
Pasos:
1) El usuario acepta recibir notificaciones push.
2) Almacenamos el ID del dispositivo del usuario en nuestro servidor (en BD).
3) ... Nuestro servidor realizará los procesos internos....
4) Si nuestro servidor quiere enviar una notificación al usuario: envía un mensaje JSON al servidor de Apple (APS). Certificado SSL.
5) El APS enviará la notificación push al dispositivo del usuario.
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Requerimientos para usar notificaciones• Un dispositivo (iPhone o iPad). Las notificaciones NO funcionan
sobre el simulador de XCode.
• Una cuenta activa de desarrollador Apple ya que deberemos de configurar un App ID, generar un certificado SSL, etc.
• Un servidor propio, será el que envie los mensajes JSON al servidor de Apple. • El servidor deberá de cumplir con unos requerimientos complejos,
necesitaremos un VPS (servidor privado virtual).• Ahorrar posibles costes y configuraciones: contratar un servicio
externo -> Ejemplo: Urban Airship, Parse...
20
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Notificaciones push• Notificaciones push• ¿Qué es y cómo funciona?• Plataformas externas: Urban Airship• Integrando notificaciones push
21
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Urban Airship (1)• Plataforma online para desarrolladores móviles (iOS, Android,
Blackberry...).• Ofrece servicios de in-app y de notificaciones push.• Ofrece una API bastante completa y sencilla de usar.• Ventajas de su uso:• Ahorro en costes de configuración de servidor y su mantenimiento• Ahorro en costes de implementación de todo el servicio en la
aplicación.• Servicio “extra” de notificaciones push ricas (con imágenes,
videos, etc...).• Ideal para empresas pequeñas o desarrolladores independientes.• Disponibilidad del portal online para enviar notificaciones desde un
formulario (para testeo, por ejemplo) o mediante una API.• Sistema multiplataforma.
22
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Urban Airship (2)
23
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Notificaciones push• Notificaciones push• ¿Qué es y cómo funciona?• Plataformas externas: Urban Airship• Integrando notificaciones push
24
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando notificaciones push (1)• Configurar un App ID en el Provisioning Portal.
• Generar un certificado SSL (desarrollo o producción).
• Configurar el lado del servidor con el certificado.
• Implementar la recepción de notificaciones en la aplicación.
25
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando notificaciones push (2)• Registramos el dispositivo para que permita recibir
notificaciones de nuestra aplicación.• En el método didFinishLaunchingWithOptions de la clase AppDelegate.
26
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando notificaciones push (3)• Obtenemos el token (ID) del dispositivo para almacenarlo en
nuestro servidor.
27
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *deviceTokenStr = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""] stringByReplacingOccurrencesOfString: @" " withString: @""]; NSLog(@"deviceToken: %@", deviceTokenStr); // El token deberemos de enviarlo a nuestro servidor o a un servicio externo
}
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando notificaciones push (4)• Permisos para recibir notificaciones.
28
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
Integrando notificaciones push (5)• Enviando una notificación por Urban Airship...
29
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles
Servicios iOS © 2012-13 Depto. Ciencia de la Computación e IA iCloud y Notificaciones push
• ¿Preguntas...?
30