Home » Análisis » Así es WatchKit, programación para el Apple Watch
Apple Watchkit

Así es WatchKit, programación para el Apple Watch

Tal como Apple prometió en su evento de octubre de presentación de los nuevos iPad, Yosemite e iMac Retina, ya tenemos entre nosotros el kit de desarrollo de aplicaciones para el nuevo y aun no lanzado Apple Watch.

El nuevo reloj de Apple representa una oportunidad para los desarrolladores como supuso en su día la llegada del iPad, en cuanto a las posibilidades de un mercado ya asentado a nivel de desarrollos y que permite, de una manera sencilla, aprovechar las bondades de un dispositivo que intenta crear un nuevo sector de producto de consumo.

Arquitectura

Pero, ¿qué es el Apple Watch a nivel de desarrollo? ¿Qué representa WatchKit? Pues bien. En una primera fase, las apps para el reloj (o watch-apps como las llama Apple) son una evolución de las notificaciones interactivas para iOS 8 y de las extensiones de aplicaciones. En esta primera fase, no se podrán desarrollar aplicaciones nativas para el reloj que corran y se ejecuten en el mismo de manera independiente, sino que este hará las veces de pantalla remota y han de depender de una app instalada en el iPhone.

La arquitectura es simple: las apps de iOS están basadas normalmente en lo que se llama el modelo MVC (modelo-vista-controlador). De esta forma tenemos por un lado el modelo, que representa nuestros datos con un flujo de entrada y salida de los mismos, el controlador, que permite reaccionar e interaccionar con las acciones del usuario ejecutando procesos y la vista, que representa la interfaz que el usuario ve.

Comunicación Watchapp

Pues en este caso, las watch-apps están montadas de forma que el controlador y el modelo no residen en el reloj, sino en el iPhone (dispositivo imprescindible para usar el Apple Watch). Lo que el reloj tiene es solamente la capa de vista y un controlador de extensión que se comunica en tiempo real con el controlador de extensión de la app asociada en el teléfono y que intercambia información a través de eventos. De esta forma, los eventos se generan siempre con interacciones del usuario y el teléfono procesa la información y devuelve el resultado en procesos en segundo plano.

Ciclo de Vida de una Watch AppPor otro lado, no existen las watch-apps como tales (al menos, por ahora), sino que estas han de formar parte de una app de iOS pre-existente, que generando un nuevo target dentro del proyecto de la misma, construye y crea su propia infraestructura de interfaz, datos y controladores. A través de uno o varios controladores de interfaz, conseguimos comunicarnos con el reloj, todo a través de las extensiones en segundo plano que usa el iPhone.

Cuando el usuario pulsa en una watch-app, se establece la comunicación con el iPhone y arranca la extensión que dará la capa de modelo y controlador. A través de callbacks, el sistema sabe cuando se inicia el dibujado de la interfaz en el reloj, cuando se termina dicho dibujado, cuando se activa la app o cuando se cierra esta. Unido a esto, determinados eventos creados por el desarrollador harán que la interacción en la watch-app lance procesos en el iPhone, de forma que el Apple Watch cumple la función de monitor pasivo en las apps y minimiza la necesidad de proceso de información.

Tres tipos de watch-apps

Apple nos ofrece la posibilidad de crear tres tipos de watch-apps complementarias a una app ya existente e instalada en iOS 8. La primera es la watch-app en sí. Utilizando la navegación por storyboards, los elementos de construcción de interfaces y algunos elementos nuevos como controles de datos de hora y fecha, grupos (anidados o no) o tablas interactivas, podemos montar nuestra app de una manera sencilla.

WatchKit Apps

Las apps pueden tener dos estructuras: app por jerarquía o por paginación. Si usamos una no podremos navegar a una interfaz usando la otra, por lo que hemos de saber muy bien cómo queremos diseñarla antes de ponernos a trabajar en ella. De hecho, hay que tomar nota que la mayoría de interfaces deben estar hechas en tiempo de diseño, definiendo los espacios para datos previamente, para que la carga de estos “rellene” la interfaz ya diseñada. Las interfaces en sí no pueden sufrir alteraciones en tiempo real durante la ejecución en manera alguna.

Las apps por jerarquía son similares a lo que ya conocemos. Podemos usar tablas, grupos de etiquetas con iconos, estructuras anidadas y pantallas de información con imágenes y contenido. Podemos también usar mapas, con hasta 5 anotaciones dentro del mismo, pero dichos mapas son capturas de imagen no interactivas, que al ser pulsadas abrirán la app nativa de mapas del reloj.

En definitiva, casi cualquier elemento que usáramos en las apps de iPhone, con componentes adaptados y también con un uso inteligente de las estructuras de auto-layout, ya que cada reloj tiene una resolución diferente (según su tamaño) y se deja entrever que en el futuro podrían tener aun más resoluciones. Eso nos permite tener diferentes controladores de vista y un esquema de navegación mediante storyboards.

WatchKitLas apps paginadas, por el contrario, son páginas de información pre-diseñadas en función de unas plantillas que tiene el sistema, que nos permiten mostrar información y desplazarnos por ella deslizando hacia los lados. Estas plantillas son bastantes adaptables y permiten múltiples combinaciones.

