Cosa c'è di nuovo in watchOS 3?

introduzione

Quest'anno al WWDC, Apple ha presentato ufficialmente watchOS 3, il loro ultimo aggiornamento al software di base di Apple Watch. Mentre c'erano solo poche funzioni utente "headline" mostrate, watchOS 3 apre molte API per gli sviluppatori per creare applicazioni watchOS ancora più funzionali. Molte di queste API sono disponibili su iOS da diversi anni e ora sono state aggiunte a watchOS, inclusi CloudKit, SpriteKit e SceneKit.

In questo tutorial, ti mostrerò come puoi utilizzare tutte queste nuove API nelle tue applicazioni watchOS 3. Ti mostrerò anche alcune delle aggiunte più significative ai framework watchOS esistenti.

Prerequisiti

Questo tutorial richiede che tu stia eseguendo Xcode 8 su macOS 10.11 o successivo. Si presume inoltre che tu stia bene con le basi di WatchKit e lo sviluppo di app watchOS. Se non lo sei, ti consiglio di consultare alcuni dei seguenti tutorial che trattano le basi di WatchKit:

Dovrai anche scaricare il progetto iniziale da GitHub.

1. Nuovi quadri

SpriteKit e SceneKit

Due delle più grandi aggiunte a watchOS 3 per gli sviluppatori sono i framework SpriteKit e SceneKit. Questi framework forniscono una ricca grafica 2D e 3D rispettivamente nelle applicazioni Apple Watch. Puoi visualizzare scene nelle tue app usando il nuovo WKInterfaceSCNScene e WKInterfaceSKScene oggetti di interfaccia, che sono entrambi sottoclassi di WKInterfaceObject. Allo stesso modo SCNView e SKView su iOS, questi oggetti di interfaccia forniscono proprietà e metodi per manipolare le scene, tra cui la funzionalità di riproduzione / pausa e l'illuminazione predefinita.

Aprire il progetto iniziale e aprire il Interface.storyboard file. Vedrai che in questo file ho già impostato alcune interfacce di base per te. Per questa parte del tutorial, ci interessa solo il controller dell'interfaccia più in alto con un solo pulsante. Vai al Libreria di oggetti nell'angolo in basso a destra di Xcode e trascinare in a SceneKit Scene oggetto sopra il Play pausa pulsante:

Quindi, apri il attributi Ispettore e assegna il file di scena (Scene.scn) incluso nel progetto al Scena proprietà di questo oggetto di interfaccia:

Per lavorare con questo nel nostro codice, apri il SceneKitInterfaceController.swift file nel Assistente editore e creare e collegare un punto vendita chiamato sceneItem per il tuo oggetto di interfaccia:

@IBOutlet var sceneItem: WKInterfaceSCNScene!

Si prega di notare che, affinché il contenuto di SceneKit possa essere visualizzato correttamente, tu dovere collega l'oggetto di interfaccia nello storyboard con un IBOutlet nel tuo codice. Al momento della stesura di questo tutorial, non è menzionato da nessuna parte nella documentazione di Apple, ma è necessaria questa configurazione.

Infine, per implementare la funzionalità di riproduzione / pausa del nostro pulsante, sostituisci l'esistente didPress (pulsante :) metodo con il seguente:

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

Crea ed esegui la tua app e vedrai un cubo rosso girare sullo schermo:

Premendo il tasto Play pausa il pulsante dovrebbe fermarsi e avviare l'animazione della scena secondo necessità.

Mentre abbiamo appena trattato la visualizzazione dei contenuti di SceneKit in questo tutorial, l'aggiunta del supporto per SpriteKit è molto simile. L'unica differenza principale è che le risorse SpriteKit devono essere utilizzate con a WKInterfaceSKScene oggetto piuttosto che a WKInterfaceSCNScene oggetto per SceneKit.

UserNotifications

Un'altra aggiunta con iOS 10 e watchOS 3 è il framework UserNotifications. Questo framework fornisce un modo semplice per lavorare con le notifiche locali e remote inviate e consegnate dall'applicazione.

