Hva er nytt i watchOS 3?

Introduksjon

I år på WWDC avslørte Apple offisielt WatchOS 3, deres siste oppdatering til Apple Watch's kjerneprogramvare. Mens det bare var noen få "overskrift" -brukerfunksjoner som ble vist, åpner watchOS 3 mange APIer for utviklere for å skape enda mer funksjonelle watchOS-apper. Mange av disse APIene har vært tilgjengelige på iOS i flere år og har nå blitt lagt til i watchOS, inkludert CloudKit, SpriteKit og SceneKit.

I denne veiledningen viser jeg deg hvordan du kan bruke alle disse nye APIene i watchOS 3-applikasjonene dine. Jeg vil også vise deg noen av de viktigste tilleggene til eksisterende watchOS-rammer.

Forutsetninger

Denne opplæringen krever at du kjører Xcode 8 på MacOS 10.11 eller senere. Det går også ut fra at du er komfortabel med grunnleggende om WatchKit og utvikler watchOS-apper. Hvis du ikke er det, anbefaler jeg at du sjekker ut noen av følgende veiledninger som dekker grunnleggende om WatchKit:

Du må også laste ned startprosjektet fra GitHub.

1. Nye rammer

SpriteKit og SceneKit

To av de største tilleggene til watchOS 3 for utviklere er SpriteKit og SceneKit-rammene. Disse rammene gir henholdsvis rich 2D- og 3D-grafikk i Apple Watch-applikasjoner. Du kan vise scener i appene dine ved å bruke det nye WKInterfaceSCNScene og WKInterfaceSKScene grensesnitt objekter, som begge er underklasser av WKInterfaceObject. Tilsvarende til SCNView og SKView På iOS gir disse grensesnittobjektene egenskaper og metoder for å manipulere scenene dine, inkludert spill / pausefunksjonalitet og standardbelysning.

Åpne startbildeprosjektet og åpne opp Interface.storyboard fil. Du vil se at i denne filen har jeg allerede opprettet noen grunnleggende grensesnitt for deg. For denne delen av opplæringen er vi bare interessert i den øverste grensesnittkontrollen med en enkelt knapp. Gå til Objektbibliotek i nederste høyre hjørne av Xcode og dra i en SceneKit Scene objekt over Spill / Pause knapp:

Deretter åpner du Egenskaper Inspektør og tilordne scenefilen (Scene.scn) inkludert i prosjektet til scene Egenskapen til dette grensesnittobjektet:

For å jobbe med dette i vår kode, åpne opp SceneKitInterfaceController.swift fil i Assistent redaktør og opprett og lenke et uttak som heter sceneItem for grensesnittet ditt:

@IBOutlet var sceneItem: WKInterfaceSCNScene!

Vær oppmerksom på at for at ditt SceneKit-innhold skal gjengis riktig, gjør du det  lenke grensesnittobjektet i storyboardet med en IBOutlet i koden din. Når du skriver denne opplæringen, er det ikke nevnt hvor som helst i Apples dokumentasjon, men dette oppsettet kreves.

Til slutt, for å implementere spill / pause funksjonaliteten til vår knapp, erstatt eksisterende didPress (knapp :) metode med følgende:

@IBAction func didPress () hvis la pause = sceneItem.scene? .IsPaused sceneItem? .Scene? .IsPaused =! Pauset

Bygg og kjør appen din, og du vil se en rød kubespinn på skjermen:

Trykk på Play / Pause knappen bør stoppe og starte animasjonen av scenen etter behov.

Mens vi bare dekket viser SceneKit-innhold i denne opplæringen, legger du til støtte for SpriteKit, som er veldig lik. Den eneste store forskjellen er at SpriteKit-eiendeler må brukes med en WKInterfaceSKScene objekt i stedet for a WKInterfaceSCNScene protesterer mot SceneKit.

UserNotifications

Et annet tillegg med iOS 10 og watchOS 3 er UserNotifications-rammen. Dette rammeverket gir en enkel måte å jobbe med både lokale og eksterne meldinger som sendes og leveres av søknaden din.

