Vad är nytt i watchOS 3?

Introduktion

I år på WWDC avslöjade Apple officiellt watchOS 3, deras senaste uppdatering till Apple Watchs kärnprogramvara. Medan det bara fanns några "headline" -funktioner som visas, öppnar watchOS 3 många API-apparater för utvecklare för att skapa ännu mer funktionella watchOS-appar. Många av dessa API har varit tillgängliga på iOS i flera år och har nu lagts till i watchOS, inklusive CloudKit, SpriteKit och SceneKit.

I den här handledningen visar jag dig hur du kan använda alla dessa nya API i dina watchOS 3-program. Jag ska också visa dig några av de viktigaste tilläggen till befintliga watchOS-ramar.

förutsättningar

Denna handledning kräver att du kör Xcode 8 på MacOS 10.11 eller senare. Det förutsätter också att du är bekväm med grunderna i WatchKit och utvecklar watchOS-appar. Om du inte är så rekommenderar jag att du checkar ut några av följande handledning som täcker grunderna i WatchKit:

Du måste också ladda ner startprojektet från GitHub.

1. Nya ramar

SpriteKit och SceneKit

Två av de största tilläggen till watchOS 3 för utvecklare är SpriteKit och SceneKit-ramarna. Dessa ramverk ger både 2D- och 3D-grafik i Apple Watch-applikationer. Du kan visa scener i dina appar med hjälp av det nya WKInterfaceSCNScene och WKInterfaceSKScene gränssnittsobjekt, vilka båda är underklasser av WKInterfaceObject. På samma sätt som SCNView och SKView På IOS erbjuder dessa gränssnittsobjekt egenskaper och metoder för att manipulera dina scener, inklusive spel / pausfunktion samt standardbelysning.

Öppna startprojektet och öppna upp Interface.storyboard fil. Du kommer att se att i den här filen har jag redan skapat några grundläggande gränssnitt för dig. För den här delen av handledningen är vi bara intresserade av den översta gränssnittskontrollen med en enda knapp. Gå till Objektbibliotek i nedre högra hörnet av Xcode och dra i en SceneKit Scene föremål ovanför Spela upp / pausa knapp:

Öppna sedan upp attribut Inspektör och tilldela scenfilen (Scene.scn) ingår i projektet till Scen egenskapen för detta gränssnittsobjekt:

För att arbeta med detta i vår kod öppnar du SceneKitInterfaceController.swift fil i Assistentredaktör och skapa och länka ett utlopp som heter sceneItem för ditt gränssnittsobjekt:

@IBOutlet var scenItem: WKInterfaceSCNScene!

Observera att för att ditt SceneKit-innehåll ska kunna fungera korrekt, ska du måste länka gränsobjektet i ditt storyboard med en IBOutlet i din kod. Vid skrivning av denna handledning nämns det inte någonstans i Apples dokumentation, men denna inställning är nödvändig.

Slutligen, för att genomföra spel / pausfunktionaliteten hos vår knapp, ersätt den befintliga didPress (knapp :) metod med följande:

@IBAction func didPress () om släppt paus = sceneItem.scene? .IsPaused sceneItem? .Scene? .IsPaused =! Pausat

Bygg och kör din app och du kommer att se en röd kubsspinnning på skärmen:

Tryck på Play / Pause knappen bör sluta och starta animeringen av din scen efter behov.

Medan vi bara täckte visning av SceneKit-innehåll i denna handledning, lägger vi till stöd för SpriteKit mycket liknande. Den enda stora skillnaden är att SpriteKit-tillgångar måste användas med a WKInterfaceSKScene objekt snarare än a WKInterfaceSCNScene föremål för SceneKit.

UserNotifications

Ett annat tillägg med iOS 10 och watchOS 3 är UserNotifications-ramverket. Denna ram tillhandahåller ett enkelt sätt att arbeta med både lokala och fjärranslutna meddelanden som skickas och levereras av din ansökan.