Se vuoi saperne di più su questo quadro, guarda il mio tutorial coprendolo qui:

  • Introduzione al framework UserNotifications

    In questo tutorial, imparerai a conoscere il nuovo framework UserNotifications in iOS 10, tvOS 10 e watchOS 3. Questo nuovo framework fornisce un set moderno di ...
    Davis Allie
    iOS

Si noti che non tutte le API nel framework UserNotifications su iOS sono disponibili in watchOS. Quelli che sono presenti, tuttavia, funzionano in modo identico su watchOS e iOS.

CloudKit, GameKit, CoreAudio e AVFoundation

Un'altra importante aggiunta in watchOS 3 è la disponibilità di framework che prima erano solo su altre piattaforme Apple, inclusi CloudKit, GameKit, CoreAudio e AVFoundation. 

Mentre il set completo di API di questi framework non sono disponibili in watchOS, le classi e i metodi che possono essere utilizzati nelle app di Apple Watch funzionano in modo identico alle loro controparti iOS e macOS.

2. Quadri esistenti

Oltre ad aggiungere molti nuovi framework, watchOS 3 apporta anche molti cambiamenti ai framework esistenti, inclusi WatchKit e ClockKit. 

WatchKit

La prima novità del framework WatchKit che vedremo è la novità WKCrownSequencer classe. Questa classe consente di recuperare dati dettagliati sulla corona digitale, compresa la sua velocità di rotazione corrente e se è inattiva o meno. Mentre questa informazione è accessibile tramite proprietà su a WKCrownSequencer oggetto, il WKCrownDelegate il protocollo consente di tenere traccia delle modifiche più facilmente. 

Tutti WKInterfaceController le sottoclassi ora hanno un crownSequencer proprietà, che è un'istanza del WKCrownSequencer classe. Ciò significa che per tenere traccia delle modifiche nella corona digitale, devi solo specificare un oggetto delegato e implementare i metodi che desideri.

Nel tuo progetto, apri il tuo CrownInterfaceController.swift file e fai il tuo CrownInterfaceController classe conforme al WKCrownDelegate protocollo:

class CrownInterfaceController: WKInterfaceController, WKCrownDelegate ...

Quindi, sostituisci la tua corrente sveglio (withContext :) metodo con il seguente:

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

Nel codice precedente, chiamiamo il messa a fuoco metodo sul crownSequencer perché altrimenti non riceverà eventi dalla corona digitale. Se un elemento dell'interfaccia viene messo a fuoco dall'utente che lo tocca, sarà necessario chiamare nuovamente questo metodo per crownSequencer per rilevare il movimento della corona digitale.

Infine, aggiungi i seguenti due metodi alla tua classe:

func crownDidRotate (_ crownSequencer: WKCrownSequencer ?, rotationalDelta: Double) if let speed = crownSequencer? .rotationsPerSecond label.setText ("Crown \ nspeed: \ n \ (velocità)") func crownDidBecomeIdle (_ crownSequencer: WKCrownSequencer? ) label.setText ("Crown \ nis idle")

In modo che questa interfaccia sia caricata, apri la tua Interface.storyboard file e trascina il Controller iniziale freccia per selezionare l'interfaccia in basso:

Crea ed esegui la tua app e vedrai che, quando viene spostata la corona digitale dell'orologio, l'etichetta sullo schermo riflette lo stato corrente:

Se utilizzi il simulatore Apple Watch, puoi "girare" la corona digitale semplicemente scorrendo con il mouse o il trackpad del Mac.

Oltre a rilevare i movimenti della corona digitale, il framework WatchKit in watchOS 3 fornisce inoltre le seguenti classi per la tua app per rilevare i gesti senza utilizzare gli elementi dell'interfaccia:

  • WKLongPressGestureRecognizer
  • WKPanGestureRecognizer
  • WKSwipeGestureRecognizer
  • WKTapGestureRecognizer

Come suggeriscono i loro nomi, questi riconoscitori di gesti funzionano in modo molto simile al modo in cui i riconoscitori gestuali funzionano su iOS. Queste classi sono particolarmente utili per rilevare i tocchi se utilizzi SceneKit, SpriteKit o un'interfaccia personalizzata basata sull'immagine per visualizzare il contenuto.

