Las extensiones permiten a las aplicaciones iOS 8 ampliar la funcionalidad del sistema operativo. Cory Bohon le muestra lo fácil que es implementar las extensiones.

    Los desarrolladores han querido una forma de extender sus aplicaciones a iOS, y ahora por fin es posible. En iOS 8, las extensiones se ejecutan como un objetivo separado de su aplicación y pueden extender iOS de varias maneras, incluso a través de la vista Hoy del Centro de Notificaciones.

    ¿Qué es una extensión?

    Una extensión es otro objetivo que se encuentra dentro de sus aplicaciones existentes. Tanto la extensión como la aplicación deben estar firmadas con el certificado y el modelo del desarrollador, y contener diferentes identificadores de paquete para la aplicación base y los objetivos de la extensión. Dado que su aplicación no controla la presentación de la extensión, si la aplicación del host (es decir, la aplicación que interactúa con la extensión) se bloquea, no puede afectar a la extensión de su aplicación y viceversa.

    Los tipos de extensiones

    Xcode 6 muestra todos los tipos de extensiones al añadir un nuevo destino.

    Acción

    Una extensión de acción proporciona una acción o un servicio a una aplicación host transformando datos pasados en otro formato, o realizando alguna otra tarea. Un ejemplo de este tipo de extensión es la extensión 1Password en iOS 8 que se puede mostrar desde Safari y que proporciona acceso a tus nombres de usuario y contraseñas desde la aplicación base 1Password.

    Las extensiones de acción están disponibles en una amplia variedad de aplicaciones y tipos de datos, aunque normalmente las verás en Safari. Las extensiones de acción aparecen en la segunda fila de iconos de la Hoja Compartir en una aplicación host.

    Teclado personalizado

    Los teclados personalizados, una de las características más esperadas en iOS 8, permiten que su aplicación base instale una extensión que se puede utilizar en casi cualquier aplicación en lugar de un teclado cuando un usuario edita un campo de texto o una vista de texto.

    Nota: Los teclados personalizados pueden tener acceso a la red, pero ese acceso sólo se puede permitir si el usuario ha habilitado Acceso total para el teclado. Siempre debe decirle al usuario exactamente lo que está haciendo con los datos recopilados por un teclado en red.

    Proveedor de documentos

    Un proveedor de documentos permite que una aplicación host que presente la extensión extraiga datos o los comparta con una aplicación. Los proveedores de documentos podrían convertirse en la próxima gran cosa en iOS al permitir a los usuarios extraer documentos de Dropbox y otros servicios en la nube para editarlos en aplicaciones como Pages, Numbers y Keynote. Además de extraer documentos de su aplicación, la aplicación host también puede guardar documentos en su aplicación a través del proveedor de documentos.

    Una extensión del proveedor de documentos aparecerá en la Hoja Compartir/Guardar de una aplicación host.

    Edición de fotos

    Hay un montón de aplicaciones de edición de fotos disponibles en iOS, pero siempre es una molestia abrir la aplicación, cargar una foto, realizar una edición y, a continuación, volver a guardar la foto en la aplicación Fotos en iOS. Esta extensión permite a los usuarios realizar estas tareas de forma más eficiente.

    Con una extensión de edición de fotos, su aplicación puede anunciarse como una aplicación de edición de fotos, y aparecerá cuando un usuario abra la hoja compartida de una foto en la aplicación Fotos. Cuando se selecciona, la extensión puede cobrar vida, proporcionando su aplicación para editar o cambiar la foto que se pasó sin que el usuario tenga que salir de la aplicación Fotos y abrir su aplicación individual. Esto también funciona en otras aplicaciones host que utilizan el controlador de vista rápida estándar para mostrar imágenes.

    Compartir

    Si su aplicación permite que un usuario publique una foto, un vídeo u otro tipo de documento en su aplicación o servicio, debería estar implementando una extensión compartida. Una extensión compartida aparece en la Hoja Compartir de una aplicación compatible, ofreciendo una foto, un vídeo u otro tipo de documento para que la aplicación pueda compartirla con un servicio en línea, una red social u otra aplicación de estilo compartido.

    Puede escribir su propia interfaz de usuario para mostrársela al usuario al compartir (por ejemplo, al introducir texto), aunque Apple incluye la posibilidad de reutilizar una vista de estilo TweetSheet que permite al usuario especificar algún texto al compartir el tipo de documento.

    Hoy

    El Centro de Notificación es un excelente lugar para ver todas sus notificaciones recientes de un vistazo. En iOS 8 y OS X Yosemite, Apple creó una nueva Vista de Hoy que aparece en el Centro de Notificación, y que ofrece información (como las próximas citas), y es un lugar donde los desarrolladores pueden ampliar su compatibilidad con las aplicaciones mediante extensiones. Puede aprovechar este espacio para anunciar los datos de su aplicación a los usuarios. Un ejemplo de esta extensión es OmniFocus, que ha creado una extensión Today que muestra las próximas tareas de la aplicación base.

    No sea un desarrollador odioso que sólo escribe una extensión Today con un botón para lanzar la aplicación base. Desea asegurarse de que su widget Today proporciona un servicio valioso a los usuarios.

    Advertencias para la implementación de extensiones

    • Las extensiones no pueden, por defecto, compartir datos entre la aplicación base y la extensión. (Mi próximo artículo sobre extensiones tratará más sobre cómo compartir datos entre sus aplicaciones.)
    • Las solicitudes de red deben gestionarse a través de las operaciones de solicitud de red en segundo plano de iOS, ya que no se garantiza que su extensión esté en pantalla mientras dure la solicitud de red, y debe intentar cargar datos en caché siempre que sea posible al presentar la interfaz de usuario de su extensión.
    • Las extensiones de teclado estándar no permiten las solicitudes de red, a menos que el usuario haya habilitado Acceso total en las opciones del teclado.
    • Las extensiones de teclado se deshabilitarán al introducir contraseñas en campos de texto seguros, y el usuario será predeterminado al teclado estándar de iOS.
    • Algunos tipos de extensión no presentan una interfaz de usuario y otros tienen la opción de no presentar una interfaz de usuario al ejecutar la extensión.

    Las extensiones se pueden ejecutar en iOS y OS X, pero debido a las diferencias de plataforma, necesitará migrar y adaptar partes de la interfaz de usuario y experiencia para una plataforma u otra: no se pueden traducir directamente de una plataforma a otra.

    Segunda parte

    En la próxima entrega de esta serie, entraremos en detalles sobre cómo crear una extensión dentro de su aplicación existente usando las herramientas incorporadas en Xcode. Vamos a construir una simple extensión de Today para mostrar lo fácil que es implementar extensiones.