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.
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.
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.
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:
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.
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.
Oltre ad aggiungere molti nuovi framework, watchOS 3 apporta anche molti cambiamenti ai framework esistenti, inclusi WatchKit e ClockKit.
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.
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:
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:
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.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+.