Thomas Sillmann, Frameworks über FrameworksZusammen mit der erstmaligen Vorstellung von iOS 8 auf der WWDC 2014 hat Apple Entwicklern auch eine Fülle an neuen Frameworks präsentiert, die von diesem Zeitpunkt an für eigene Anwendungen genutzt werden können und natürlich wurden auch die bis dato bestehenden Frameworks an vielen Stellen überarbeitet, optimiert und erweitert.

Diese Masse an neuen Informationen sorgt dafür, das viele Entwickler selbst heute noch keinen vollumfänglichen Überblick über all diese Frameworks und Änderungen haben, die letztes Jahr vorgestellt und eingeführt wurden. Gehen Sie daher doch zusammen mit mir diesen kleinen Rundgang über den Status Quo der iOS-Frameworks, wofür sie gut sind und wie Sie sie im eigenen Projekt einsetzen können.

Zugriff auf Touch ID

Mit dem iPhone 5s präsentierte Apple erstmals seinen Touch ID getauften Fingerabdrucksensor, mit dem das Entsperren der eigenen iOS-Geräte so einfach wie noch nie vonstattengeht. Inzwischen findet sich Touch ID in allen aktuellen iOS-Geräten von Apple (wenn man vom iPod touch einmal absieht).

Mit der Veröffentlichung von iOS 8 führte Apple sodann auch ein neues Framework ein, welches es Entwicklern erlaubt, die Authentifizierung mittels Fingerabdruck auch in eigenen Apps zu prüfen und abzufragen. Das sogenannte Local Authentication Framework bringt alles mit, was wir dazu brauchen; und das ist beileibe nicht viel! Tatsächlich setzt sich das Framework bisher nur aus einer einzigen Klasse zusammen: LAContext, die selbst wiederum gerade einmal über zwei Methoden verfügt. Diese zwei Methoden bilden die beiden Schritte ab, die zur erfolgreichen Nutzung des Local Authentication Frameworks gegangen werden müssen.

Dabei gilt es zunächst einmal zu prüfen, ob das Gerät, auf dem die eigene App gerade ausgeführt wird, überhaupt über einen Touch ID-Sensor verfügt und somit mittels Fingerabdruck entsperrt werden kann. Dazu dient die Instanzmethode canEvaluatePolicy:error:. Neben dem optionalen zweiten error-Parameter wird dieser Methode zunächst ein Wert vom Typ LAPolicy übergeben. Dabei handelt es sich um einen Typedef, den Apple eigens für diesen Zweck definiert hat. Aktuell verfügt dieses Typedef nur über einen einzigen Eintrag: LAPolicyDeviceOwnerAuthenticationWithBiometrics. Dieser bezieht sich auf die Nutzung von Touch ID und dem Entsperren mittels Fingerabdruck, also genau das, was wir suchen und was für den Aufruf der ersten Methode benötigt wird.

Die Methode canEvaluatePolicy:error: liefert sodann einen booleschen Wert zurück: true, wenn die Abfrage mittels Touch ID verwendet werden kann, andernfalls false. Entsprechend können wir darauf reagieren und in dem Fall, dass Touch ID nicht zur Verfügung steht, beispielsweise direkt die Eingabe eines Passworts et cetera verlangen.

Steht Touch ID zur Verfügung und wollen wir den Zugriff auf den Sensor nutzen, so folgt Schritt zwei. Zu diesem Zweck rufen wir auf eine Instanz von LAContext die Methode evaluatePolicy:localizedReason:reply: auf. Diese startet die Abfrage des Fingerabdrucks mittels Touch ID, wodurch eine Alert View erscheint und den Nutzer darauf aufmerksam macht. Als erster Parameter der Methode muss dabei wieder der Wert LAPolicyDeviceOwnerAuthenticationWithBiometrics übergeben werden; in Zukunft dürfen wir auf weitere Optionen gespannt sein. Der Parameter localizedString nimmt einen String entgegen, der dem Nutzer in der automatisch erscheinenden Alert View angezeigt wird. Entsprechend sollte dieser String dazu verwendet werden, dem Nutzer zu erklären, wofür die Abfrage des Fingerabdrucks an dieser Stelle gut ist und was er damit erreicht. Beim letzten Parameter handelt es sich um einen Block, der einen booleschen Wert sowie ein optionales error-Objekt zurückliefert. Dieser Block wird gefeuert, wenn der Nutzer den Entsperrvorgang mittels Auflegen seines Fingers startet. Der boolesche Parameter gibt dabei true zurück, wenn das Entsperren erfolgreich war, und false, falls nicht. Entsprechend können wir reagieren und beispielsweise bei erfolgreicher Nutzung von Touch ID die Eingabe eines Passworts et cetera überspringen.

