¿Qué hay de nuevo en watchOS 3?

Introducción

Este año en WWDC, Apple presentó oficialmente watchOS 3, su última actualización del software central de Apple Watch. Si bien solo se mostraron algunas características de usuario "titulares", watchOS 3 abre una gran cantidad de API para que los desarrolladores creen aplicaciones watchOS aún más funcionales. Muchas de estas API han estado disponibles en iOS durante varios años y ahora se han agregado a watchOS, incluidos CloudKit, SpriteKit y SceneKit.

En este tutorial, te mostraré cómo puedes usar todas estas nuevas API en tus aplicaciones de watchOS 3. También te mostraré algunas de las adiciones más significativas a los marcos existentes de watchOS.

Prerrequisitos

Este tutorial requiere que esté ejecutando Xcode 8 en macOS 10.11 o posterior. También se supone que te sientes cómodo con los conceptos básicos de WatchKit y el desarrollo de aplicaciones watchOS. Si no es así, entonces recomiendo revisar algunos de los siguientes tutoriales que cubren los conceptos básicos de WatchKit:

También deberá descargar el proyecto de inicio de GitHub..

1. Nuevos marcos

SpriteKit y SceneKit

Dos de las mayores adiciones a watchOS 3 para desarrolladores son los frameworks SpriteKit y SceneKit. Estos marcos proporcionan ricos gráficos en 2D y 3D, respectivamente, en las aplicaciones de Apple Watch. Puede visualizar escenas en sus aplicaciones usando el nuevo WKInterfaceSCNScene y WKInterfaceSKScene objetos de interfaz, que son subclases de WKInterfaceObject. similar a SCNView y SKView en iOS, estos objetos de interfaz proporcionan propiedades y métodos para manipular sus escenas, incluida la funcionalidad de reproducción / pausa, así como la iluminación predeterminada.

Abre el proyecto de arranque y abre el Interface.storyboard expediente. Verá que en este archivo, ya he configurado algunas interfaces básicas para usted. Para esta parte del tutorial, solo nos interesa el controlador de interfaz superior con un solo botón. Ve a la Biblioteca de objetos en la esquina inferior derecha de Xcode y arrastre en una SceneKit Scene objeto encima de la Reproducir pausar botón:

A continuación, abre la Atributos Inspector y asignar el archivo de escena (Escena.scn) incluido en el proyecto al Escena propiedad de este objeto de interfaz:

Para trabajar con esto en nuestro código, abre el SceneKitInterfaceController.swift archivo en el Editor asistente y crear y vincular una salida llamada artículo de escena para su objeto de interfaz:

@IBOutlet var sceneItem: WKInterfaceSCNScene!

Tenga en cuenta que para que su contenido de SceneKit se reproduzca correctamente, debe vincular el objeto de interfaz en su guión gráfico con una IBOutlet en su codigo Al momento de escribir este tutorial, no se menciona en ninguna parte de la documentación de Apple, pero esta configuración es necesaria.

Por último, para implementar la funcionalidad de reproducción / pausa de nuestro botón, reemplace el existente didPress (botón :) Método con lo siguiente:

@IBAction func didPress () if let paused = sceneItem.scene? .IsPaused sceneItem? .Scene? .IsPaused =! Paused

Crea y ejecuta tu aplicación y verás un cubo rojo girando en la pantalla:

Presionando el Reproducir pausar El botón debería detenerse e iniciar la animación de su escena según sea necesario..

Si bien acabamos de mostrar el contenido de SceneKit en este tutorial, agregar soporte para SpriteKit es muy similar. La única diferencia importante es que los activos de SpriteKit deben usarse con un WKInterfaceSKScene objeto en lugar de WKInterfaceSCNScene objeto para SceneKit.

Notificaciones de usuario

Otra adición con iOS 10 y watchOS 3 es el marco de UserNotifications. Este marco proporciona una forma sencilla de trabajar con notificaciones locales y remotas que envía y entrega su aplicación..

