Was ist neu in watchOS 3?

Einführung

Auf der diesjährigen WWDC stellte Apple offiziell watchOS 3 vor, das neueste Update der Kernsoftware der Apple Watch. Während nur wenige "Schlagzeilen" -Benutzerfunktionen gezeigt wurden, bietet watchOS 3 eine Vielzahl von APIs für Entwickler, um noch mehr funktionale WatchOS-Apps zu erstellen. Viele dieser APIs sind seit mehreren Jahren unter iOS verfügbar und wurden jetzt zu watchOS hinzugefügt, einschließlich CloudKit, SpriteKit und SceneKit.

In diesem Tutorial zeige ich Ihnen, wie Sie all diese neuen APIs in Ihren watchOS 3-Anwendungen verwenden können. Ich zeige Ihnen auch einige der wichtigsten Ergänzungen zu bestehenden watchOS-Frameworks.

Voraussetzungen

Für dieses Lernprogramm müssen Sie Xcode 8 unter macOS 10.11 oder höher ausführen. Es wird auch davon ausgegangen, dass Sie mit den Grundlagen von WatchKit und der Entwicklung von watchOS-Apps vertraut sind. Wenn nicht, empfehle ich Ihnen, einige der folgenden Tutorials zu den Grundlagen von WatchKit durchzulesen:

Sie müssen auch das Starterprojekt von GitHub herunterladen.

1. Neue Rahmenbedingungen

SpriteKit und SceneKit

Zwei der größten Erweiterungen von watchOS 3 für Entwickler sind die SpriteKit- und SceneKit-Frameworks. Diese Frameworks bieten umfassende 2D- und 3D-Grafiken in Apple Watch-Anwendungen. Sie können Szenen in Ihren Apps anzeigen, indem Sie die neue verwenden WKInterfaceSCNScene und WKInterfaceSKScene Schnittstellenobjekte, die beide Unterklassen von sind WKInterfaceObject. ähnlich zu SCNView und SKView Unter iOS bieten diese Schnittstellenobjekte Eigenschaften und Methoden zur Bearbeitung Ihrer Szenen, einschließlich Wiedergabe / Pause-Funktion sowie Standardbeleuchtung.

Öffnen Sie das Starterprojekt und öffnen Sie das Interface.storyboard Datei. Sie werden in dieser Datei sehen, dass ich bereits einige grundlegende Schnittstellen für Sie eingerichtet habe. Für diesen Teil des Tutorials interessieren wir uns nur für die oberste Schnittstellensteuerung mit einer einzigen Taste. Gehe zum Objektbibliothek in der rechten unteren Ecke von Xcode und ziehen Sie ein SceneKit-Szene Objekt über dem Spielpause Taste:

Als nächstes öffnen Sie die Attribute Inspektor und weisen Sie die Szenendatei zu (Scene.scn) im Projekt enthalten Szene Eigenschaft dieses Schnittstellenobjekts:

Um damit in unserem Code zu arbeiten, öffnen Sie die SceneKitInterfaceController.swift Datei in der Schnittassistenz und erstellen und verknüpfen Sie einen Outlet namens sceneItem für Ihr Schnittstellenobjekt:

@IBOutlet var sceneItem: WKInterfaceSCNScene!

Bitte beachten Sie Folgendes, damit Ihr SceneKit-Inhalt korrekt gerendert wird Muss Verknüpfen Sie das Schnittstellenobjekt in Ihrem Storyboard mit einem IBOutlet in Ihrem Code. Zum Zeitpunkt der Erstellung dieses Tutorials wird es nirgendwo in der Dokumentation von Apple erwähnt. Dieses Setup ist jedoch erforderlich.

Um die Play / Pause-Funktion unserer Schaltfläche zu implementieren, ersetzen Sie die vorhandene didPress (Taste :) Methode mit der folgenden:

@IBAction func didPress () wenn paused = sceneItem.scene? .IsPaused sceneItem? .Scene? .IsPaused =! Paused

Erstellen und starten Sie Ihre App und Sie sehen einen roten Würfel auf dem Bildschirm:

Drücken Sie die Spielpause Die Schaltfläche sollte stoppen und die Animation Ihrer Szene nach Bedarf starten.

Während wir in diesem Tutorial gerade die Anzeige von SceneKit-Inhalten besprochen haben, ist das Hinzufügen von Unterstützung für SpriteKit sehr ähnlich. Der einzige wesentliche Unterschied besteht darin, dass SpriteKit-Assets mit a verwendet werden müssen WKInterfaceSKScene Objekt statt eines WKInterfaceSCNScene Objekt für SceneKit.

UserNotifications

Eine weitere Ergänzung zu iOS 10 und watchOS 3 ist das UserNotifications-Framework. Dieses Framework bietet eine einfache Möglichkeit, mit lokalen und Remote-Benachrichtigungen zu arbeiten, die von Ihrer Anwendung gesendet und übermittelt werden.

