Apple Watch en pocas palabras: una introducción de funciones para desarrolladores de iOS
Publicado: 2022-03-11Ha habido mucha inquietud en torno al SDK de Apple Watch, anunciado en la WWDC en junio pasado y lanzado recientemente.
Esta es solo la primera ronda, con funcionalidades limitadas. Seguirá Apple Watch v2, pero no tan pronto, por lo que los desarrolladores de iOS con visión de futuro deberían estar preparados para esperar unos meses.
El sentimiento entre los desarrolladores es extremadamente diverso. Muchos desarrolladores de iOS están decepcionados por las muchas limitaciones impuestas por Apple Watch SDK y sus funciones. Por otro lado, muchos de nosotros estamos emocionados, mientras que otros no están demasiado lejos de una posición neutral. Pero, después de todo, aparentemente todo el mundo está feliz de tener un nuevo juguete con el que jugar.
Una cosa que llama la atención es cómo se hace referencia a los usuarios de Apple Watch. No son usuarios ni usuarios de móviles , ni usuarios de relojes o (con una pizca de originalidad) observadores . Son simplemente portadores . Un término que suena un poco raro, porque si un usuario usa , lo que implica que interactúa, un usuario usa , y eso suena como un uso pasivo. Eso sí, el Apple Watch está lejos de ser un dispositivo pasivo. Combina las características tradicionales de un reloj con opciones más avanzadas habilitadas por la tecnología moderna, especialmente cuando se usa en combinación con un iPhone. No fue hace mucho tiempo cuando los teléfonos comenzaron a convertirse en mucho más que simples teléfonos: la historia se repite.
Sin embargo, al final, el nombre del usuario parece ser una elección inteligente. Al menos cuando escribo historias de usuarios, no tengo que especificar "Como usuario de Apple Watch quiero..." en su totalidad, puedo acortarlo a "Como usuario , quiero..." - menos ambigüedad.
Dispositivo e interfaz de usuario
Omitiendo todas las características de Apple Watch que no están estrictamente relacionadas con el desarrollo, el problema más importante que los diseñadores y desarrolladores tienen que enfrentar son los tamaños; de hecho, hay 2 modelos diferentes de Apple Watch:
- Pantalla de 38 mm con una resolución de 272x340 px
- Pantalla de 42 mm con una resolución de 312x390 px
con pantalla retina en ambos casos.
No hace falta decir que depende de los desarrolladores de iOS asegurarse de que la aplicación se vea bien en ambas versiones.
Conectividad de Apple Watch
El Apple Watch se comunica con el iPhone complementario a través de Bluetooth 4.0 y también está habilitado para NFC. Aparentemente, no tiene conectividad WiFi. Aunque puede conectarse a través del iPhone y usar tanto WiFi como conexión de datos móviles. Pero en una información de prensa, Apple afirma claramente que también cuenta con Wi-Fi 802.11b/g.
La interacción del usuario
La interacción del usuario (o la interacción del usuario, si se prefiere) puede ocurrir de 4 maneras diferentes:
- toque simple: un toque en un botón es un ejemplo típico
- Force Touch: se activa aplicando más fuerza al tocar y mantener presionada la pantalla. Similar al clic derecho del mouse en una PC, se mostrará un menú contextual (que contiene hasta 4 elementos)
- gesto: deslizamiento vertical para desplazarse, deslizamiento horizontal para navegar entre páginas, deslizamiento desde el borde izquierdo para navegar hacia atrás
- corona digital: entrada de hardware utilizada para desplazamiento fino
Existen algunas limitaciones con respecto a la interacción del usuario, en particular acerca de los gestos:
- están predeterminados, por lo que no se admiten los gestos personalizados
- multitáctil no es compatible, por lo que no se pueden pellizcar para hacer zoom ni gestos similares que requieran más de un dedo
Aquí está la muestra del menú contextual de la Guía de Apple WatchKit.
Interfaz de usuario
Hablando de la interfaz de usuario de Apple Watch, existen varias limitaciones impuestas por el tamaño reducido de la pantalla, por las opciones de diseño y, en muchos casos, como consecuencia natural del hardware subyacente. Esperamos que algunos de ellos cambien para mejor en futuras versiones del SDK, aunque no es posible anticipar ni pronosticar qué cambiará realmente.
La primera limitación es sobre cómo se implementa la interfaz de usuario: solo a través de guiones gráficos.
Navegación del reloj Apple
WatchKit ofrece dos formas mutuamente excluyentes de navegar entre las vistas de una aplicación Apple Watch:
- un modelo de navegación jerárquico, similar al que se usa en iOS, con vistas apiladas durante la navegación
- un modelo basado en una página plana, donde el usuario puede navegar entre páginas deslizando el dedo hacia la izquierda y hacia la derecha
Desafortunadamente, no es posible combinar estos dos modelos de navegación en la misma aplicación. Uno de ellos debe ser elegido y utilizado en toda la aplicación.
Sin embargo, cualquier controlador de interfaz puede presentar un controlador de interfaz modal, que puede ser un controlador de interfaz único o varios controladores de interfaz, organizados mediante un modelo de navegación de página.
Elementos de la interfaz de usuario
Hay 11 componentes de interfaz distintos:
- botón
- control deslizante
- imagen
- etiqueta
- separador
- control deslizante
- cambiar
- mesa
- fecha: muestra automáticamente la fecha u hora actual
- temporizador: muestra un temporizador de cuenta regresiva, actualizado automáticamente
- grupo: un contenedor para uno o más componentes secundarios
- mapa: mostrar un mapa no interactivo, opcionalmente con un máximo de 5 anotaciones
Diseños
El componente de grupo se puede usar para combinar elementos de la interfaz de usuario de Apple Watch en un diseño vertical u horizontal . Los elementos se distribuirán automáticamente en función de su tamaño. Hay cierto grado de flexibilidad disponible aquí, dado que los grupos se pueden anidar.
Desafortunadamente, el diseño automático no está disponible. Pero, considerando que la interfaz de usuario es mucho más simple en comparación con la contraparte de iOS, probablemente no sea una gran pérdida.
Para las listas, el componente de tabla crea y administra contenido mediante un modelo de una sola columna, al igual que UITableView
. Sin embargo, no está utilizando el patrón de delegación: la fuente de datos se proporciona directamente a la tabla especificando primero el número de filas y luego inicializando el contenido de cada fila en un bucle for. En una nota positiva, todavía es posible usar filas de tablas personalizadas (es decir, celdas en la jerga de iOS)
miradas
Las miradas son vistas de solo lectura, de una sola página y no desplazables, que se utilizan para mostrar una instantánea de datos específicos de una aplicación oportuna y relevante. No se permite la interacción del usuario, excepto el evento de toque. Tocar la vista simplemente iniciará la aplicación, proporcionando opcionalmente un contexto para permitir que la aplicación muestre un controlador de interfaz específico.
Por ejemplo, una aplicación meteorológica de Apple Watch puede usar Glance para mostrar la temperatura actual, la ubicación, etc. Al tocarla, la aplicación se abre y muestra información más detallada.
Aquí está el vistazo de muestra de la guía oficial de Apple WatchKit.