Si desea obtener más información sobre este marco, consulte mi tutorial que lo cubre aquí:

  • Una introducción al marco de notificaciones de usuarios

    En este tutorial, aprenderá acerca del nuevo marco de UserNotifications en iOS 10, tvOS 10 y watchOS 3. Este nuevo marco proporciona un conjunto moderno de ...
    Davis allie
    iOS

Tenga en cuenta que no todas las API en el marco de UserNotifications en iOS están disponibles en watchOS. Sin embargo, los que están presentes funcionan de manera idéntica en watchOS y iOS.

CloudKit, GameKit, CoreAudio y AVFoundation

Otra adición importante en watchOS 3 es la disponibilidad de marcos que anteriormente solo estaban en otras plataformas de Apple, como CloudKit, GameKit, CoreAudio y AVFoundation. 

Si bien el conjunto completo de API de estos marcos no está disponible en watchOS, las clases y los métodos que se pueden usar en las aplicaciones de Apple Watch funcionan de manera idéntica a sus contrapartes de iOS y macOS.

2. Marcos existentes

Además de agregar muchos nuevos marcos, watchOS 3 también trae muchos cambios a los marcos existentes, incluyendo WatchKit y ClockKit. 

WatchKit

La primera característica nueva en el marco de WatchKit que vamos a ver es la nueva WKCrownSequencer clase. Esta clase le permite recuperar datos detallados sobre la corona digital, incluida su velocidad de rotación actual y si está inactiva o no. Si bien esta información es accesible a través de propiedades en un WKCrownSequencer objeto, el WKCrownDelegate El protocolo le permite realizar un seguimiento de los cambios más fácilmente. 

Todos WKInterfaceController las subclases ahora tienen una crownsequencer propiedad, que es una instancia de la WKCrownSequencer clase. Esto significa que para realizar un seguimiento de los cambios en la corona digital, solo tiene que especificar un objeto delegado e implementar los métodos que desee..

En tu proyecto, abre tu CrownInterfaceController.swift archiva y haz tu CoronaInterfazController clase conforme a la WKCrownDelegate protocolo:

clase CrownInterfaceController: WKInterfaceController, WKCrownDelegate …

A continuación, reemplace su actual despierta (conContexto :) Método con lo siguiente:

anular func awake (withContext context: Any?) super.awake (withContext: context) crownSequencer.delegate = self crownSequencer.focus ()

En el código anterior, llamamos al atención método en el crownsequencer porque de lo contrario no recibirá eventos de la corona digital. Si un elemento de su interfaz se enfoca cuando el usuario lo toca, deberá volver a llamar a este método para crownsequencer para detectar el movimiento de la corona digital.

Por último, agregue los siguientes dos métodos a su clase:

func crownDidRotate (_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) si es speed = crownSequencer? ) label.setText ("Crown \ nis idle")

Para que esta interfaz esté cargada, abre tu Interface.storyboard archivo y arrastre el Controlador inicial flecha para seleccionar la interfaz inferior:

Cree y ejecute su aplicación y verá que, cuando se mueve la corona digital del reloj, la etiqueta en pantalla refleja el estado actual:

Si está utilizando el simulador de Apple Watch, puede "girar" la corona digital simplemente desplazándose con el mouse o el trackpad de su Mac..

Además de detectar movimientos de coronas digitales, el marco WatchKit en watchOS 3 también proporciona las siguientes clases para que su aplicación detecte gestos sin usar elementos de la interfaz:

  • WKLongPressGestureRecognizer
  • WKPanGestureRecognizer
  • WKSwipeGestureRecognizer
  • WKTapGestureRecognizer

Como lo sugieren sus nombres, estos reconocedores de gestos funcionan de manera muy similar a la forma en que funcionan los reconocedores de gestos en iOS. Estas clases son particularmente útiles para detectar toques si estás usando SceneKit, SpriteKit o una interfaz personalizada basada en imágenes para mostrar contenido.

ClockKit