Wenn Sie mehr über dieses Framework erfahren möchten, schauen Sie sich mein Tutorial hier an:

  • Eine Einführung in das UserNotifications Framework

    In diesem Lernprogramm erfahren Sie mehr über das neue UserNotifications-Framework in iOS 10, tvOS 10 und watchOS 3. Dieses neue Framework bietet ein modernes Set…
    Davis Allie
    iOS

Bitte beachten Sie, dass nicht alle APIs im UserNotifications-Framework unter iOS in watchOS verfügbar sind. Diejenigen, die vorhanden sind, funktionieren jedoch auf watchOS und iOS identisch.

CloudKit, GameKit, CoreAudio und AVFoundation

Eine weitere wichtige Neuerung in watchOS 3 ist die Verfügbarkeit von Frameworks, die zuvor nur auf anderen Apple-Plattformen, einschließlich CloudKit, GameKit, CoreAudio und AVFoundation, verfügbar waren. 

Während der gesamte Satz von APIs aus diesen Frameworks in watchOS nicht verfügbar ist, funktionieren die Klassen und Methoden, die in Apple Watch-Apps verwendet werden können, identisch zu ihren iOS- und macOS-Pendants.

2. Bestehende Frameworks

Mit watchOS 3 werden nicht nur viele neue Frameworks hinzugefügt, sondern auch viele Änderungen an vorhandenen Frameworks vorgenommen, einschließlich WatchKit und ClockKit. 

WatchKit

Das erste neue Feature im WatchKit-Framework, das wir uns ansehen werden, ist das neue WKCrownSequencer Klasse. Mit dieser Klasse können Sie detaillierte Daten zur digitalen Krone abrufen, einschließlich der aktuellen Rotationsgeschwindigkeit und ob sie sich im Leerlauf befindet. Auf diese Informationen kann zwar über Eigenschaften auf a zugegriffen werden WKCrownSequencer Objekt, das WKCrownDelegate Mit dem Protokoll können Sie Änderungen leichter nachverfolgen. 

Alles WKInterfaceController Unterklassen haben jetzt eine KroneSequencer Eigenschaft, die eine Instanz der WKCrownSequencer Klasse. Dies bedeutet, dass Sie zum Nachverfolgen von Änderungen in der digitalen Krone nur ein Delegatobjekt angeben und die gewünschten Methoden implementieren müssen.

Öffnen Sie in Ihrem Projekt Ihre CrownInterfaceController.swift Datei und machen Sie Ihre CrownInterfaceController Klasse entsprechen der WKCrownDelegate Protokoll:

Klasse CrownInterfaceController: WKInterfaceController, WKCrownDelegate …

Als nächstes ersetzen Sie Ihren Strom wach (withContext :) Methode mit der folgenden:

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

Im obigen Code rufen wir die Fokus Methode auf der KroneSequencer da sonst keine Ereignisse von der digitalen Krone empfangen werden. Wenn ein Element in Ihrer Benutzeroberfläche durch den Benutzer, der darauf tippt, fokussiert wird, müssen Sie diese Methode erneut aufrufen KroneSequencer um die Bewegung der digitalen Krone zu erkennen.

Fügen Sie Ihrer Klasse schließlich die folgenden zwei Methoden hinzu:

func crownDidRotate (_ crownSequencer: WKCrownSequencer ?, rotationDelta: Double) wenn Geschwindigkeit = crownSequencer? .rotationsPerSecond label.setText ("Crown \ nspeed: \ n \ (speed)") ) label.setText ("Crown \ nis idle")

Damit diese Schnittstelle geladen wird, öffnen Sie Ihre Interface.storyboard Datei und ziehen Sie die Anfangssteuerung Pfeil zur Auswahl der unteren Schnittstelle:

Erstellen Sie Ihre App und führen Sie sie aus. Sie werden sehen, dass beim Verschieben der digitalen Krone der Uhr der Bildschirm auf dem Bildschirm den aktuellen Status anzeigt:

Wenn Sie den Apple Watch-Simulator verwenden, können Sie die digitale Krone "drehen", indem Sie einfach mit der Maus oder dem Trackpad Ihres Mac scrollen.

Neben der Erkennung digitaler Kronenbewegungen bietet das WatchKit-Framework in watchOS 3 die folgenden Klassen für Ihre App, um Gesten ohne Verwendung von Schnittstellenelementen zu erkennen:

  • WKLongPressGestureRecognizer
  • WKPanGestureRecognizer
  • WKSwipeGestureRecognizer
  • WKTapGestureRecognizer