Hvis du vil lære mer om dette rammene, sjekk ut min veiledning som dekker det her:

  • En introduksjon til UserNotifications Framework

    I denne opplæringen lærer du om det nye UserNotifications-rammeverket i iOS 10, tvOS 10 og watchOS 3. Dette nye rammeverket gir et moderne sett med ...
    Davis Allie
    iOS

Vær oppmerksom på at ikke alle APIene i UserNotifications-rammen på iOS er tilgjengelige i watchOS. De som er tilstede, fungerer imidlertid identisk på watchOS og iOS.

CloudKit, GameKit, CoreAudio og AVFoundation

Et annet stort tillegg i watchOS 3 er tilgjengeligheten av rammebetingelser som tidligere kun var på andre Apple-plattformer, inkludert CloudKit, GameKit, CoreAudio og AVFoundation. 

Selv om det fulle settet av APIer fra disse rammene ikke er tilgjengelig i watchOS, kan klassene og metodene som kan brukes i Apple Watch-apper, fungere identisk med deres iOS- og macOS-kolleger.

2. Eksisterende rammer

I tillegg til å legge til mange nye rammer, gir watchOS 3 også mange endringer i eksisterende rammer, inkludert WatchKit og ClockKit. 

WatchKit

Den første nye funksjonen i WatchKit-rammen vi skal se på, er den nye WKCrownSequencer klasse. Denne klassen lar deg hente detaljerte data om den digitale kronen, inkludert dens nåværende rotasjonshastighet og om den er tomgang eller ikke. Mens denne informasjonen er tilgjengelig via egenskaper på en WKCrownSequencer objekt, den WKCrownDelegate protokollen gjør det mulig å spore endringer lettere. 

Alle WKInterfaceController subklasser har nå a crownSequencer eiendom, som er en forekomst av WKCrownSequencer klasse. Dette betyr at for å spore endringer i den digitale kronen må du bare angi et delegatobjekt og implementere metodene du vil ha.

I ditt prosjekt, åpne opp din CrownInterfaceController.swift filen og lag din CrownInterfaceController klassen samsvarer med WKCrownDelegate protokoll:

klasse CrownInterfaceController: WKInterfaceController, WKCrownDelegate ...

Neste, erstatt din nåværende våken (withContext :) metode med følgende:

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

I koden ovenfor kaller vi fokus metode på crownSequencer fordi ellers vil det ikke motta hendelser fra den digitale kronen. Hvis et element i grensesnittet ditt blir fokusert av brukeren og klikker på det, må du ringe denne metoden igjen for crownSequencer å oppdage digital krone bevegelse.

Til slutt legger du til følgende to metoder i klassen din:

