iOS 8 y OS X 10.10 Yosemite: Extensibility

Uno de los anuncios más interesantes realizados por Craig Federighi durante la WWDC de 2014, al hablar de iOS 8 pero también de OS X 10.10 Yosemite fue Extensibility. Extensibility permitiría a los desarrolladores ampliar las capacidades de las aplicaciones… pero no tanto como aparentemente pudimos pensar en un principio.

Craig Federighi  presenta Extensibility durante la WWDC

Permitir que las aplicaciones hablen entre ellas aunque sea a través del sistema operativo es un gran avance, pero Apple ha puesto limitaciones a los tipos de comunicación que pueden establecerse entre aplicaciones, de forma que por ejemplo, no puedes reemplazar una de las aplicaciones por defecto de iOS 8, como Mail, por otro cliente de correo usando Extensibility. De hecho, las opciones disponibles no cubren todas las posibles interacciones que a desarrolladores y usuarios nos gustaría.

Extensibility cubre las siguientes interacciones:

  • Extensiones del día (Today extensions): más conocidas como Widgets, están destinadas a mostrar información en la pestaña Hoy en el Centro de Notificaciones.
  • Extensiones para compartir (Share extensions): permiten la publicación de fotos, enlaces u otros archivos desde una aplicación a un servicio en línea. Esto permite por ejemplo publicar fotos en Pinterest desde cualquier aplicación o subir archivos a Dropbox o OneDrive desde cualquier aplicación. Las versiones anteriores de iOS limitaban la publicación de este tipo de información a Facebook y Twitter, pero ahora daremos un paso de gigante pudiendo enviar información desde cualquier aplicación a un servicio, siempre que este servicio cree una extensión para iOS 8.
  • Extensiones de acción (Action extensions): permiten manipular o visualizar contenido dentro del contexto de otra aplicación. Explicado para humanos, permiten utilizar ciertas capacidades de una aplicación dentro de una segunda aplicación. Por ejemplo, puedes estrar trabajando con un texto que tiene una parte o palabras en un idioma que no conoces y puedes acceder a los servicios de traducción de una aplicación de terceros directamente desde la aplicación, sin la necesidad de copiar las palabras, llevarlas a la aplicación, traducirlas y luego volverlas a copiar y traerlas de nuevo a la aplicación con la que estabas trabajando.
  • Extensiones de fotografía (Photo extensions): permiten acceder desde la aplicación Photos (pero por extensión, también otras aplicaciones) el acceso a aplicaciones de terceros para editarlas, corregirlas o manipularlas.
    Por ejemplo, si estás trabajando con una imagen dentro de un documentos de Pages y necesitas corregirla, reenfocarla y ajustar su color o recortarla, podrás hacerlo aprovechando las capacidades de una aplicación de terceros que dispone de una extensión que permite comunicar a Pages con la misma. No es un caso real, porque para que una aplicación pueda usar Extensiones, debe estar preparada para ello (y deberemos ver nuevas versiones de muchas aplicaciones que advertirán que escuchan u ofrecen servicios de Extensión) y ser capaz de escuchar que opciones hay disponibles en el sistema para poder trabajar con ellas, pero si es un escenario muy explicativo de lo que vas a poder encontrar a la hora de trabajar con iOS 8.
  • Extensiones de proveedores de almacenamiento (Storage Provider extensions): El Santo Grial de los que trabajamos en la Nube con diferentes proveedores. Permitirán que una aplicación, cualquiera, sea capaz de acceder a diferentes servicios de almacenamiento en la nube. Así, directamente podrás guardar desde Pages Numbers o Keynote documentos en Dropbox (o recuperarlos de allí), permitiendo una flexibilidad a la hora de trabajar muy importante. 
  • Extensiones para teclados personalizados (Custom keyboard extensions): que permitirán reemplazar el teclado de Apple por teclados de terceros con sus propias características y formas de trabajo.

¿Cómo vamos a instalar Extensiones de terceros?

Las extensiones, para empezar, se desarrollan dentro de Xcode como si fueran una aplicación más para iOS 8 y se descargan desde la App Store, pero no se descargan como Extensiones. Deben ser aplicaciones que ofrecen un servicio y la conexión para que otras aplicaciones accedan a ese servicio además de algún tipo de funcionalidad al usuario.

Al contrario que Android, los desarrolladores no podrán ofrecer un Widget o un Teclado que se comportan única y exclusivamente como tales, sino que habrá una aplicación con cierta funcionalidad en medio.

