Praxis 09.01.2015, 10:38 Uhr

Apple has a new kid ? das WatchKit

Während die Tech-Welt gespannt auf das Erscheinen der Apple Watch wartet, haben wir uns bereits die erste Vorabversion von WatchKit angesehen und die bisherigen Möglichkeiten für Entwickler ausgelotet.
Dazu haben wir eine simple Beispiel-App gebaut ? und dabei die ein oder andere Überraschung erlebt.

?GrocerieZ? ? die Zühlke-Einkaufsliste

Unser Beispielprojekt sollte eine Einkaufsliste sein, welche der Benutzer auf der Watch betrachten und abhaken kann. Doch wie bereits bei der Vorstellung der Apple Watch klar wurde, ist diese in vielerlei Hinsicht auf ein verbundenes iPhone angewiesen. Auch bei der Entwicklung kommt man vorerst nicht an einer iPhone-Anwendung vorbei, denn Watch-Apps sind nur als eine Erweiterung ihrer zugehörigen iPhone-App zu verstehen. Apple setzt dabei auf die seit iOS 8 existierenden Extensions und führt ab iOS 8.2 sogenannte Watch-Extensions ein. Wir entwickelten zunächst die iPhone-App ?GrocerieZ?, über welche der Benutzer Einträge zu einer Einkaufsliste hinzufügen und wieder aus der Liste löschen kann. Diese Einkaufsliste sollte im nächsten Schritt auf der Watch erscheinen und auch dort bearbeitbar sein. Beide Listen sollten zudem stets synchron gehalten werden.

Eine Apple Watch ohne iPhone ist nur eine Uhr

Eine Watch-App besteht aus zwei Teilen: Die eigentliche Watch-App, welche einzig die Elemente des User Interfaces enthält, und einer Watch-Extension, die auf dem iPhone als Hintergrundprozess ausgeführt wird und nur als Bestandteil einer iPhone-App auf das iPhone gelangen kann. Zur Laufzeit sind App und Watch-Extension allerdings zwei unterschiedliche Prozesse mit jeweils eigener Sandbox. Beide haben also ohne Zutun der Entwickler keine Möglichkeit zur Interaktion.
Man muss sich vor Augen führen, dass eine Watch-App ohne eine entsprechende Watch-Extension nutzlos ist. Hat man sein iPhone nicht bei sich, ist die Apple-Watch nur noch eine Uhr. Ausgewählte Partnerfirmen sollen bereits jetzt die Möglichkeit haben, vollwertige Watch-Apps zu schreiben, welche ohne Watch-Extension auf dem iPhone auskommen, der Grossteil der Entwickler wird jedoch voraussichtlich erst im Laufe des nächsten Jahres in diesen Genuss kommen. Apples Vorsicht diesbezüglich ist vermutlich der Batterielaufzeit der Watch geschuldet, die durch beliebige Code-Ausführung auf der Uhr leiden könnte. Interagiert der Benutzer mit der Watch-App, übernimmt WatchKit die Kontrolle: Wird ein Button gedrückt oder zu einem anderen Screen navigiert, werden die entsprechenden Callbacks in der Watch-Extension ausgelöst. Die Details dieser Kommunikation zwischen iPhone und Watch bleiben dem Entwickler komplett verborgen ? UI und Code lassen sich wie bei einer herkömmlichen App verbinden, frei nach dem Motto: ?It just works?.

Alte Bekannte & neue Gesichter: Notifications und Glances

Das Anzeigen von Notifications vom Smartphone stellt eine Grundfunktion von Smartwatches dar und ist bei der Apple Watch bereits eingebaut. Dennoch bietet WatchKit zusätzliche Möglichkeiten, Notifications zu gestalten und um Aktionsbuttons zu erweitern.
Neu für die Watch entwickelt wurde das Konzept der Glances, das an Widgets auf dem Smartphone erinnert. Ein Glance bietet eine Vorschau auf die Watch-App und stellt aktuell relevante Informationen auf einem einzigen Screen pro App dar. Glances werden aktiv vom Benutzer aufgerufen, wenn dieser sich einen Überblick über den Status seiner Watch-Apps verschaffen möchte. Vom Glance aus kann direkt in die zugehörige Watch-App gesprungen werden, weitere Interaktionsmöglichkeiten bietet er nicht. ?GrocerieZ? sollte auf ihrem Glance die Anzahl noch einzukaufender Artikel anzeigen.

Möglichkeiten und Einschränkungen der UI-Gestaltung

Bei Watch-Apps ist das Storyboard Pflicht. Das überrascht nur wenig, wenn man bedenkt, dass UI-Elemente direkt auf der Watch gespeichert werden, und durch das Storyboard Views und Code weitgehend entkoppelt werden. Entsprechend sind zur Laufzeit auch nur eingeschränkte Änderungen am vordefinierten UI möglich, etwa das Ändern des Textes eines Labels. Das Hinzufügen weiterer Elemente ist aber beispielsweise nicht möglich. Für unsere Einkaufsliste erstellten wir analog zur iPhone-App eine einfache Tabellenansicht. Nun wurde klar: Eine Eingabe von neuen Elementen ist vorerst nicht möglich. Die Watch sieht zukünftig eine Spracheingabe vor, diese ist jedoch momentan noch nicht im Simulator verfügbar. Bisher kann der Benutzer auf der Watch ausschliesslich eine binäre oder nummerische Eingabe über einen Switch bzw. Slider vornehmen.