func crownDidRotate (_ crownSequencer: WKCrownSequencer ?, rotationalDelta: Dobbel) hvis la hastighet = crownSequencer? .rotationsPerSecond label.setText ("Crown \ nspeed: \ n \ (speed)" Func crownDidBecomeIdle (_ crownSequencer: WKCrownSequencer? ) label.setText ("Crown \ nis idle")

Slik at dette grensesnittet er lastet, åpner du Interface.storyboard fil og dra Initial Controller pil for å velge det nederste grensesnittet:

Bygg og kjør appen din, og du vil se at når klokkens digitale krone er flyttet, gjenspeiler skjermetiketten gjeldende status:

Hvis du bruker Apple Watch-simulatoren, kan du "slå" den digitale kronen ved bare å rulle med Mac-musen eller styreflaten.

I tillegg til å oppdage digitale kronebevegelser, gir WatchKit-rammeverket i watchOS 3 også følgende klasser for appen din for å oppdage bevegelser uten å bruke grensesnittelementer:

  • WKLongPressGestureRecognizer
  • WKPanGestureRecognizer
  • WKSwipeGestureRecognizer
  • WKTapGestureRecognizer

Som navnene deres antyder, fungerer disse gjenkjenningsmennene på samme måte som måten gjenkjenningsmenn jobber på iOS. Disse klassene er spesielt nyttige for å oppdage berøringer hvis du bruker SceneKit, SpriteKit eller et egendefinert bildebasert grensesnitt for å vise innhold.

ClockKit

watchOS 3 gir også noen få nye viktige funksjoner for apper som utnytter ClockKit-rammen for å gi komplikasjoner på klokken. 

For det første, på grunn av den nye bakgrunnsbehandlingsfunksjonaliteten for apper i watchOS 3, hvis en bruker legger en av programmets komplikasjoner på deres visningsansikt, vil appen din forbli i minnet og forbli i en klar til lanseringsstatus. I tillegg er appen din garantert å kunne oppdatere innholdet som svar på pushvarsler opptil 50 ganger per dag. 

Hvis du vil lære mer om den nye bakgrunnsappsfunksjonaliteten i watchOS 3, har jeg allerede dekket dette emnet her:

  • Hva er nytt i watchOS 3: Bakgrunnsoppgaver

    I denne opplæringen lærer du om de nye WatchKit-APIene i watchOS 3, som gjør at Apple Watch-appene dine enkelt kan oppdatere innholdet i ...
    Davis Allie
    watchOS

Deretter har noen nye maler blitt lagt til den ekstra store komplikasjonsfamilien, inkludert CLKComplicationTemplateExtraLargeColumnsText, CLKComplicationTemplateExtraLargeRingImage, CLKComplicationTemplateExtraLargeRingText, og CLKComplicationTemplateExtraLargeSimpleImage.

Til slutt, CLKTextProvider klassen gir nå en API for å lage en lokaliserbar tekstleverandør for å bruke forskjellig tekst for bestemte enhetsområder.

Bortsett fra disse små tilleggene, er ClockKit uendret fra fjorårets watchOS 2 release. Hvis du vil lære mer om dette rammeverket og hvordan du bruker det selv, kan du sjekke ut min veiledning som dekker det her:

  • En introduksjon til ClockKit

    I denne opplæringen lærer du om grunnleggende i ClockKit-rammen og hvordan du oppretter egendefinerte komplikasjoner for Apple Watch. Du vil også lære ...
    Davis Allie
    Xcode

PassKit

Mens PassKit allerede var tilgjengelig i et begrenset skjema i watchOS 2, gir watchOS 3 full støtte for kjøp av Apple Pay i apper rett på klokken. Dette gjøres gjennom noen nye klasser og en protokoll, inkludert:

  • WKInterfacePaymentButton: brukes til å vise en pre-designet Kjøp med Apple Pay knapp.
  • PKPaymentAuthorizationController: brukes til å vise et modellgrensesnitt med betalingsinformasjon for brukeren å bekrefte. Denne klassen har samme rolle som PKPaymentAuthorizationViewController klassen, men er ikke avhengig av UIKit. Dette betyr at PKPaymentAuthorizationController klassen kan brukes på både iOS og watchOS.
  • PKPaymentAuthorizationControllerDelegate: Klasser kan gjøres for å imøtekomme dette. Denne protokollen lar appen din svare på brukerens handlinger angående betalingen din, inkludert når de velger en betalingsmåte eller når betalingen er godkjent.

Konklusjon

Samlet sett er watchOS 3 en betydelig utgivelse for utviklere av Apple Watch-apper. Spill og medierike applikasjoner er nå langt enklere å lage med tillegg av rammer, inkludert SceneKit, SpriteKit, GameKit og AVFoundation. Tillegget til CloudKit og forbedringer til WatchKit, ClockKit og PassKit gjør at du kan lage flere funksjonelle programmer enn noen gang før du blir mer uavhengig av iPhone.

Som alltid, vær så snill å legge igjen dine kommentarer og tilbakemeldinger i kommentarfeltet nedenfor. For en nærmere titt på hvordan du lager en app i WatchOS, sjekk ut watchOS 2 From Scratch Course her på Envato Tuts+.

  • watchOS 2 fra grunnen av

    Å bygge se støtte på appen din er en fin måte å skille seg ut i den overfylte App Store. For å gjøre dette må du lære å målrette watchOS 2 og ...
    Derek Jensen
    watchOS 2