Apple Watch in Kürze: Eine Funktionseinführung für iOS-Entwickler

Veröffentlicht: 2022-03-11

Das Apple Watch SDK, das im vergangenen Juni auf der WWDC angekündigt und erst kürzlich veröffentlicht wurde, hat viel Aufregung ausgelöst.

Dies ist nur die erste Runde mit eingeschränkten Funktionen. Apple Watch v2 wird folgen, aber nicht so bald – vorausschauende iOS-Entwickler sollten sich also darauf einstellen, einige Monate zu warten.

Die Stimmung unter den Entwicklern ist extrem gefächert. Viele iOS-Entwickler sind enttäuscht von vielen Einschränkungen, die das Apple Watch SDK und seine Funktionen auferlegen. Auf der anderen Seite sind viele von uns begeistert, während andere nicht allzu weit von einer neutralen Position entfernt sind. Aber schließlich freut sich anscheinend jeder über ein neues Spielzeug zum Spielen.

Eine Sache, die ins Auge fällt, ist, wie Apple Watch-Benutzer bezeichnet werden. Sie sind weder Benutzer oder mobile Benutzer noch Benutzer von Uhren oder (mit einer Prise Originalität) Beobachter . Sie sind einfach Träger . Ein Begriff, der etwas seltsam klingt, denn wenn ein Benutzer verwendet , was bedeutet, dass er interagiert, trägt ein Träger , und das klingt nach einer passiven Verwendung. Natürlich ist die Apple Watch weit davon entfernt, ein passives Gerät zu sein. Sie kombiniert die traditionellen Funktionen einer Uhr mit fortschrittlicheren Optionen, die durch moderne Technologie ermöglicht werden, insbesondere wenn sie in Kombination mit einem iPhone verwendet wird. Es ist noch gar nicht so lange her, als Telefone viel mehr als nur Telefone waren – die Geschichte wiederholt sich.

Am Ende scheint der Trägername jedoch eine kluge Wahl zu sein. Zumindest beim Schreiben von User Stories muss ich „Als Apple-Watch-Benutzer möchte ich …“ nicht vollständig angeben, ich kann das einfach zu „Als Träger möchte ich …“ verkürzen – weniger Mehrdeutigkeit.

Apple Watch-Apps werden wahrscheinlich die Art und Weise, wie Uhrenträger (und iOS-App-Entwickler) über Technologie denken, für immer verändern.

Gerät und Benutzeroberfläche

Abgesehen von allen Apple Watch-Funktionen, die nicht direkt mit der Entwicklung zusammenhängen, sind die wichtigsten Probleme, mit denen sich Designer und Entwickler auseinandersetzen müssen, Größen - tatsächlich gibt es 2 verschiedene Apple Watch-Modelle:

  • 38-mm-Bildschirm mit einer Auflösung von 272 x 340 Pixel
  • 42-mm-Bildschirm mit einer Auflösung von 312 x 390 Pixel

mit einem Retina-Display in beiden Fällen.

Unnötig zu erwähnen, dass es Sache der iOS-Entwickler ist, sicherzustellen, dass die Anwendung auf beiden Versionen gut aussieht.

Apple Watch-Konnektivität

Die Apple Watch kommuniziert mit dem begleitenden iPhone über Bluetooth 4.0 und ist auch NFC-fähig. Anscheinend hat es keine WiFi-Konnektivität. Obwohl es über das iPhone anbinden und sowohl WLAN als auch Mobilfunkdatenverbindung verwenden kann. Aber in einer Presseinfo gibt Apple deutlich an, dass es auch Wi-Fi 802.11b/g hat.

Benutzerinteraktion

Benutzerinteraktion (oder Trägerinteraktion, falls bevorzugt) kann auf 4 verschiedene Arten erfolgen:

  • einfache Berührung: Ein Antippen einer Schaltfläche ist ein typisches Beispiel
  • Force Touch: Wird aktiviert, indem beim Tippen und Halten des Bildschirms mehr Kraft angewendet wird. Ähnlich wie beim rechten Mausklick auf einem PC wird ein Kontextmenü angezeigt (mit bis zu 4 Elementen).
  • Geste: vertikales Wischen zum Scrollen, horizontales Wischen zum Navigieren zwischen den Seiten, Wischen vom linken Rand zum Zurücknavigieren
  • digitale Krone: Hardwareeingang für fein abgestimmtes Scrollen

