În acest an la WWDC, Apple a dezvăluit oficial watchOS 3, cea mai recentă actualizare a software-ului de bază al Apple Watch. Deși au fost afișate doar câteva funcții de utilizator "headline", watchOS 3 deschide o mulțime de API pentru dezvoltatori pentru a crea aplicații watchOS chiar mai funcționale. Multe dintre aceste API-uri au fost disponibile pe iOS de mai mulți ani și au fost acum adăugate la watchOS, inclusiv CloudKit, SpriteKit și SceneKit.
În acest tutorial, vă vom arăta cum puteți utiliza toate aceste API-uri noi în aplicațiile dvs. watchOS 3. Vă voi arăta, de asemenea, unele dintre cele mai semnificative completări ale cadrelor watchOS existente.
Acest tutorial necesită executarea Xcode 8 pe macOS 10.11 sau o versiune ulterioară. Se presupune, de asemenea, că sunteți confortabil cu elementele de bază ale WatchKit și dezvoltând aplicațiile watchOS. Dacă nu sunteți, atunci vă recomand să verificați câteva dintre următoarele tutoriale care acoperă elementele de bază ale WatchKit:
De asemenea, va trebui să descărcați proiectul Starter de la GitHub.
Două dintre cele mai mari adăugiri pentru watchOS 3 pentru dezvoltatori sunt cadrele SpriteKit și SceneKit. Aceste cadre oferă imagini grafice 2D și 3D, respectiv, în aplicațiile Apple Watch. Puteți să afișați scene în aplicațiile dvs. utilizând noua funcție WKInterfaceSCNScene
și WKInterfaceSKScene
obiectele de interfață, care sunt ambele subclase ale WKInterfaceObject
. În mod similar cu SCNView
și SKView
pe iOS, aceste obiecte de interfață oferă proprietăți și metode de manipulare a scenelor dvs., inclusiv funcția de redare / pauză, precum și iluminarea implicită.
Deschideți proiectul de pornire și deschideți Interface.storyboard fişier. Veți vedea că în acest fișier am stabilit deja câteva interfețe de bază pentru dvs. Pentru această parte a tutorialului, suntem interesați doar de controlerul de top al interfeței cu un singur buton. Mergeți la Biblioteca de obiecte în colțul din dreapta jos al codului Xcode și trageți în a SceneKit Scene obiecte de mai sus Redați / Pauză buton:
Apoi, deschideți atribute Inspector și atribuiți fișierul scenă (Scene.scn) incluse în proiect la Scenă proprietatea acestui obiect de interfață:
Pentru a lucra cu acest lucru în codul nostru, deschideți SceneKitInterfaceController.swift fișier în Editor asistent și să creeze și să lege o ieșire numită sceneItem
pentru obiectul de interfață:
@IBOutlet var scenaItem: WKInterfaceSCNScene!
Rețineți că, pentru ca conținutul dvs. SceneKit să fie redat corect, dvs. trebuie sa conectați obiectul de interfață în tabloul de bord cu un IBOutlet
în codul dvs. În momentul în care a scris acest tutorial, nu este menționat niciodată în documentația Apple, dar această configurare este necesară.
În cele din urmă, pentru a implementa funcția de redare / pauză a butonului nostru, înlocuiți funcția existentă didPress (buton :)
cu următoarele metode:
Funcția @IBAction didPress () if let paused = sceneItem.scene? .IsPaused sceneItem? .Scene? .IsPaused =! Paused
Construiți și rulați aplicația dvs. și veți vedea un cub roșu care se rotește pe ecran:
Apăsarea butonului Redare / Pauză butonul trebuie să se oprească și să pornească animația scenei dvs. după cum este necesar.
În timp ce am acoperit doar afișarea conținutului SceneKit în acest tutorial, adăugarea de suport pentru SpriteKit este foarte asemănătoare. Singura diferență majoră este că activele SpriteKit trebuie să fie utilizate cu un WKInterfaceSKScene
obiect mai degrabă decât a WKInterfaceSCNScene
obiect pentru SceneKit.
Un alt plus cu iOS 10 și watchOS 3 este cadrul UserNotifications. Acest cadru oferă o modalitate simplă de a lucra atât cu notificările locale, cât și cu cele de la distanță trimise și livrate de aplicația dvs..
Dacă doriți să aflați mai multe despre acest cadru, consultați tutorialul meu care îl acoperă aici:
Rețineți că nu toate API-urile din cadrul UserNotifications din iOS sunt disponibile în watchOS. Cei prezenți, totuși, funcționează identic pe watchOS și iOS.
Un alt plus major în watchOS 3 este disponibilitatea cadrelor care au fost anterior numai pe alte platforme Apple, inclusiv CloudKit, GameKit, CoreAudio și AVFoundation.
În timp ce setul complet de API din aceste cadre nu este disponibil în watchOS, clasele și metodele care pot fi utilizate în aplicațiile Apple Watch funcționează identic cu omologii lor iOS și macOS.
În plus față de adăugarea multor cadre noi, watchOS 3 aduce, de asemenea, multe modificări cadrelor existente - inclusiv WatchKit și ClockKit.
Prima caracteristică nouă în cadrul WatchKit pe care o vom uita este noul WKCrownSequencer
clasă. Această clasă vă permite să preluați date detaliate despre coroana digitală, inclusiv viteza actuală de rotație și dacă este sau nu inactiv. Deși aceste informații sunt accesibile prin intermediul proprietăților dintr-o WKCrownSequencer
obiect, WKCrownDelegate
vă permite să urmăriți mai ușor schimbările.
Toate WKInterfaceController
subclasele au acum crownSequencer
proprietate, care este o instanță a WKCrownSequencer
clasă. Aceasta înseamnă că pentru a urmări modificările în coroana digitală, trebuie doar să specificați un obiect delegat și să implementați metodele pe care le doriți.
În proiectul dvs., deschideți-vă CrownInterfaceController.swift fișier și face dvs. CrownInterfaceController
clasa este conformă cu WKCrownDelegate
protocol:
clasa CrownInterfaceController: WKInterfaceController, WKCrownDelegate ...
Apoi, înlocuiți-vă curentul treaz (withContext :)
cu următoarele metode:
override func awake (cu contextContext: Any?) super.awake (cuContext: context) crownSequencer.delegate = self crownSequencer.focus ()
În codul de mai sus, numim concentra
metoda pe crownSequencer
pentru că în caz contrar nu va primi evenimente din coroana digitală. Dacă un element din interfața dvs. se concentrează după ce utilizatorul o atinge, atunci va trebui să apelați din nou această metodă pentru crownSequencer
pentru a detecta mișcarea digitală a coroanei.
În cele din urmă, adăugați următoarele două metode la clasa dvs.:
functie crownDidRotate (_Sequencer: crownSequencer: WKCrownSequencer ?, rotationalDelta: Double) daca permiteti viteza = crownSequencer? .rotationsPerSecond label.setText ("Crown \ nspeed: \ n \ (speed)") func crownDidBecomeIdle (crownSequencer: WKCrownSequencer? ) label.setText ("Crown \ nis idle")
Pentru ca această interfață să fie încărcată, deschideți-vă Interface.storyboard fișier și trageți Controler inițial săgeată pentru a selecta interfața inferioară:
Construiți și difuzați aplicația și veți vedea că, atunci când coroana digitală a ceasului este mutată, eticheta de pe ecran reflectă starea curentă:
Dacă utilizați simulatorul Apple Watch, puteți "roti" coroana digitală doar prin derularea cu mouse-ul sau trackpad-ul Mac.
Pe lângă detectarea mișcărilor digitale ale coroanei, cadrul WatchKit din watchOS 3 oferă, de asemenea, următoarele clase pentru aplicația dvs. pentru a detecta gesturile fără a utiliza elemente de interfață:
WKLongPressGestureRecognizer
WKPanGestureRecognizer
WKSwipeGestureRecognizer
WKTapGestureRecognizer
După cum sugerează numele lor, acești recunoscători de gest funcționează foarte asemănător cu modul în care recunoașterea gesturilor funcționează pe iOS. Aceste clase sunt deosebit de utile pentru detectarea atingerilor dacă folosiți SceneKit, SpriteKit sau o interfață personalizată bazată pe imagini pentru a afișa conținut.
watchOS 3 aduce, de asemenea, câteva noi caracteristici importante pentru aplicațiile care profită de cadrul ClockKit pentru a oferi complicații pe fața ceasului.
În primul rând, datorită noii funcționalități de procesare a fundalului pentru aplicațiile din watchOS 3, dacă un utilizator pune una dintre complicațiile aplicației dvs. pe fața ceasului, atunci aplicația va rămâne în memorie și va rămâne într-o stare gata de lansare. În plus, aplicația dvs. are garanția că va putea să își actualizeze conținutul ca răspuns la notificările push de până la 50 de ori pe zi.
Dacă doriți să aflați mai multe despre noua funcționalitate a aplicației de fundal din watchOS 3, am abordat deja acest subiect aici:
Apoi, unele modele noi au fost adăugate la familia de complicații foarte mari, inclusiv CLKComplicationTemplateExtraLargeColumnsText
, CLKComplicationTemplateExtraLargeRingImage
, CLKComplicationTemplateExtraLargeRingText
, și CLKComplicationTemplateExtraLargeSimpleImage
.
În cele din urmă, CLKTextProvider
clasa oferă acum un API pentru a crea un furnizor de text localizabil pentru a utiliza text diferit pentru anumite regiuni de dispozitive.
În afară de aceste mici adăugări, ClockKit rămâne neschimbată față de lansarea de anul trecut a watchOS 2. Dacă doriți să aflați mai multe despre acest cadru și cum să îl utilizați singur, puteți să vedeți tutorialul care îl acoperă aici:
În timp ce PassKit era deja disponibil într-o formă limitată în watchOS 2, watchOS 3 oferă suportul complet pentru achizițiile Apple Pay în aplicație chiar în ceas. Acest lucru se face prin unele clase noi și un protocol, inclusiv:
WKInterfacePaymentButton
: folosit pentru a arăta un pre-proiectat Cumpărați cu Apple Pay buton.PKPaymentAuthorizationController
: utilizat pentru a afișa o interfață model cu informații de plată pentru confirmare de către utilizator. Această clasă îndeplinește același rol ca și PKPaymentAuthorizationViewController
dar nu depinde de UIKit. Aceasta înseamnă că PKPaymentAuthorizationController
clasa poate fi utilizată atât pe iOS cât și pe watchOS.PKPaymentAuthorizationControllerDelegate
: clasele pot fi făcute pentru a se conforma acestui lucru. Acest protocol permite aplicației dvs. să răspundă acțiunilor utilizatorului privind plata, inclusiv atunci când selectează o metodă de plată sau când plata a fost autorizată.În general, watchOS 3 este o versiune semnificativă pentru dezvoltatorii aplicațiilor Apple Watch. Jocuri și aplicații bogate în medii sunt acum mult mai ușor de creat cu adăugarea de cadre, inclusiv SceneKit, SpriteKit, GameKit și AVFoundation. Adăugarea CloudKit și îmbunătățirile pentru WatchKit, ClockKit și PassKit vă permit să creați aplicații mai funcționale decât oricând, devenind tot mai independente de iPhone.
Ca întotdeauna, vă rugăm să aveți grijă să lăsați comentariile și feedback-ul dvs. în secțiunea de comentarii de mai jos. Pentru o privire mai atentă asupra modului de creare a unei aplicații în WatchOS, verificați cursul WatchOS 2 de la Scratch aici pe Envato Tuts+.