La otra opción de app que tenemos son los glances (literalmente, “miradas”). Un glance es un ejemplo de app paginada, pero no creada como app en sí, sino como complemento. A medio camino entre una watch-app y una notificación, es un componente que el usuario puede activar o desactivar a voluntad y que se muestra al desplazar cualquier pantalla hacia arriba. En ese momento entramos en un pantalla de información que se comunica en tiempo real con la extensión de nuestra app en el iPhone y muestra información relevante para la misma. Una manera de no tener por qué crear una app completa, sino un complemento que obtiene información real de nuestra app en el teléfono.

La última opción son las notificaciones. Cualquier app de iOS 8 que reciba notificaciones tanto remotas como locales (aunque no tenga una watch-app asociada), verá estas mostradas directamente en el Apple Watch. Primero como notificación breve, con el icono de la app, el nombre y una pequeña etiqueta. Si usamos la corona del reloj entraremos a la información detallada de la misma con un aspecto estandarizado que solo podremos personalizar si tenemos una watch-app asociada a nuestra app.

Si tenemos una watch app asociada, podremos configurar la apariencia con distintos elementos como un efecto translúcido en la barra superior, diferentes colores, fondos, tipos de letra y la posibilidad de interaccionar con lo que Apple llama los deep links. Estos son enlaces internos a la watch-app que al pulsar en la notificación no nos dirige a la pantalla de entrada de la misma, sino a la parte donde está la información dentro del contexto de la notificación. Estos enlaces también pueden usarse con los glances.

WatchKit, nuevas oportunidades

Si estamos familiarizados con el desarrollo de apps, el modelo MVC y la construcción de interfaces, dar el salto a las watch-apps será muy sencillo para nosotros. Cualquier app es susceptible de incluir en ella una watch-app que nos permitirá un añadido importante, no ya de funcionalidad en sí, sino de posibilidades de mostrar información y de ejecución de procesos en segundo plano en el iPhone.

La mejor forma de crear una comunicación fluida entre ambas apps que co-existen en el mismo proyecto es crear un framework propio común que de acceso a la capa de datos a ambos targets (la app del iPhone y la watch-app del reloj) y diseñar una buena interacción, completa y con una buena experiencia de usuario. Por eso Apple ha creado también una Guía de Interfaz Humana del Apple Watch que nos da las directrices y buenas prácticas necesarias para construir interfaces para el Apple Watch y cada uno de sus tipos de watch-app.

Como ya he dicho en alguna ocasión, este WatchKit es la prueba que lo importante no es lo que puede hacerse a día de hoy con el Apple Watch (las funcionalidades que conocemos hasta la fecha) o las herramientas que Apple nos proporciona: lo importante es aquello que aun no podemos imaginar que podrá hacerse con el reloj y que desarrolladores en el mundo ya están empezando a diseñar.

Solo hay que ver las diversas formas de interaccionar que dispone el Apple Watch, de las cuales solo algunas podrán ser usadas por los desarrolladores en sus watch-apps: elementos de vistazo rápida o prolongado (short y long look), glances, acciones de notificación, deslizamiento vertical, horizontal y desde los bordes, pulsaciones, motor de vibración o motor “táptico”, Siri, toque de fuerza (ejercer mayor presión en la pantalla), scroll y botón de la corona digital, pulsación simple en el botón lateral (que abre la app de Amigos) y doble pulsación en el botón lateral para usar Apple Pay usando el Apple Watch como lector NFC.

Ciclo de lanzamiento WatchappEl hecho que el reloj se convierta casi en un monitor remoto, donde por ejemplo no podemos tener en caché más de 20MB de imágenes y recursos por app, que las interfaces no puedan sufrir modificaciones en tiempo de ejecución, que los procesos se ejecuten en el iPhone y no en el reloj o que las animaciones sean similares a una animación 2D con sprites (como un GIF animado), no quita que el concepto esté bien planteado y que esto sean ventajas para hacer que la autonomía y uso del reloj sean mejores.

Estas “restricciones” no lo son tanto en cuanto a que optimizan el uso de recursos y lo importante son las posibilidades que nos ofrece. Además, el uso de BLE (Bluetooth 4.0) hará que el consumo del teléfono también sea mínimo al no estar encendida la pantalla y simplemente ejecutar procesos a demanda. Esto ahorrará batería al iPhone, ya que gastaríamos más si desbloqueamos el teléfono y hacemos todo en nuestra app normal.

Desde ya podéis bajar Xcode 6.2 Beta y empezar a desarrollar watch-apps, ya que el simulador de iOS incorpora un complemento de Apple Watch que nos permite ver y trabajar con estas para probarlas y hacer el correspondiente debug. Tenéis toda la información en Apple, así como vídeos de introducción en la página oficial del WatchKit e interesante documentación.

En AppleCoding ya estamos preparando los contenidos sobre cómo crear apps con Swift y Objective-C para el nuevo Apple Watch, así como perfilando un nuevo curso presencial a través de Gabhel Studios que profundiza mucho más en el desarrollo de estas watch-apps, su funcionamiento, interacción y pruebas. Con proyectos completos de ejemplo para ser el primero en sacar el mayor provecho de este nuevo dispositivo.

Echad un vistazo a los recursos oficiales, explorad, experimentar y Good Apple Coding.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Swift 3.1

Swift 3.1 ha llegado, análisis de todos sus cambios

Swift 3.1 ha llegado de la mano de la hornada de actualizaciones lanzadas por Apple. Analizamos sus cambios más importantes e incorporaciones más destacadas. Nuevas formas de convertir closures que no escapan en los que sí lo hace, conversiones seguras de números, genéricos más eficientes... descubre en nuestros análisis con ejemplos concretos todos los cambios y descúbrelos por ti mismo.