Es gibt einige Einschränkungen bezüglich der Benutzerinteraktion, insbesondere bezüglich Gesten:

  • Sie sind vorbestimmt, sodass benutzerdefinierte Gesten nicht unterstützt werden
  • Multi-Touch wird nicht unterstützt, also kein Pinch to Zoom oder ähnliche Gesten, die mehr als einen Finger erfordern

Hier ist das Beispiel des Kontextmenüs aus dem Apple WatchKit Guide.

Die Funktionen der Apple Watch App werden in Zukunft zweifellos umfangreiche Entwicklungs-Tutorials erfordern. Machen Sie sich zunächst mit den Grundlagen vertraut.

Benutzeroberfläche

Apropos Apple Watch UI: Es gibt mehrere Einschränkungen, die durch die reduzierte Bildschirmgröße, durch Designentscheidungen und in vielen Fällen als natürliche Folge der zugrunde liegenden Hardware auferlegt werden. Wir gehen davon aus, dass sich einige von ihnen in zukünftigen Versionen des SDK zum Besseren ändern werden, obwohl es nicht möglich ist, vorherzusehen oder vorherzusagen, was sich tatsächlich ändern wird.

Die erste Einschränkung betrifft die Implementierung der Benutzeroberfläche: nur über Storyboards.

Apple Watch-Navigation

WatchKit bietet zwei sich gegenseitig ausschließende Möglichkeiten, zwischen den Ansichten einer Apple Watch-App zu navigieren:

  • ein hierarchisches Navigationsmodell, ähnlich dem in iOS verwendeten, mit gestapelten Ansichten während der Navigation
  • ein flaches seitenbasiertes Modell, bei dem der Benutzer zwischen den Seiten navigieren kann, indem er nach links und rechts wischt

Eine Kombination dieser beiden Navigationsmodelle in derselben App ist leider nicht möglich. Einer davon muss ausgewählt und in der gesamten App verwendet werden.

Jedoch kann jeder Schnittstellencontroller einen modalen Schnittstellencontroller darstellen, der entweder ein einzelner Schnittstellencontroller oder mehrere Schnittstellencontroller sein kann, die unter Verwendung eines Seitennavigationsmodells angeordnet sind.

UI-Elemente

Es gibt 11 verschiedene Schnittstellenkomponenten:

  • Taste
  • Schieberegler
  • Bild
  • Etikette
  • Separator
  • Schieberegler
  • schalten
  • Tisch
  • Datum: Automatisches Anzeigen des aktuellen Datums oder der Uhrzeit
  • Timer: Anzeige eines Countdown-Timers, der automatisch aktualisiert wird
  • Gruppe: ein Container für eine oder mehrere untergeordnete Komponenten
  • Karte: Anzeige einer nicht interaktiven Karte, optional mit max. 5 Anmerkungen

Grundrisse

Die Gruppenkomponente kann verwendet werden, um Elemente der Apple Watch-Benutzeroberfläche entweder in einem vertikalen oder horizontalen Layout zu kombinieren. Elemente werden automatisch entsprechend ihrer Größe angeordnet. Hier ist ein gewisses Maß an Flexibilität vorhanden, da Gruppen verschachtelt werden können.

Leider ist das automatische Layout nicht verfügbar. Aber wenn man bedenkt, dass die Benutzeroberfläche im Vergleich zum iOS-Pendant viel einfacher ist, ist es wahrscheinlich kein großer Verlust.

Für Listen erstellt und verwaltet die Tabellenkomponente Inhalte mithilfe eines Einzelspaltenmodells, genau wie die UITableView . Es verwendet jedoch nicht das Delegationsmuster – die Datenquelle wird der Tabelle direkt bereitgestellt, indem zuerst die Anzahl der Zeilen angegeben wird und dann der Inhalt jeder Zeile in einer for-Schleife initialisiert wird. Positiv ist, dass es weiterhin möglich ist, benutzerdefinierte Tabellenzeilen (dh Zellen im iOS-Jargon) zu verwenden.

Blicke

Blicke sind schreibgeschützte, einseitige und nicht scrollbare Ansichten, die zum Anzeigen einer Momentaufnahme aktueller und relevanter App-spezifischer Daten verwendet werden. Mit Ausnahme des Tap-Ereignisses ist keine Benutzerinteraktion zulässig. Tippen Sie auf den Blick , um die App einfach zu starten und optional einen Kontext bereitzustellen, damit die App einen bestimmten Schnittstellencontroller anzeigen kann.