Das Local Authentication Framework ist einfach und mächtig zugleich und lässt vermuten, dass es in Zukunft um weitere Optionen erweitert werden wird; wir dürfen gespannt sein!

Alle Gesundheitsinformationen vereint

Gesundheit und Fitness sind die aktuellen Trends, immer neue Plattformen und Services sprießen in den letzten Jahren aus dem Boden und buhlen um die Gunst der sport- und fitnessbegeisterten Kundschaft. Auch Apple hat diesen Trend erkannt und in diesem Zuge eine neue App mit iOS 8 eingeführt: Health. Health dient zum Erfassen verschiedenster Gesundheits- und Fitnessinformationen und möchte diese zentral für den Nutzer vorhalten. Damit erspart er sich das Wechseln zwischen verschiedenen Anwendungen und Plattformen und hat alle benötigten Informationen zentral in der Health-App gespeichert. So zumindest wünscht sich das Apple, und damit Dritt-Entwickler auf den Zug aufspringen können, gibt es HealthKit.

HealthKit dient dazu, Gesundheits- und Fitnessinformationen zu verarbeiten, zu speichern und abzufragen. Die große Stärke dieser Technik ist, dass alle Informationen – egal aus welcher App – in der Health-App zusammenlaufen; sofern entsprechende Apps HealthKit implementieren und ihre Informationen darin speichern.

Das Framework erlaubt das einfache Speichern und Verwalten verschiedenster Gesundheitsinformationen wie Blutzuckerwerte, Körpertemperaturen, Body-Mass-Index, Blutgruppe und so weiter. Genau mit solchen Informationen können auch wir Entwickler komfortabel und einfach mit HealthKit arbeiten, passende Ergebnisse auslesen und eigene ermittelte Werte in der Health-App speichern.

Eine besondere Erleichterung stellt dabei der Umgang mit verschiedenen Einheiten dar. Sind hierzulande beispielsweise Temperaturangaben in Celsius gang und gäbe, spricht man in Amerika und anderen Teilen der Welt von Fahrenheit. Eine App mit internationaler Kundschaft müsste hierfür also eine passende Umrechnung implementieren, die sehr aufwendig und natürlich auch fehleranfällig sein kann. Diese Bürde nimmt HealthKit ab und bietet mit der Klasse HKUnit eine einfache Möglichkeit, Daten in der gewünschten Form zu speichern; die Health-App kümmert sich dann um die passende Anzeige, auch in anderen Einheiten.

Inwieweit sich die Health-App mitsamt HealthKit mit der Zeit durchsetzen wird, bleibt abzuwarten. Viele Anbieter von Gesundheits- und Fitness-Apps haben bereits eine Unterstützung für HealthKit implementiert, im Zuge der neuen Apple Watch – die ebenfalls auch als Gesundheits- und Fitness-Tracker fungiert – dürften weitere Anwendungen hinzukommen.

Das vernetzte Zuhause dank HomeKit

Die Vernetzung aller möglichen Gegenstände in den eigenen vier Wänden ist ein Trend, der gerade in Deutschland nur langsam und schleppend vorankommt, was auf den Datenschutz zurückzuführen ist. Nichtsdestoweniger hat Apple inzwischen mit HomeKit ein eigenes Framework im Portfolio, das zur Überwachung und Konfiguration des eigenen Hauses von iPhone und iPad aus genutzt werden kann (sofern natürlich passende Hardware existiert, die dieses Framework unterstützt).

