Home » Análisis » Análisis de watchOS 2, el sistema que todos esperábamos
watchOS 2

Análisis de watchOS 2, el sistema que todos esperábamos

Cuando analizamos WatchKit 1.0 y las posibilidades de desarrollo de terceros que tiene el último dispositivo de Apple, el Apple Watch, vimos claramente que aun quedaba mucho por andar y que a los de Cupertino, en cierto modo, les había “pillado el toro” en cuanto a ofrecer posibilidades de desarrollo reales para su dispositivo.

Cualquier análisis del dispositivo en sí que se leyera en la red tenía un elemento en común: lo malo que era para la experiencia de usuario el tiempo de espera hasta que las apps arrancaban por estar vinculadas al teléfono como proceso en segundo plano.

Evolución, la lógica de la app al reloj

La estructura de una app para Apple Watch en la primera versión del sistema, actualmente versión operativa, es simple: la interfaz de la app se encuentra en el reloj con sus recursos gráficos y la lógica de la misma (donde se realizan las operaciones, comunicaciones con el exterior y procesa la información) se encuentran dentro de la app asociada en el iPhone. Cuando arrancamos la app en el reloj, el sistema manda una señal al iPhone, este arranca en segundo plano los procesos de la app asociada y se completa el flujo de vida de la misma. Pero eso implica esperas y baja eficiencia. La solución: la lógica ahora va en el reloj, por lo que de pronto todas las apps son “autónomas” y ya no necesitan al iPhone (en principio).

Ese es el primer e importante paso de la nueva versión de WatchKit, quien por otro lado ya no es el “hijo único” del ahora llamado watchOS. Aparte de WatchKit tenemos otros frameworks o librerías disponibles como ClockKit, Watch Connectivity y la incorporación de varios conocidos como CoreMotion, CoreLocation, HealthKit, MapKit o el framework de seguridad. Además, el reloj incorpora así mismo, versiones de los nuevos frameworks ContactKit y EventKit estrenados en iOS 9 y que nos permiten manejar los datos de contacto y calendario, pudiendo editar, crear y trabajar con estos directamente.

WatchKit 2

Como hemos comentado, WatchKit es ahora solo una parte del sistema que es mucho más amplia. El nuevo WatchKit, no obstante, sigue albergando aquellas funcionalidades que son específicas de un dispositivo como el reloj. Además de lo que ya conocemos como la posibilidad de construir interfaces o la conectividad con NSURLSession (que ahora usa indistintamente WiFi, conexión al iPhone o aquel medio que esté disponible en ese momento de manera transparente a usuario y app) tenemos una serie de nuevas incorporaciones que nos ofrecen aun más capacidades de trabajo para hacer aplicaciones para el reloj.

watchOS 2 WatchKit

Una de las más destacadas es el uso de la corona digital como elemento de control de interfaces. Su funcionamiento está unido al control UIPickerView, donde estas vistas delegan su funcionamiento a la corona. Tenemos tres estilos visuales para poder crearlas:

  • Una lista muy al estilo iOS con una etiqueta en la parte superior que podemos usar para mostrar el elemento seleccionado. Podemos crear varios elementos de selección en pantalla y activar o desactivar una línea que rodee el elemento para indicar al usuario que lista de selección está activada en ese momento para usar la corona digital.
  • Una pila de imágenes o elementos gráficos, como si fuera una lista de fichas que pasan una detrás de otra, que nos permitirán elegir entre fotografías o elementos parecidos como si nos moviéramos adelante y atrás por un archivador (a pantalla completa).
  • Una secuencia de imágenes similar a la selección de emoticonos actual, donde podemos tener un elemento que suponga una selección fija y luego proporcionar al sistema los frames de transición entre cada elemento para crear una selección fluida.

Además, existen una serie de elementos gráficos progresivos, asociados a la corona, que nos permiten crear formas muy variadas de progresión gráfica, como una circunferencia que se rellena hasta completar el total de la circunferencia del reloj, en función de donde estamos situados. Como una barra de progreso personalizable en valores gracias a la corona que nos permite movernos por estos valores secuencialmente.

El diseño de interfaces de usuario tiene una gran novedad: ahora puede modificarse por programación cualquiera de los valores que definimos en tiempo de diseño. Con esto conseguimos que determinadas propiedades que influyen en la posición, tamaño u otros que antes eran estáticos y no podíamos modificar en modo alguno, ahora puedan ser modificados durante la programación. Esto viene de la mano, lógicamente, de la incorporación de CoreAnimation.