Beispielsweise kann eine Apple Watch-Wetter-App Glance verwenden, um die aktuelle Temperatur, den Standort usw. anzuzeigen. Durch Antippen öffnet sich die App und zeigt detailliertere Informationen an.

Hier ist das Beispiel Glance aus dem offiziellen Apple WatchKit Guide.

Dies ist ein Beispiel für die Apple Watch-Blickfunktion in einer Apple Watch-Beispiel-App.

Apple Watch-Benachrichtigungen

Es gibt 2 Benachrichtigungstypen: Short Look und Long Look .

Die Short-Look -Benachrichtigung wird verwendet, um den Träger darauf aufmerksam zu machen, dass etwas passiert ist, und sie wird automatisch ausgeblendet, wenn das Handgelenk gesenkt wird. Das Layout ist sehr einfach und besteht aus dem App-Symbol, dem App-Namen und dem Benachrichtigungstitel.

So könnte eine Apple Watch-Benachrichtigung in einer App aussehen.

Wenn Sie das Handgelenk einige Zeit angehoben halten oder explizit auf die Kurzblickbenachrichtigung tippen, wird sie in eine Langblickbenachrichtigung umgewandelt . Diese Art von Benachrichtigungen bietet mehr Details und unterstützt die Benutzerinteraktion über anpassbare Schaltflächen. Diese Schaltflächen können Benachrichtigungen an die Anwendung senden. Im Gegensatz zu einer kurzen Benachrichtigung muss der Benutzer eine lange Benachrichtigung explizit schließen, indem er auf eine Schaltfläche tippt, die automatisch am unteren Rand der Ansicht angezeigt wird.

Die Long-Look-Benachrichtigung ist eine der besonderen Apple Watch-Funktionen, über die Entwickler Bescheid wissen sollten.

Weitere Informationen zur Verwendung von Apple Watch-Benachrichtigungen finden Sie hier.

Entwicklung

Die Architektur

Wenn ein Entwickler eine Xcode-Version herunterlädt, die das WatchKit unterstützt (derzeit die Beta-Version 6.2), und versucht, mit einem WatchKit-Projekt zu beginnen, ohne die Dokumentation zu lesen, könnte ein Entwickler verwirrt sein, weil es keine WatchKit-Vorlage gibt:

Apple Watch-Apps können nur als neues Ziel zu einer Ihrer vorhandenen iOS-Anwendungen hinzugefügt werden.

Es gibt keine eigenständige Watch-Anwendung und eine Watch-App kann nur als neues Ziel zu einer bestehenden iOS-Anwendung hinzugefügt werden.

Um eine Apple Watch-App zu entwickeln, beginnen Sie mit Ihrer aktuellen iOS-App und fügen Sie die Watch-App als neues Ziel hinzu.

Der Grund dafür liegt in der Architektur und der Art und Weise, wie die Uhren-App mit der zugehörigen iOS-App interagiert:

Zu verstehen, wie eine Apple Watch mit anderen iOS-Apps auf dem iPhone interagiert, ist ein wesentlicher Bestandteil eines erfolgreichen Apple Watch-Entwicklers.

Wenn die App auf der Uhr gestartet wird, wird die begleitende iOS-Erweiterung automatisch gestartet. Beide arbeiten in Synergie, wobei die Watch-App dem Träger Inhalte anzeigt und auf Interaktionen reagiert, während die iOS-Erweiterung alles andere erledigt. Tatsächlich wird kein Anwendungscode auf der Uhr ausgeführt: Die gesamte Verarbeitung wird an die iOS-Erweiterung delegiert.

Dieses Modell ähnelt stark dem Browser <-> Webanwendungsmodell, bei dem die Domänenlogik auf der Serverseite ausgeführt wird und die Clientseite dafür verantwortlich ist, dem Benutzer Inhalte anzuzeigen und auf Benutzeraktionen zu reagieren.

Die auf dem Gerät installierte Watch App besteht aus dem Storyboard und allen dazugehörigen statischen Ressourcen, verpackt in einem Bundle. Dieses Paket ist statisch, was bedeutet, dass das Hinzufügen oder Ändern von Ressourcen, Ansichten, Bildern usw. zur Laufzeit nicht möglich ist.