ClockKit

watchOS 3 porta anche alcune nuove importanti funzionalità per le app che sfruttano il framework ClockKit per fornire complicazioni sul quadrante. 

Innanzitutto, a causa della nuova funzionalità di elaborazione in background per le app in watchOS 3, se un utente mette una delle complicazioni dell'app sul quadrante dell'orologio, la tua app rimarrà in memoria e rimarrà in uno stato pronto per l'avvio. Inoltre, la tua app è in grado di aggiornare il suo contenuto in risposta a notifiche push fino a 50 volte al giorno. 

Se vuoi saperne di più sulla nuova funzionalità dell'app in background in watchOS 3, ho già trattato questo argomento qui:

  • Novità di watchOS 3: Attività in background

    In questo tutorial imparerai le nuove API WatchKit in watchOS 3, che consentono alle tue app di Apple Watch di aggiornare facilmente i loro contenuti nel ...
    Davis Allie
    watchos

Successivamente, alcuni nuovi modelli sono stati aggiunti alla famiglia di complicazioni extra large, incluso CLKComplicationTemplateExtraLargeColumnsText, CLKComplicationTemplateExtraLargeRingImage, CLKComplicationTemplateExtraLargeRingText, e CLKComplicationTemplateExtraLargeSimpleImage.

Infine, il CLKTextProvider class ora fornisce un'API per creare un provider di testo localizzabile per l'utilizzo di testo diverso per regioni del dispositivo specifiche.

Oltre a queste piccole aggiunte, ClockKit rimane invariato rispetto alla versione watchOS 2 dello scorso anno. Se vuoi saperne di più su questo framework e su come utilizzarlo da solo, puoi consultare il mio tutorial coprendolo qui:

  • Un'introduzione a ClockKit

    In questo tutorial, imparerai le basi del framework ClockKit e come creare complicazioni personalizzate per Apple Watch. Imparerai anche ...
    Davis Allie
    Xcode

PassKit

Mentre PassKit era già disponibile in forma limitata in watchOS 2, watchOS 3 supporta pienamente gli acquisti in-app di Apple Pay direttamente sull'orologio. Questo viene fatto attraverso alcune nuove classi e un protocollo, tra cui:

  • WKInterfacePaymentButton: usato per mostrare un pre-progettato Acquista con Apple Pay pulsante.
  • PKPaymentAuthorizationController: utilizzato per visualizzare un'interfaccia del modello con informazioni di pagamento che l'utente deve confermare. Questa classe svolge lo stesso ruolo di PKPaymentAuthorizationViewController classe ma non dipende da UIKit. Ciò significa che il PKPaymentAuthorizationController la classe può essere utilizzata sia su iOS che su watchOS.
  • PKPaymentAuthorizationControllerDelegate: le classi possono essere fatte per conformarsi a questo. Questo protocollo consente alla tua app di rispondere alle azioni dell'utente relative al tuo pagamento, anche quando selezionano un metodo di pagamento o quando il pagamento è stato autorizzato.

Conclusione

Nel complesso, watchOS 3 è una versione significativa per gli sviluppatori di app di Apple Watch. Giochi e applicazioni multimediali sono ora molto più facili da creare con l'aggiunta di framework, inclusi SceneKit, SpriteKit, GameKit e AVFoundation. L'aggiunta di CloudKit e i miglioramenti a WatchKit, ClockKit e PassKit ti consentono di creare app più funzionali che mai, diventando sempre più indipendenti da iPhone.

Come sempre, si prega di essere sicuri di lasciare i vostri commenti e feedback nella sezione commenti qui sotto. Per uno sguardo più da vicino su come creare un'app in WatchOS, consulta il corso watchOS 2 From Scratch qui su Envato Tuts+.

  • watchOS 2 From Scratch

    Costruire il supporto per gli orologi nella tua app è un ottimo modo per distinguersi nell'affollato App Store. Per farlo, devi imparare come scegliere WatchOS 2 e ...
    Derek Jensen
    watchOS 2