Om du vill lära dig mer om denna ram, kolla in min handledning som täcker den här:

  • En introduktion till UserNotifications Framework

    I denna handledning kommer du att lära dig om det nya UserNotifications-ramverket i iOS 10, tvOS 10 och watchOS 3. Den här nya ramen ger en modern uppsättning av ...
    Davis Allie
    iOS

Observera att inte alla API: er i UserNotifications-ramverket på iOS är tillgängliga i watchOS. De som är närvarande fungerar dock identiskt på watchOS och iOS.

CloudKit, GameKit, CoreAudio och AVFoundation

Ett annat viktigt tillägg i watchOS 3 är tillgången till ramar som tidigare endast fanns på andra Apple-plattformar, inklusive CloudKit, GameKit, CoreAudio och AVFoundation. 

Medan den fullständiga uppsättningen API-filer från dessa ramar inte är tillgängliga i watchOS kan de klasser och metoder som kan användas i Apple Watch-apparater fungera identiskt med deras iOS- och macOS-motsvarigheter.

2. Befintliga ramar

Förutom att lägga till många nya ramar, leder watchOS 3 också många ändringar till befintliga ramar, inklusive WatchKit och ClockKit. 

WatchKit

Den första nya funktionen i WatchKit-ramverket som vi ska titta på är den nya WKCrownSequencer klass. Med den här klassen kan du hämta detaljerad information om den digitala kronan, inklusive dess aktuella rotationshastighet och om den är ledig eller inte. Medan denna information är tillgänglig via egenskaper på en WKCrownSequencer objekt, den WKCrownDelegate protokollet gör att du enkelt kan spåra ändringar. 

Allt WKInterfaceController underklasser har nu a crownSequencer egendom, vilket är en förekomst av WKCrownSequencer klass. Det betyder att för att spåra ändringar i den digitala kronan behöver du bara ange ett delegatobjekt och implementera de metoder du vill ha.

Öppna ditt projekt i ditt projekt CrownInterfaceController.swift fil och gör din CrownInterfaceController klassen överensstämmer med WKCrownDelegate protokoll:

klass CrownInterfaceController: WKInterfaceController, WKCrownDelegate ...

Nästa, ersätt din nuvarande vaken (withContext :) metod med följande:

åsidosätta func awake (withContext context: Any?) super.awake (withContext: context) crownSequencer.delegate = self crownSequencer.focus ()

I ovanstående kod kallar vi fokus metod på crownSequencer för annars kommer det inte att få händelser från den digitala kronan. Om ett objekt i ditt gränssnitt blir fokuserat av användaren som knackar på det måste du ringa den här metoden igen för crownSequencer för att upptäcka digital kretsrörelse.

Slutligen lägg till följande två metoder till din klass:

func crownDidRotate (_ crownSequencer: WKCrownSequencer ?, rotationsdel: Dubbel) om låt hastighet = crownSequencer? .rotationsPerSecond label.setText ("Crown \ nspeed: \ n \ (hastighet)" func crownDidBecomeIdle (_ crownSequencer: WKCrownSequencer? ) label.setText ("Crown \ nis idle")

Så att detta gränssnitt är laddat, öppna din Interface.storyboard fil och dra den Initial Controller pil för att välja det nedre gränssnittet:

Bygg och kör din app och du kommer att se att när klockans digitala krona flyttas, speglar skärmetiketten den aktuella statusen:

Om du använder Apple Watch-simulatorn kan du "vrida" den digitala kronan genom att bara bläddra med din Macs mus eller styrplatta.

Förutom att upptäcka digitala kronrörelser ger WatchKit-ramverket i watchOS 3 också följande klasser för din app att upptäcka gester utan att använda gränssnittsobjekt:

  • WKLongPressGestureRecognizer
  • WKPanGestureRecognizer
  • WKSwipeGestureRecognizer
  • WKTapGestureRecognizer

Som deras namn antyder fungerar dessa gestkännare mycket på samma sätt som gestkännare arbetar på iOS. Dessa klasser är särskilt användbara för att upptäcka beröringar om du använder SceneKit, SpriteKit eller ett anpassat bildbaserat gränssnitt för visning av innehåll.

ClockKit

watchOS 3 ger också några nya viktiga funktioner för appar som utnyttjar ClockKit-ramverket för att ge komplikationer på klockans ansikte. 

För det första, på grund av den nya bakgrundsbehandlingsfunktionaliteten för appar i watchOS 3, om en användare lägger en av dina programkomplikationer i sitt klockans ansikte, kommer din app att vara kvar i minnet och förblir i ett startläge. Dessutom är din app garanterad att kunna uppdatera innehållet som svar på push-meddelanden upp till 50 gånger per dag. 

Om du vill lära dig mer om den nya bakgrundsappsfunktionaliteten i watchOS 3 har jag redan täckt det här ämnet här:

  • Vad är nytt i watchOS 3: Bakgrundsuppgifter

    I den här handledningen läser du om de nya WatchKit-API: erna i watchOS 3, vilket gör att dina Apple Watch-appar enkelt kan uppdatera innehållet i ...
    Davis Allie
    watchos

Därefter har några nya mallar lagts till i den extra stora komplikationsfamiljen, inklusive CLKComplicationTemplateExtraLargeColumnsText, CLKComplicationTemplateExtraLargeRingImage, CLKComplicationTemplateExtraLargeRingText, och CLKComplicationTemplateExtraLargeSimpleImage.

Slutligen, den CLKTextProvider klassen tillhandahåller nu ett API för att skapa en lokaliserbar textleverantör för att använda annan text för specifika enhetsområden.

Bortsett från dessa små tillägg, är ClockKit oförändrad från förra årets watchOS 2 release. Om du vill lära dig mer om denna ram och hur du använder det själv kan du kolla in min handledning som täcker den här:

  • En introduktion till ClockKit

    I den här handledningen lär du dig information om grunderna i ClockKit-ramen och hur du skapar anpassade komplikationer för Apple Watch. Du lär dig också ...
    Davis Allie
    Xcode

PassKit

Medan PassKit redan var tillgängligt i en begränsad form i watchOS 2, ger watchOS 3 fullt stöd för Apple Pay-inköp direkt på klockan. Detta görs genom några nya klasser och ett protokoll, inklusive:

  • WKInterfacePaymentButton: brukade visa en förkonstruerad Köp med Apple Pay knapp.
  • PKPaymentAuthorizationController: används för att visa ett modellgränssnitt med betalningsinformation för användaren att bekräfta. Denna klass har samma roll som PKPaymentAuthorizationViewController klass men beror inte på UIKit. Detta innebär att PKPaymentAuthorizationController klass kan användas på både iOS och watchOS.
  • PKPaymentAuthorizationControllerDelegate: klasser kan göras för att överensstämma med detta. Detta protokoll låter din app svara på användarens åtgärder angående din betalning, inklusive när de väljer en betalningsmetod eller när betalningen har godkänts.

Slutsats

Sammantaget är watchOS 3 ett viktigt utgivande för utvecklare av Apple Watch-appar. Spel och mediarika applikationer är nu mycket enklare att skapa med tillägg av ramar, inklusive SceneKit, SpriteKit, GameKit och AVFoundation. Tillägget av CloudKit och förbättringar till WatchKit, ClockKit och PassKit gör att du kan skapa mer funktionella appar än någonsin innan du blir mer oberoende av iPhone.

Som alltid, var noga med att lämna dina kommentarer och feedback i kommentarfältet nedan. För en närmare titt på hur man skapar en app i WatchOS, kolla in watchOS 2 From Scratch Course här på Envato Tuts+.

  • watchOS 2 From Scratch

    Att bygga klockstöd i din app är ett utmärkt sätt att sticka ut i det mjuka App Store. För att göra det måste du lära dig hur du riktar in watchOS 2 och ...
    Derek Jensen
    watchOS 2