Wie ihre Namen vermuten lassen, funktionieren diese Gestenerkenner sehr ähnlich wie die Gestenerkenner auf iOS. Diese Klassen sind besonders nützlich, um Berührungen zu erkennen, wenn Sie SceneKit, SpriteKit oder eine benutzerdefinierte, bildbasierte Oberfläche zum Anzeigen von Inhalt verwenden.

ClockKit

watchOS 3 enthält auch einige neue wichtige Funktionen für Apps, die das ClockKit-Framework nutzen, um Komplikationen auf dem Zifferblatt zu schaffen. 

Erstens, aufgrund der neuen Hintergrundverarbeitungsfunktion für Apps in watchOS 3: Wenn ein Benutzer die Komplikationen Ihrer App auf das Zifferblatt legt, bleibt Ihre App im Speicher und bleibt bereit für den Start. Darüber hinaus kann Ihre App in der Lage sein, ihren Inhalt bis zu 50 Mal pro Tag als Reaktion auf Push-Benachrichtigungen zu aktualisieren. 

Wenn Sie mehr über die neuen Hintergrund-App-Funktionen in watchOS 3 erfahren möchten, habe ich dieses Thema bereits hier behandelt:

  • Was ist neu in watchOS 3: Hintergrundaufgaben

    In diesem Lernprogramm erfahren Sie mehr über die neuen WatchKit-APIs in watchOS 3, mit denen Ihre Apple Watch-Apps ihren Inhalt in der…
    Davis Allie
    watchOS

Als Nächstes wurden einige neue Vorlagen zu der besonders umfangreichen Komplikationsfamilie hinzugefügt, einschließlich CLKComplicationTemplateExtraLargeColumnsText, CLKComplicationTemplateExtraLargeRingImage, CLKComplicationTemplateExtraLargeRingText, und CLKComplicationTemplateExtraLargeSimpleImage.

Zuletzt die CLKTextProvider class bietet jetzt eine API zum Erstellen eines lokalisierbaren Textanbieters, um unterschiedlichen Text für bestimmte Gerätebereiche zu verwenden.

Abgesehen von diesen kleinen Ergänzungen bleibt ClockKit gegenüber der letztjährigen Version von watchOS 2 unverändert. Wenn Sie mehr über dieses Framework und seine Verwendung erfahren möchten, können Sie sich hier mein Tutorial anschauen:

  • Eine Einführung in ClockKit

    In diesem Lernprogramm lernen Sie die Grundlagen des ClockKit-Frameworks kennen und erfahren, wie Sie benutzerdefinierte Komplikationen für die Apple Watch erstellen. Sie werden auch lernen ...
    Davis Allie
    Xcode

PassKit

Während PassKit bereits in einer eingeschränkten Form in watchOS 2 verfügbar war, bietet watchOS 3 volle Unterstützung für In-App-Apple-Pay-Einkäufe. Dies geschieht durch einige neue Klassen und ein Protokoll, einschließlich:

  • WKInterfacePaymentButton: wird verwendet, um ein vorgefertigtes zu zeigen Kaufen Sie mit Apple Pay Taste.
  • PKPaymentAuthorizationController: Wird verwendet, um eine Modellschnittstelle mit Zahlungsinformationen anzuzeigen, die vom Benutzer bestätigt werden kann. Diese Klasse spielt dieselbe Rolle wie die PKPaymentAuthorizationViewController Klasse, hängt aber nicht von UIKit ab. Dies bedeutet, dass die PKPaymentAuthorizationController Diese Klasse kann sowohl für iOS als auch für watchOS verwendet werden.
  • PKPaymentAuthorizationControllerDelegate: Klassen können entsprechend angepasst werden. Mit diesem Protokoll kann Ihre App auf die Aktionen des Benutzers in Bezug auf Ihre Zahlung reagieren, z. B. wenn sie eine Zahlungsmethode auswählen oder wenn die Zahlung autorisiert wurde.

Fazit

Insgesamt ist watchOS 3 eine wichtige Veröffentlichung für Entwickler von Apple Watch-Apps. Spiele und medienreiche Anwendungen lassen sich jetzt durch das Hinzufügen von Frameworks wie SceneKit, SpriteKit, GameKit und AVFoundation viel einfacher erstellen. Durch das Hinzufügen von CloudKit und Verbesserungen von WatchKit, ClockKit und PassKit können Sie mehr funktionsfähige Apps als je zuvor erstellen und werden unabhängig vom iPhone.

Bitte hinterlassen Sie wie immer Ihre Kommentare und Rückmeldungen im Kommentarbereich. Weitere Informationen zum Erstellen einer App in WatchOS finden Sie im watchOS 2 From Scratch-Kurs hier auf Envato Tuts+.

  • watchOS 2 From Scratch

    Durch die Unterstützung von Watchs in Ihre App können Sie sich im überfüllten App Store abheben. Dazu musst du lernen, wie man watchOS 2 anvisiert und…
    Derek Jensen
    watchOS 2