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.
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..
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.
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í:
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.
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.
Además de agregar muchos nuevos marcos, watchOS 3 también trae muchos cambios a los marcos existentes, incluyendo WatchKit y ClockKit.
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.
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í:
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í:
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.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+.