En el WWDC de este año, Apple destapó varias cartas con las que le apunta a continuar creciendo y fortaleciendo su ecosistema.
Por un lado está la integración entre dispositivos y/o sistemas operativos (iOS – OSX Yosemite), en la que están poniendo gran empeño. Esto es, la aplicación del término “continuidad” o el poder empezar una tarea en el iPhone y poder continuarla de forma transparente en el iPad o en el Mac (mejor conocido en los bajos mundos como ubicuidad) o simplemente escoger desde qué dispositivo quiero recibir una llamada.
Por el otro lado, está la integración entre aplicaciones o extensiones, que a través de un API nos permite tener funciones de nuestra aplicación para ser usadas desde otras aplicaciones.
Extensiones de aplicaciones en iOS8 y OS X
Los tipos de extensiones que Apple pone a nuestra consideración son:- Share (iOS and OS X) – Postear a un sitio web o compartir contenido con otros.
- Action (iOS and OS X) – Manipular o ver contenido dentro de el contexto de otra aplicación.
- Photo Editing (iOS) – Editar una foto o video dentro de la aplicación de Fotos
- Today (iOS and OS X) – Notifications Center Widgets para mostrar actualizaciones o tareas rápidas dentro de la vista de Hoy
- Storage Providers (iOS) – Selecionar un documento del conjunto de documentos a los cuales se tiene acceso desde la aplicación actual.
- 3rd Party Keyboards (iOS) – Para reemplazar el teclado del sistema con un teclado personalizado (podemos usarlo en todas las apps!)
- Las extensiones son diferentes de la aplicación en sí: Aunque para distribuir una extensión se debe incluir dentro de una app, cada extensión es un binario separado que corre independiente de su app. Por ello, para crear una extensión, hay que agregar un “Target” a la aplicación.
- El ciclo de vida y el ambiente de las extensiones es diferente al del app: El contexto de la extensión está dado por la aplicación “host” (aplicación que permite que un usuario seleccione una extensión). Ésta misma es la encargada de terminar el ciclo de vida cuando la extensión envía una solicitud en respuesta a la acción del usuario (dando un corto tiempo de terminar tareas en background).
- Comunicación: Mientras la extensión se está ejecutando, sólo tiene comunicación directa con la app “host”. No hay comunicación entre la extensión y la app que la contiene (normalmente, ni siquiera está corriendo mientras la extensión se ejecuta). Además, la app y la app “host” no se comunican de ninguna manera.
- Datos: La extensión y la app pueden acceder a datos en contenedores compartidos definidos. (hay que tener cuidado con la sincronización entre los datos presentados/modificados por las extensiones y las app que las contienen).
- Memoria: Los límites para ejecutar extensiones son significativamente menores a los limites impuestos para una app en ejecución. Algunas extensiones pueden tener límites inferiores de memoria que otras, por ejemplo los widgets, debido a que los usuarios pueden tener múltiples en ejecución al mismo tiempo.