Notificaciones de Apple Watch
Hay 2 tipos de notificación: mirada corta y mirada larga .
La notificación de mirada corta se utiliza para alertar al usuario de que algo ha sucedido y se descarta automáticamente cuando se baja la muñeca. El diseño es muy simple y consta del ícono de la aplicación, el nombre de la aplicación y el título de la notificación.
Mantener la muñeca levantada durante algún tiempo, o tocar explícitamente la notificación de mirada corta, la convertirá en una notificación de mirada larga . Este tipo de notificaciones proporciona más detalles y admite la interacción del usuario a través de botones personalizables. Estos botones pueden enviar notificaciones a la aplicación. A diferencia de la notificación corta, el usuario debe descartar explícitamente una notificación de vista larga tocando un botón que se muestra automáticamente en la parte inferior de la vista.
Puede encontrar más información sobre el uso de las notificaciones de Apple Watch aquí.
Desarrollo
Arquitectura
Al descargar una versión de Xcode compatible con WatchKit (actualmente la versión beta 6.2) e intentar comenzar con un proyecto de WatchKit sin leer ninguna documentación, un desarrollador podría sentirse confundido porque no hay una plantilla de WatchKit:
No existe una aplicación de reloj independiente y una aplicación de reloj solo se puede agregar como un nuevo objetivo a una aplicación de iOS existente.
La razón de esto se basa en la arquitectura y la forma en que la aplicación del reloj interactúa con la aplicación iOS relacionada:
Cuando se inicia la aplicación en el reloj, la extensión complementaria de iOS se inicia automáticamente. Ambos funcionan en sinergia, con la aplicación del reloj mostrando el contenido al usuario y respondiendo a las interacciones, mientras que la extensión de iOS se encarga de todo lo demás. En realidad, no se ejecuta ningún código de aplicación en el reloj: todo el procesamiento se delega a la extensión de iOS.
Este modelo se parece mucho al navegador <-> modelo de aplicación web, donde la lógica del dominio se realiza en el lado del servidor y el lado del cliente es responsable de mostrar el contenido al usuario y responder a las acciones del usuario.
La aplicación Watch, que está instalada en el dispositivo, consta del guión gráfico y todos los recursos estáticos relacionados, empaquetados en un paquete. Este paquete es estático, lo que significa que no es posible agregar o cambiar cualquiera de los recursos, vistas, imágenes, etc. en tiempo de ejecución.
Este modelo cliente-servidor estático impone varias limitaciones al desarrollador de iOS que desea agregar una aplicación Watch a su repertorio, y es probablemente una de las razones principales por las que algunos desarrolladores no reaccionaron de manera positiva. Otro comentario popular es sobre las animaciones: simplemente no son compatibles. La única forma de imitar una animación es empaquetar cuadros individuales en la aplicación de reloj y luego simular la animación mostrando imágenes en una secuencia. La buena noticia es que al nombrar marcos secuencialmente, puede automatizar la animación directamente desde Interface Builder, aunque se puede hacer lo mismo desde el código con una sola invocación de un método de control de imagen.
Sin embargo, Apple ya ha anunciado que lanzará una nueva versión el próximo año, con soporte para aplicaciones nativas, de la que aún no hay más detalles.
El Apple Watch Framework: una mirada rápida
WatchKit no usa, hereda ni especializa UIKit. Se ha implementado un nuevo marco, específicamente diseñado y optimizado para el reloj, para su pequeña pantalla y para el hardware limitado. El marco consta solo de 15 clases, 12 de las cuales son componentes de la interfaz de usuario (etiqueta, botón, etc.).
La clase más importante expuesta por el marco es WKInterfaceController
, que es la contraparte de WatchKit de UIViewController
. Entonces, lo que en iOS (y OSX) se llama controlador de vista , en Apple Watch es un controlador de interfaz .
Sin profundizar demasiado, la mejora más notable sobre UIKit, desde la perspectiva de un desarrollador de Apple, es el establecimiento de un patrón para pasar datos entre controladores de interfaz. Un vistazo rápido al inicializador:
Swift init(context: AnyObject?) // context from pushing controller or nil
revela que es posible proporcionar un objeto arbitrario a una instancia de controlador de interfaz (llamado context
en todas las API), simplificando y estandarizando el paso de datos de un controlador de interfaz a otro. El único inconveniente es que el objeto no es de un tipo genérico, sino un AnyObject
opaco que debe reducirse al tipo esperado dentro del inicializador del controlador de la interfaz de destino. Probablemente sea una compensación por tener (y probablemente también querer) seguir usando Objective C.
El ciclo de vida del controlador de interfaz se simplifica si se compara con la contraparte del controlador de vista, que consta de solo 3 transiciones:
-
init
: se invoca cuando se instancia el objeto -
willActivate
: se invoca cuando el contenido está a punto de mostrarse -
didDeactivate
: se invoca cuando la interfaz acaba de ocultarse
Además de mostrar contenido al usuario, el controlador de la interfaz también es responsable de:
- manejar las interacciones del usuario
- gestionar un menú contextual
- coordinar la actividad de traspaso
- responder a la notificación
¿Está listo Apple WatchKit?
Con las diversas limitaciones, el kit de reloj puede parecer un producto inmaduro. Y en realidad lo es. No es compatible con las aplicaciones de reloj nativas, sin mencionar que todavía no hay un dispositivo de reloj en el mercado, por lo que los desarrolladores aún no pueden probar sus aplicaciones y tener una sensación real y comentarios sobre cómo funciona la aplicación.
Ok, hay un simulador, que en realidad no es un simulador independiente, pero accesible como una pantalla externa para el simulador de iOS (a través del menú Hardware -> Pantallas externas). Pero un simulador nunca reemplaza un dispositivo real; es bueno durante el desarrollo y para la depuración, pero no lo suficiente.
WatchKit es solo una vista previa, una versión beta, un aperitivo, que evolucionará con cada nuevo lanzamiento. Los desarrolladores de iOS tienen la primera versión, juguemos con ella e intentemos sacarle el máximo partido.