De esta forma, ahora podemos usar las funciones de animación de interfaces propias de iOS para conseguir interfaces y elementos que entren, salgan, se muevan… y que nos proporcionen mejor presentación y más fluidez en los elementos. Todas las animaciones soportadas por CoreAnimation en el iPhone también lo están en el Apple Watch, implementadas de la misma forma.

watchOS2 WKHapticType

El motor táptico, ahora también es un elemento programable. De esta forma, y a través de una simple enumeración del sistema, podemos invocar feedbacks para el usuario, que él mismo va a reconocer por estar asociadas a un funcionamiento estándar del propio reloj. Solo tenemos que llamar al método con la propiedad enumerada apropiada y nada más.

Otra de las grandes incorporaciones es la reproducción multimedia y la grabación de voz. En este último, tenemos toda una interfaz que podemos usar y personalizar en opciones, que nos permitirá grabar audio y luego quedarnos con el fichero, enviarlo de alguna forma o lo que queramos hacer con él ya que el sistema lo dejará como un fichero local accesible a nuestra app.

La reproducción de vídeo es tanto local como en red, y en caso de ser reproducción por red el sistema proporciona de forma automática el buffering necesario, la conectividad en función de aquellas disponibles para el reloj en ese momento y hasta podemos hacer una lista de selección de los mismos mezclando fuentes y el sistema de encargará de las miniaturas de los mismos.

watchOS2 UIAlertView

En cuanto al sonido tenemos dos opciones muy interesantes: la primera radica en reproducir sonidos insitu dentro del propio contexto de la aplicación, de forma que si saliéramos de la app el sonido cesaría. Pero también tenemos una API de sonido “de larga duración” que nos permite enviar al servicio del sistema un audio más largo (como un podcast o una canción). Desde ese momento el propio watchOS y su glance asociado para controlar la reproducción tomarían el control y si nuestra app se cierra no influirá en absoluto. Luego, si volvemos a abrir nuestra app, el sistema podrá informarnos de cómo va la reproducción y retomar el control de manera fluida.

Otra incorporación son las alertas programas, al estilo de las UIAlertController, de forma que podemos crear alertas que requieran una respuesta del usuario con diferentes botones, descripción, callbacks de las llamadas… un elemento que nos ayuda en determinados momentos donde el usuario ha de tomar una decisión muy concreta a su flujo de uso.

Además, las llamadas de teléfono, el iMessage o el PassKit (con los contenidos específicos de Passbook) se incorporan al reloj pudiendo generar llamadas desde una app, generar y enviar mensajes o capturar e incorporar tickets passbook a la cartera del sistema y que estos se propaguen a la cuenta general de iCloud que engloban todos nuestros dispositivos.

ClockKit

Este es uno de los frameworks nuevos y su objetivo no es otro que crear los denominados complications o elementos de interfaz que podemos incorporar a los faces (o caras) del reloj.

watchOS 2 Complications

Tenemos diferentes tamaños y ubicaciones para seleccionar, además de la posibilidad de crear alguno de ellos como elemento temporal y asociarlo a la función “Time Machine” (que recordemos no incluye el condensador de fluzo) y que nos permiten navegar por una secuencia temporal para consultar datos a futuro o pasado dentro de la línea normal.

Watch Connectivity

La conectividad del Apple Watch es una de las cosas que más han evolucionado. El nuevo kit de conexión, que en el caso de conexiones de red convencionales reside sobre NSURLSession, permite incluso descargas en segundo plano de cualquier contenido. Pero donde realmente podemos ver el potencial es en las librerías de interconexión entre el iPhone y el reloj.

Usando los contextos de la nueva proactividad de iOS 9, podemos definir diccionarios de datos que engloben datos de nuestra app que pueden ser actualizados tanto desde el iPhone como desde el Apple Watch. Y estos datos se sincronizan en tiempo real entre ambos dispositivos permitiendo una mejor integración con Siri y con la nueva búsqueda de iOS 9.

Además, podemos transferir archivos al iPhone o al contrario, donde si los pasamos desde la zona de archivos de nuestra app en el reloj hacia la zona de archivos de la misma en el iPhone, todo el proceso se hace en segundo plano y sin nuestra intervención. Por el contrario, si queremos transferir datos del iPhone al reloj podemos, pero la app del reloj ha de estar activa en todo momento (no en el caso contrario que se sirve al sistema la transferencia y sigue funcionando aunque nuestra app del reloj esté cerrada o suspendida).

watchOS 2 Connectivity

Además se pueden generar botones en el reloj que provoquen acciones concretas en el teléfono o inicio de acciones en segundo plano, al más puro estilo NSNotificationCenter pero entre dispositivos y procesos de una misma app en su versión del iPhone y del Apple Watch.

CoreMotion, CoreLocation, HealthKit, MapKit, ContactKit, EventKit…

