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.
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.
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.
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:
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.
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.
Mit watchOS 3 werden nicht nur viele neue Frameworks hinzugefügt, sondern auch viele Änderungen an vorhandenen Frameworks vorgenommen, einschließlich WatchKit und ClockKit.
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.
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:
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:
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.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+.