Esta funcionalidad, sin embargo, no tiene por que ser una “gran funcionalidad” sino que por ejemplo, podría ser una demostración de las capacidades de la Extensión manipulando archivos o realizando las mismas tareas en documentos nuevos. Por supuesto, la Extensión estará dentro de la aplicación de forma que otras aplicaciones puedan acceder a ella y usarla para manipular la correspondiente información.

Hay una serie de recomendaciones que hace Apple al respecto de Extensibility pero que no son mandatorias: la primera de ellas es que las Extensiones estén diseñadas para complementar el software incluido en iOS 8 por Apple y además, retener el interfaz y funcionalidades básicas. Así un Widget debe parecer un Widget, las extensiones que permitan manipular fotografías deben tener un interfaz que no sea radicalmente diferente al que utiliza Apple, etc. pero al no haber por parte de Apple una obligación en esta parte del acuerdo con los desarrolladores es factible que veamos para iOS 8 un buen montón de extensiones que permiten realizar lo mismo “de forma diferente”.

La gestión de Extensiones

Otro problema es la gestión de las Extensiones y las aplicaciones que las engloban. Lo que está claro es que si una aplicación contiene una Extensión y la borramos, esa extensión dejará de estar disponible en el sistema en cualquiera de sus categorías.

 La gestión de los Widgets se activan y desactivan adicionalmente desde el Centro de Notificaciones, mientras que los teclados se activarán y desactivarán desde la sección Teclados, donde activas teclados de diferentes idiomas o el teclado emoji, en la aplicación Ajustes.

Las Extensiones para fotos o de servicios de almacenamiento solo funcionarán en condiciones específicas, generalmente cuando el usuario acceda a las opciones de abrir o guardar archivos, mientras que las Extensiones para compartir o acciones podrán ser invocadas prácticamente por casi cualquier aplicación, pero los desarrolladores deberán añadir reglas de activación para especificar que tipos de datos van a poder utilizarse usando la Extensión.

Como funciona una Extensión

Aunque las Extensiones van empaquetadas dentro de una aplicación, generalmente funcionan por separado de la aplicación misma. Esto quiere decir que no es necesario abrir la aplicación para que la Extensión sea funcional, sino que las aplicaciones accederán a la Extensión dentro de la aplicación y solo será ésta la que se ejecute.

También, en parte por limitaciones de la memoria disponible en el dispositivo, las Extensiones no se ejecutarán de forma perenne y será purgadas de la memoria de forma muy agresiva. Así, por ejemplo, si hace un rato que no utilizas una Extensión para realizar una tarea, se interrumpirá su ejecución y será purgada de la memoria para evitar, por ejemplo, que una Extensión residente sea el motivo de un consumo excesivo de la batería del dispositivo.

Al respecto de la seguridad

Apple pone mucho interés en la seguridad y especialmente en iOS todo está especialmente compartimentalizado de forma que una aplicación sea incapaz de acceder a los datos de otra para modificarlos. Esa ha sido hasta ahora la política de Apple pero con Extensibility cambia: ahora es factible que una Extensión (que es por defecto, una aplicación aunque esté encerrada dentro de una cáscara que simula – o es – una aplicación) acceda a los datos de una segunda aplicación, si ésta reclama el uso de una Extensión.

¿Cómo funciona entonces? Cada Extensión es un paquete separado (bundle) dentro de la aplicación principal y contiene un ejecutable independiente. Sin embargo, las Extensiones con su ejecutable dentro de un paquete no es una aplicación para el sistema sino que su funcionamiento y los datos que gestionan se realizan a través de System Frameworks, un sistema que define un espacio separado para la ejecución de la Extensión de forma que la manipulación de la información con el ejecutable de la Extensión no se realiza en el mismo espacio de memoria de la aplicación que la ha invocado. A todos los efectos y para el modelo de sandboxes de Apple, las Extensiones son pequeñas sandboxes entre sandboxes mayores que son las aplicaciones y la comunicación entre ellas está reglada, filtrada y securizada.

0 0 votos
Article Rating
Subscribe
Notify of
1 Comment
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
Manel Rives
9 years ago

Y digo yo… entiendo que será posible abrir documentos desde dentro de (por ejemplo) Box con Pages -u otro editor de textos- de forma que no tengamos que enviarlo a Pages para hacer cambios -quedando una copia en Pages, que se sncroniza con iCloud- y devolverlos a Box sustituyéndolo, no?

1
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x