360 Bilder für ein Halleluja

Nach der Vorstellung der Apple Watch machten unter anderem die flüssigen Animationen von Home Screen zu Ziffernblatt bei UI-Designern von sich reden. Wer allerdings erwartet, in seiner Watch-App auf die liebgewonnenen Animationsfeatures von UIKit und Core Animation zurückgreifen zu können, wird momentan noch enttäuscht: Animationen müssen in einzelne Bilder zerstückelt werden und können dann in einem ImageView automatisch durchgewechselt werden ? so fallen dann für eine flüssige Kreisanimation 360 Bilder an.

Das neue ?Auto-Layout?

Wer sich noch nicht an das mit iOS 6 eingeführte Auto Layout gewöhnt hat, den wird es freuen, dass Apple für die Watch Apps nun wieder einen neuen Mechanismus entwickelt hat, nach dem UI-Elemente auf dem verfügbaren Platz angeordnet werden. Anders als bei der iPhone-Entwicklung ist nun ein freies Platzieren nicht mehr möglich, stattdessen werden die Elemente in Groups gesammelt automatisch angeordnet ? wahlweise horizontal oder vertikal hintereinander. Lediglich einfache Positionsangaben (top, bottom, right, left, center, middle) können den Elementen noch mitgegeben werden. Android-Entwickler dürften sich hier stark an das Linear Layout erinnert fühlen. Die neue Anordnung von Interface-Elementen stellt Herausforderungen an jene Entwickler, die es von der iPhone-Entwicklung gewohnt waren, Views pixelgenau anzuordnen. Auch ist das Stapeln von Views hier nicht möglich ? die Groups können lediglich mit einem Hintergrundbild oder einer Farbe versehen werden. Es wird deutlich: Die Watch ist nicht als kleineres iPhone gedacht, hier müssen Layout und Bedienkonzept neu erdacht und vereinfacht werden.

Kommunikationsprobleme

Das Verbinden von Watch-App-UI mit Extension-Code funktioniert genauso reibungslos, wie man es aus der iPhone-Entwicklung gewohnt ist. Umso erstaunlicher ist es, dass die Kommunikation zwischen iPhone-App und -Extension doch noch einiges an Mehraufwand und Einschränkungen mit sich bringt. Denn obwohl beide Anwendungen gemeinsam auf das iPhone gespielt werden, liegt jede in ihrer eigenen Sandbox und die beiden können aus dem Stand gar nicht miteinander kommunizieren. Des Rätsels Lösung liegt in dem Anlegen einer sogenannten ?App Group?, einer gemeinsamen Datenablage, für das sich App und Extension registrieren können, um dort Daten auszutauschen. An dieser Stelle ist dann auch erst mal Schluss für den Hobby-Entwickler ohne Apple Developer Account ? denn eine App Group kann nur über das Entwicklerportal erstellt werden.
Ist die gemeinsame App Group erstellt, kann auf bekannte Abstraktionsschichten wie NSUserDefaults und Core Data zurückgegriffen werden. Um doppelten Code für den Datenaustausch zwischen iPhone-App und Watch-Extension zu vermeiden, haben wir uns für das Erstellen eines eigenen Frameworks entschieden. Das von uns auf den Namen ?GrocerieZKit? getaufte Framework wird sowohl in der iPhone-Anwendung als auch in der Watch-Extension eingebunden und regelt den Zugriff auf gemeinsam genutzte Daten. Das einfache Auslesen der gemeinsamen Daten klappte auf Anhieb: Daten, die auf den iPhone eingegeben wurden, erschienen anschliessend auch im Watch-Simulator. Schwieriger gestaltete sich hingegen die Umsetzung des Observer-Patterns, da die üblichen Bordmittel NSNotificationCenter und KVO nicht zu greifen schienen. Hier mussten wir schliesslich darauf zurückgreifen, die Daten per Timer in regelmässigen Abständen zu aktualisieren. Vermutlich wird sich dieses Problem mit fortschreitenden WatchKit-Versionen lösen.

Vorfreude auf die Apple Watch

Trotz einiger kleiner Stolpersteine und Probleme sind wir vom ersten Wurf von Apples WatchKit positiv überrascht. Nachdem es zunächst danach aussah, als würden Entwickler im ersten Schritt nur Notifications auf die Watch bringen können, ist es umso schöner, innerhalb kürzester Zeit eine selbstgebaute Watch-App im Simulator betrachten zu können. Auch wenn es verglichen mit der Entwicklung für das iPhone noch viele Einschränkungen und einige Neuerungen gibt, fühlten wir uns als iOS-Entwickler gut abgeholt und können deshalb auch über die vielen Dinge hinweg sehen, die momentan noch nicht funktionieren. Man darf gespannt sein auf die nächsten Releases von WatchKit ? und natürlich darauf, wie sich die Apps auf dem echten Gerät ?anfühlen?. Bei uns herrscht jedenfalls jetzt bereits Vorfreude auf den Launch der Apple Watch.


Das könnte Sie auch interessieren