watchOS 3 también trae algunas nuevas características importantes para las aplicaciones que aprovechan el marco ClockKit para proporcionar complicaciones en la esfera del reloj.. 

En primer lugar, debido a la nueva funcionalidad de procesamiento en segundo plano para las aplicaciones en watchOS 3, si un usuario pone una de las complicaciones de su aplicación en su esfera, entonces la aplicación permanecerá en la memoria y permanecerá en un estado listo para el inicio. Además, se garantiza que su aplicación podrá actualizar su contenido en respuesta a las notificaciones push hasta 50 veces al día.. 

Si desea obtener más información sobre la nueva funcionalidad de la aplicación en segundo plano en watchOS 3, ya he cubierto este tema aquí:

  • What's New in watchOS 3: tareas de fondo

    En este tutorial, aprenderá acerca de las nuevas API de WatchKit en watchOS 3, que le permiten a sus aplicaciones de Apple Watch actualizar fácilmente su contenido en el ...
    Davis allie
    watchOS

A continuación, se han agregado algunas plantillas nuevas a la familia de complicaciones extra grande, que incluye CLKComplicationTemplateExtraLargeColumnsText, CLKComplicationTemplateExtraLargeRingImage, CLKComplicationTemplateExtraLargeRingText, y CLKComplicationTemplateExtraLargeSimpleImage.

Por último, la CLKTextProvider la clase ahora proporciona una API para crear un proveedor de texto localizable para usar un texto diferente para regiones de dispositivo específicas.

Aparte de estas pequeñas adiciones, ClockKit se mantiene sin cambios desde la versión de watchOS 2 del año pasado. Si desea obtener más información sobre este marco y cómo usarlo usted mismo, puede consultar mi tutorial que lo cubre aquí:

  • Una introducción a ClockKit

    En este tutorial, aprenderá los conceptos básicos del marco ClockKit y cómo crear complicaciones personalizadas para el Apple Watch. También aprenderás ...
    Davis allie
    Xcode

PassKit

Mientras que PassKit ya estaba disponible de forma limitada en watchOS 2, watchOS 3 ofrece soporte completo para compras de Apple Pay dentro de la aplicación. Esto se hace a través de algunas nuevas clases y un protocolo, incluyendo:

  • WKInterfazPagoBotón: utilizado para mostrar un pre-diseñado Compra con Apple Pay botón.
  • PKPaymentAuthorizationController: se utiliza para mostrar una interfaz de modelo con información de pago para que el usuario la confirme. Esta clase realiza el mismo papel que el PKPaymentAuthorizationViewController Clase pero no depende de UIKit. Esto significa que el PKPaymentAuthorizationController La clase se puede usar tanto en iOS como en watchOS.
  • PKPaymentAuthorizationControllerDelegate: Se pueden hacer clases para ajustarse a esto. Este protocolo le permite a su aplicación responder a las acciones del usuario con respecto a su pago, incluso cuando seleccionan un método de pago o cuando el pago ha sido autorizado.

Conclusión

En general, watchOS 3 es un lanzamiento importante para los desarrolladores de aplicaciones Apple Watch. Los juegos y aplicaciones ricas en medios ahora son mucho más fáciles de crear con la adición de marcos, incluidos SceneKit, SpriteKit, GameKit y AVFoundation. La adición de CloudKit y las mejoras a WatchKit, ClockKit y PassKit le permiten crear aplicaciones más funcionales que nunca antes y al mismo tiempo ser más independientes del iPhone..

Como siempre, asegúrese de dejar sus comentarios y sugerencias en la sección de comentarios a continuación. Para ver más de cerca cómo crear una aplicación en WatchOS, consulte el curso watchOS 2 From Scratch aquí en Envato Tuts+.

  • watchOS 2 desde cero

    Incorporar el soporte de vigilancia en su aplicación es una excelente manera de sobresalir en el App Store lleno de gente. Para hacerlo, deberás aprender a identificar watchOS 2 y ...
    Derek Jensen
    watchOS 2