Das Framework hat dabei starke Ähnlichkeit mit den Frameworks zur Verbindung und Nutzung von Bluetooth LE-Geräten. So repräsentiert die Klasse HMAccessory ein Objekt im eigenen Haus, das über HomeKit verwaltet und ferngesteuert werden kann. Derartige Geräte lassen sich dabei in eigene Gruppen oder Räume zusammenfassen und erleichtern somit dem Nutzer den Umgang damit. So könnte er einer App mitteilen, in einem Raum alle Lichter abzuschalten, worauf alle betroffenen Lampen einen passenden Befehl erhalten.

Gerade hierzulande fristet die Verwendung von HomeKit aber noch ein Nischendasein, es gibt bisher kaum Apps beziehungsweise Geräte, die diese neue Plattform von Apple unterstützen. Es bleibt spannend, inwieweit Apple in zukünftigen Updates noch mehr aus dieser Plattform herausholt und beispielsweise eine Unterstützung für die Apple Watch implementiert.

Apple Watch, Apple Pay, CloudKit…

Aktuell scheint sie allgegenwärtig zu sein, Nachrichtenseiten berichten teilweise täglich über News und Testberichte zu Apples erster eigener Computeruhr: der Apple Watch. Seit November letzten Jahres hat Apple das sogenannte WatchKit SDK freigegeben, wobei es sich um das grundlegende Framework zur Entwicklung eigener Apps für die Apple Watch handelt. Dieses Thema werden wir aber ausführlich in einem eigenen, separaten Beitrag behandeln und im Detail vorstellen.

Daneben wurde letztes Jahr auch Apples neuer Bezahldienst Apple Pay offiziell gestartet. Dabei ist dieser Dienst nicht nur Apple vorbehalten, auch wir Entwickler haben die Möglichkeit, diesen Dienst direkt in eigenen Apps zu implementieren. Grundlage dafür ist das PassKit Framework, das direkt mit der Passbook-App von iOS gekoppelt ist; diese Kopplung kann mit der der Health-App und dem HealthKit Framework verglichen werden. Auch die Verwendung von Apple Pay in eigenen Apps, die bisherigen Möglichkeiten sowie die Vor- und Nachteile des neuen Service werden wir in einem eigenen Beitrag ausführlich vorstellen.

Eine starke Überarbeitung erfuhren die SDKs im Zusammenspiel mit iCloud. In diesem Zuge hat Apple auch das neue CloudKit Framework eingeführt, welches nun alle Funktionen im Zusammenspiel mit iCloud zusammenfasst und zugänglich macht. Ein derartiges Update tut dem Service auch mehr als gut, stand er doch seit seiner erstmaligen Einführung mit iOS 6 bei Entwicklern aufgrund schwacher Dokumentation und regelmäßiger Probleme stark in der Kritik (gerade das Zusammenspiel der iCloud in Verbindung mit Core Data kann gerne als Desaster bezeichnet werden). Dazu kamen auch neue Beispielprojekte und Guides über die Nutzung und die Möglichkeiten von iCloud in eigenen Apps.

…und noch mehr

Tatsächlich zeigt dieser kleine Rundgang noch immer nicht alle neuen Frameworks und Möglichkeiten, die Apple seit iOS 8 eingeführt hat. So gibt es noch die neuen App Extensions, das PhotoKit Framework zum Auslesen und Bearbeiten von Videos und Bildern aus der Fotos-App oder Handoff zum Zusammenspiel von iOS- und OS X-Apps. Man merkt Apple deutlich an, dass sie einen großen Schritt auf ihre Entwickler zugehen und auch Gehör für deren Wünsche und Kritik finden. Gerade die Überarbeitung der iCloud-Funktionen in Form des neuen CloudKit Frameworks sowie der Zugriff auf den Touch ID-Sensor von iPhone und iPad zeigt, dass die Dritt-Entwickler – heute mehr denn je – eine zentrale Rolle bei Apple spielen. Die Einführung der neuen Programmiersprache Swift tut da ihr Übriges.

Nichtsdestoweniger bleibt abzuwarten, wie sich manche Technologien im Laufe der Zeit durchsetzen werden. Apple Pay und HomeKit dürften es hierzulande schwer haben, auch eine positive Zukunft von Health lässt sich zum jetzigen Zeitpunkt noch nicht voraussagen. Hier ist Apple nun am Zug, die Services entsprechend zu fördern und weiter auszubauen.