Pero no acaba ahí la cosa: ahora podemos acceder desde el reloj a los datos de viejos conocidos en iOS. De esta forma se pueden usar los datos del acelerómetro del reloj con CoreMotion e incluso crear una monitorización de los mismos, de forma que el sistema recopile la información que queremos aunque nuestra app esté cerrada para luego informar a esta de los nuevos datos una vez se vuelva a abrir y así poder trabajar con dichos datos. Y esto mismo también podemos hacerlo con HealthKit, donde no solo podemos acceder y grabar datos que el reloj pueda registrar desde nuestra app, si no también solicitar el registro de determinadas actividades (como el ritmo cardiaco) que estemos monitorizando cuando nuestra app sea invocada.

CoreLocation nos permite acceder a la localización y además el permiso para acceder a la misma solo se nos pedirá una vez en uno u otro dispositivo (Watch o iPhone) propagándose los permisos concedidos. Se integra con MapKit y nos permite dar una ruta guiada paso a paso desde nuestra app.

Por último, ContactKit y EventKit, dos nuevas incorporaciones, permiten incorporar o leer datos de la agenda de contactos o el calendario y estos están también disponibles para cualquier app del reloj, pudiendo crear contactos o citas, editarlos o consultarlos. Cualquier cambio o incorporación se sincroniza automáticamente entre todos los dispositivos a través de iCloud y los permisos de acceso también se piden solo una vez.

Por último, aunque no menos importante, tendremos la opción de incorporar o leer claves que se almacenen en el llavero de claves del dispositivo que estará disponible mientras tengamos puesto el reloj. Si nos quitamos el Apple Watch de la muñeca la cartera de claves se encriptará y cerrará para que evitar el acceso a esta.

Una nueva versión llena de potencial

No podemos evitar pensarlo: este es el sistema operativo para el Apple Watch que todos esperábamos. Es lo que debería haber sido desde el principio pero tal vez las prisas por sacar el dispositivo han pasado factura a Apple. El caso es que, como hemos podido ver, estamos ante un auténtico universo de posibilidades que nos permitirán hacer y explotar multitud de funciones al reloj.

Está por ver qué incidencia tiene en la autonomía el hecho que ahora las apps corran directamente en el reloj y que, por definición, un Apple Watch con watchOS 2 sea un dispositivo mucho más independiente y que no requiera el iPhone más que para sincronizar datos o conseguir conectividad a red cuando no hay otra forma de conseguirla alternativamente.

Las opciones y las mejoras están ahí y solo queda que los desarrolladores nos pongamos manos a la obra y saquemos todo el potencial al mismo. Por lo pronto, a mi se me ocurren unas cuantas ideas, no solo de apps si no también de juegos gracias a la incorporación de CoreAnimation. El tiempo dirá si, como ha sucedido con los iPhone o iPad, los desarrolladores estamos a la altura para conseguir llevar este dispositivo mucho más allá. Ahí están las herramientas, así que como decimos siempre: probad, experimentad 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.

  • Jacob L

    Me ha gustado mucho su análisis. En lo personal espero cuando el apple watch no necesite del iphone para hacer peticiones a internet, en ese momento creo que su dependencia del iphone será eliminada por completo.

    • Julio César Fernández

      Muchas gracias Jacob. Lo único que necesita ahora mismo el Watch (además de mayor autonomía) es disponer de un módulo inalámbrico para ser completamente autónomo. En unos años seguro que lo veremos.

      Un saludo

    • Muchas gracias Jacob. Me alegro que te haya gustado el análisis. Respecto al Watch, solo necesita tener un módulo inalámbrico para tener conexión 4G por su cuenta, para lo cual necesitaría mejorar la autonomía. Tal vez en unos años.

      Un saludo y gracias por tu comentario,

  • .[Roberto Hevens]

    Julio:
    Como siempre un lujo de información descrita de forma ejemplar., ¡felicitaciones! y gracias. Tienes idea cuando estará disponible el libro de programación Swift?.

    Saludos.

    • Julio César Fernández

      Muchas gracias Roberto. Me alegro que te haya gustado. El libro estará disponible (previa aprobación de Apple) el próximo jueves. Ha sido un arduo camino pero al fin llegó a su fin.

      Un saludo,
      Julio

    • Muchas gracias Roberto. Me alegro que te haya gustado el artículo. El libro debería estar disponible (teniendo en cuenta la aprobación en la iBookstore) el próximo día 8 o 9, es decir, miércoles o jueves.
      Un saludo,
      Julio

  • Hanu

    Que tecnologias ofrece Apple para que el desarrollo de watchOS e iOS de alguna manera esten ingrados?