Dieses statische Client-Server-Modell erlegt dem iOS-Entwickler, der eine Watch-App zu seinem Repertoire hinzufügen möchte, mehrere Einschränkungen auf, und dies ist wahrscheinlich einer der Hauptgründe, warum einige Entwickler nicht positiv reagiert haben. Eine weitere beliebte Bemerkung betrifft Animationen: Sie werden einfach nicht unterstützt. Die einzige Möglichkeit, eine Animation nachzuahmen, besteht darin, einzelne Frames in die Watch-App zu packen und dann die Animation zu simulieren, indem Bilder in einer Sequenz angezeigt werden. Eine gute Nachricht ist, dass Sie durch sequentielles Benennen von Frames die Animation direkt aus dem Interface Builder heraus automatisieren können, obwohl das Gleiche auch aus Code mit einem einzigen Aufruf einer Bildsteuerungsmethode erfolgen kann.

Allerdings hat Apple bereits angekündigt, dass irgendwann im nächsten Jahr eine neue Version erscheinen wird, mit Unterstützung für native Anwendungen, für die es noch keine weiteren Details gibt.

Das Apple Watch Framework: Ein kurzer Blick

WatchKit verwendet, erbt oder spezialisiert UIKit nicht. Ein neues Framework wurde implementiert, speziell für die Uhr, für ihr winziges Display und für die begrenzte Hardware entwickelt und optimiert. Das Framework besteht nur aus 15 Klassen, von denen 12 UI-Komponenten sind (Label, Button usw.).

Die wichtigste vom Framework bereitgestellte Klasse ist WKInterfaceController , das WatchKit-Gegenstück von UIViewController . Was also in iOS (und OSX) View Controller genannt wird, ist in Apple Watch ein Interface Controller .

Ohne zu tief zu graben, ist die auffälligste Verbesserung gegenüber UIKit aus Sicht eines Apple-Entwicklers die Einrichtung eines Musters zum Übergeben von Daten zwischen Schnittstellencontrollern. Ein kurzer Blick auf den Initialisierer:

Swift init(context: AnyObject?) // context from pushing controller or nil

zeigt, dass es möglich ist, ein beliebiges Objekt für eine Schnittstellen-Controller-Instanz bereitzustellen (in allen APIs als context bezeichnet), wodurch die Übergabe von Daten von einem Schnittstellen-Controller an einen anderen vereinfacht und standardisiert wird. Der einzige Nachteil ist, dass das Objekt keinen generischen Typ hat, sondern ein undurchsichtiges AnyObject , das innerhalb des Initialisierers des Zielschnittstellencontrollers auf den erwarteten Typ heruntergewandelt werden muss. Das ist wahrscheinlich ein Kompromiss dafür, dass Sie Objective C immer noch verwenden müssen (und wahrscheinlich auch wollen).

Der Lebenszyklus des Interface-Controllers ist im Vergleich zum View-Controller-Gegenstück vereinfacht, das nur aus 3 Übergängen besteht:

  • init : Wird aufgerufen, wenn das Objekt instanziiert wird
  • willActivate : Wird aufgerufen, wenn der Inhalt angezeigt werden soll
  • didDeactivate : Wird aufgerufen, wenn die Schnittstelle gerade ausgeblendet wurde

Neben der Anzeige von Inhalten für den Benutzer ist der Schnittstellencontroller auch verantwortlich für:

  • Umgang mit Benutzerinteraktionen
  • Verwalten eines Kontextmenüs
  • Übergabeaktivitäten koordinieren
  • auf Benachrichtigung reagieren

Ist Apple WatchKit bereit?

Mit den verschiedenen Einschränkungen kann das Uhrenset als unausgereiftes Produkt erscheinen. Und in Wirklichkeit ist es so. Es unterstützt keine nativen Watch-Anwendungen, ganz zu schweigen davon, dass es noch kein Watch-Gerät auf dem Markt gibt, sodass Entwickler ihre Apps immer noch nicht testen können und ein echtes Gefühl und Feedback darüber haben, wie die App funktioniert.

Ok, es gibt einen Simulator, der eigentlich kein unabhängiger Simulator ist, aber als externes Display für den iOS-Simulator zugänglich ist (über das Menü Hardware -> External Displays). Aber ein Simulator ersetzt nie ein echtes Gerät – gut während der Entwicklung und zum Debuggen, aber nicht genug.

Das WatchKit ist nur eine Vorschau, eine Beta-Version, ein Appetizer, der sich mit jeder neuen Version weiterentwickeln wird. iOS-Entwickler haben die erste Version, spielen wir damit und versuchen wir, das Beste daraus zu machen.