Arbeiten mit iCloud Einführung

Die Synchronisierung von Anwendungsdaten auf Geräten ist eine komplexe und schwierige Aufgabe. Zum Glück hat Apple genau deshalb iCloud gebaut. In dieser Tuts + Premium-Serie erfahren Sie, wie iCloud funktioniert und wie Ihre Anwendungen Daten nahtlos auf mehreren Geräten gemeinsam nutzen können.


Auch in dieser Serie erhältlich:

  1. Arbeiten mit iCloud: Einführung
  2. Mit iCloud arbeiten: Schlüsselwertspeicherung
  3. Mit iCloud arbeiten: Dokumentenablage
  4. Arbeiten mit iCloud: Core Data Integration

Eine der beliebtesten Funktionen von iOS 5 war iCloud. Obwohl iCloud eine Reihe von Ähnlichkeiten mit dem MobileMe-Service von Apple aufweist, ist iCloud mehr als MobileMe. Wie viele andere Unternehmen hat Apple erkannt, dass die Cloud ein unverzichtbarer Bestandteil des mobilen Raums ist. Einige Skeptiker sehen iCloud als den zweiten Versuch von Apple an, einen Synchronisierungsdienst aufzubauen, aber iCloud ist ein ehrgeizigeres Unternehmen mit enormem Potenzial.


Serienübersicht

Dies ist der erste Artikel einer Serie über iCloud Storage. Bevor ich in iCloud Storage eintauche, möchte ich kurz einen Überblick darüber geben, was Sie von dieser Serie erwarten können.

Dieses Tuturial enthält keine Code-Beispiele. Mein Ziel für dieses Tutorial ist es, Sie mit iCloud auf konzeptioneller Ebene vertraut zu machen und zu zeigen, wie iCloud Sie als Entwickler unterstützen kann.

In der zweiten Ausgabe dieser Serie werde ich Ihnen zeigen, wie Sie iCloud Storage für eine Anwendung aktivieren. Wir werden auch unsere erste iCloud-fähige Anwendung unter Verwendung von iCloud Key-Value Storage erstellen.

Die letzten beiden Raten konzentrieren sich auf die iCloud-Dokumentenspeicherung. Teil drei wird sich auf die neue UIDocument-Klasse konzentrieren und erörtern, wie die Verwendung dieser Klasse Ihr Leben erleichtern kann. Der vierte Teil konzentriert sich auf UIManagedDocument, eine konkrete Unterklasse von UIDocument, die in Core Data integriert ist. Dank der engen Integration von Core Data und iCloud können Sie feststellen, dass Ihre Anwendung von der Übernahme von Core Data und iCloud in Ihre Anwendungen enorm profitieren kann!


Was bietet iCloud den Verbrauchern??

Für den Verbraucher ist iCloud ein kostenloser Dienst, der die Daten des Benutzers in der Cloud speichert, darunter Musik, Fotos, E-Mail, Kalender, Kontakte usw. Die auf iCloud gespeicherten Daten stehen jedem Gerät zur Verfügung, das mit dem iCloud-Konto des Benutzers eingerichtet wurde (z. B. Macbooks, iPhones, iPads). Während MobileMe schon immer einen recht hohen Preis hatte, hat Apple iCloud von Anfang an kostenlos gemacht. Es gibt einen Grund, warum Apple diese Entscheidung getroffen hat. Für den Erfolg von iCloud ist es wichtig, dass es von so vielen Menschen wie möglich genutzt wird. Apple hat große Pläne für iCloud und sollte im Laufe der Zeit zu einem noch wichtigeren Bestandteil der Betriebssysteme iOS und OS X werden.


Wie hilft iCloud Entwicklern??

Die für Entwickler nützlichste Komponente ist das, was Apple als iCloud Storage bezeichnet. Dies ist der Teil von iCloud, der für Anwendungsdaten konzipiert ist.

Zusammen mit iCloud hat Apple eine Reihe von APIs eingeführt, mit denen Entwickler iCloud Storage in ihre eigenen Anwendungen übernehmen können. Apple betont, dass seine eigenen Anwendungen, wie zum Beispiel die iWork-Suite, dieselben APIs verwenden, um mit iCloud zu kommunizieren. Die iCloud-API ist einfach, benutzerfreundlich und überraschend flexibel. Es ist klar, dass Apple bei der Erstellung von iCloud im Hinblick auf die Integration von Drittanbietern viel Gedanken, Mühe und Ressourcen investiert hat.


Vorteile von iCloud Storage

Das Synchronisieren von Anwendungsdaten über Geräte hinweg ist kein einfaches Unterfangen (fragen Sie einfach Apple, Dropbox oder Google!). Dies erfordert nicht nur eine zuverlässige Back-End-Infrastruktur, sondern auch die Datensynchronisation ist eine der größten Herausforderungen. Zahlreiche Szenarien können zu Datenverlust oder -korruption führen. Insbesondere die Konfliktbearbeitung ist einer der schwierigsten Aspekte der Datensynchronisation. Je komplexer das Datenmodell ist, desto komplexer muss der Konfliktalgorithmus sein, um alle Randfälle zu behandeln.

Anstatt ein separates iCloud-Framework zu erstellen, hat Apple einige seiner vorhandenen Frameworks mit iCloud-APIs erweitert. NSFileManager ist ein gutes Beispiel für eine Klasse, für die die API-Integration für die iCloud-Integration erheblich verbessert wurde.

Einer der herausragenden Vorteile von iCloud ist die nahtlose Integration mit iOS. Auf jedem iOS-Gerät wird ein iCloud-Dämon im Hintergrund ausgeführt. Dieser Daemon überwacht Änderungen in iCloud, auch wenn Ihre Anwendung nicht ausgeführt wird.

Eine weitere iCloud-Optimierung ist die Peer-to-Peer-Synchronisierung. Genau wie Dropbox synchronisiert iCloud Änderungen über das lokale Netzwerk, wenn festgestellt wird, dass sich ein Gerät mit demselben iCloud-Konto im selben lokalen Netzwerk befindet.

Nicht zuletzt wurde iCloud von einem Unternehmen mit langjähriger Erfahrung in der Bereitstellung und Verwaltung von Daten in der Cloud entwickelt. Die Leichtigkeit, mit der Entwickler iCloud in ihre Anwendungen übernehmen können, zeigt, dass Apple eine zuverlässige Lösung bereitgestellt hat, von der Tausende von Entwicklern profitieren. Für die große Mehrheit der Anwendungen lohnt es sich nicht mehr, eine individuelle Datensynchronisationslösung zu entwickeln.


Hinter den Kulissen

Wenn Sie über die Verwendung von iCloud in Ihre Anwendung nachdenken, empfehle ich Ihnen, sich die Zeit zu nehmen, um sich mit den inneren Funktionen von iCloud vertraut zu machen und sich dessen Einschränkungen bewusst zu sein. iCloud-fähige Anwendungen verfügen über eine iCloud-Sandbox, ähnlich wie die Sandbox, die eine Anwendung unter iOS hat. Sandboxen hat eine Reihe klarer Sicherheitsvorteile. Sicherheit ist jedoch mit Kosten verbunden. Der Nachteil der iCloud-Sandbox besteht darin, dass der Zugriff auf die Daten Ihrer Anwendungen von anderen installierten Anwendungen aus umständlich ist.

Für Entwickler, die neu bei iCloud sind, könnte es sich um eine Blackbox handeln, bei der Apple entscheidet, was mit Ihren Daten geschieht und wie sie verwaltet werden. Dies trifft jedoch nicht zu. Immer wenn sich ein Dokument auf Gerät A ändert, werden die Änderungen an iCloud übertragen. iCloud benachrichtigt dann alle zusätzlichen Geräte, z. B. die Geräte B und C, über diese Änderungen. Ihre Anwendung entscheidet, wie sie auf Änderungen reagiert. Gleiches gilt für die Konfliktlösung. Wie bereits erwähnt, ist Konfliktbehandlung einer der schwierigsten Aspekte der Datensynchronisation. iCloud benachrichtigt Sie, wenn sich Änderungen ergeben haben und ob Konflikte aufgetreten sind. Es liegt an Ihnen, einen Konfliktalgorithmus zu implementieren, um auftretende Konflikte zu behandeln.

Erwähnenswert ist auch, dass Core Data eng in iCloud integriert ist. Seit seiner Einführung auf der Mac-Plattform vor vielen Jahren hat sich Core Data zu einem erstaunlich leistungsstarken Framework entwickelt. Die Integration mit iCloud macht es noch attraktiver. Das Konfliktmanagement wird zum Beispiel von Core Data dank der engen Integration mit iCloud elegant gehandhabt.


Übernahme von iCloud Storage

Es gibt zwei Möglichkeiten, wie Sie iCloud Storage in einer Anwendung verwenden können: (1) iCloud Key-Value Storage und (2) iCloud Document Storage. Beide sind auf spezifische Anwendungsfälle ausgerichtet.

iCloud-Schlüsselwertspeicherung

iCloud Key-Value Storage hat viele Ähnlichkeiten mit NSUserDefaults und funktioniert ähnlich. Mit iCloud Key-Value Storage kann Ihre Anwendung Schlüssel-Wert-Paare speichern, genau wie mit NSUserDefaults oder einem einfachen NSDictionary. Der Unterschied besteht darin, dass diese Schlüsselwertpaare lokal (auf dem Gerät) und in iCloud vorhanden sind. In bestimmten Intervallen werden die lokalen Schlüssel-Wert-Paare mit iCloud synchronisiert.

Die Synchronisierung der Benutzereinstellungen zwischen Geräten ist ein möglicher Anwendungsfall für iCloud Key-Value Storage. Es eignet sich hervorragend für Anwendungen, die eine begrenzte Datenmenge verarbeiten. Mit anderen Worten, Anwendungen, die keine Daten enthalten und nur kleine Informationsmengen speichern, eignen sich am besten für die Speicherung von Schlüsselwerten.

Für iCloud Key-Value Storage gibt es eine Reihe von Einschränkungen. Die erste Einschränkung ist, dass nur Eigenschaftslistendatentypen (NSString, NSNumber, NSDate, NSData usw.) gespeichert werden können. Benutzerdefinierte Modellobjekte müssen serialisiert werden, bevor sie mit iCloud Key-Value Storage gespeichert werden können.

Eine zweite Einschränkung bezieht sich auf den Speicherplatz, der dem Schlüsselwertspeicher zugewiesen wird. Jede Anwendung kann 1 MB oder 1024 Schlüsselwertpaare speichern. Wie bereits erwähnt, ist der Schlüsselwertspeicher für datenintensive Anwendungen keine Option.

Der Hauptvorteil von Key-Value Storage ist die Benutzerfreundlichkeit. Es ist extrem einfach einzurichten und in Ihrer Anwendung zu verwenden, was eine sehr begrenzte Entwicklungszeit erfordert.

iCloud Document Storage

Wie der Name schon sagt, ist diese Art der Speicherung auf dokumentenbasierte Anwendungen ausgerichtet. iCloud Document Storage kann zum Speichern von Dateien verwendet werden und kann auch mit Paketen umgehen.

Der Vorteil des iCloud Document Storage-Modells besteht darin, dass der für Ihre Anwendung verfügbare Speicherplatz nur durch die Kapazität des iCloud-Kontos des Benutzers begrenzt ist.

Diese beiden Arten von iCloud Storage sind sehr unterschiedlich und es sollte nicht schwer zu entscheiden sein, welcher Typ für Ihre Anwendung am besten geeignet ist.


ICloud einrichten

Das Konfigurieren einer Anwendung für die Verwendung mit iCloud ist einfach und erfordert nur zwei Schritte. In der zweiten Folge dieser Serie werde ich ausführlicher über den Einrichtungsprozess sprechen, indem ich Sie Schritt für Schritt durch den Prozess führt. In diesem Artikel werde ich jeden Schritt kurz beschreiben.

Schritt 1: iCloud-Bereitstellung

Eine Anwendung ist standardmäßig nicht für die Verwendung von iCloud konfiguriert. Um iCloud zu aktivieren, melden Sie sich mit Ihrem Entwicklerkonto beim Bereitstellungsportal an und aktivieren Sie iCloud für Ihre Anwendung im App IDs-Portal. Das ist alles, was Sie tun müssen, um iCloud für die Verwendung in Ihrer Anwendung bereitzustellen.


Schritt 2: Konfigurieren Sie die Anwendungsberechtigungen

Der nächste Schritt ist das Erstellen der richtigen Berechtigungen für Ihre Anwendung. Jede Anwendung, die iCloud verwenden möchte, muss mit iCloud-spezifischen Berechtigungen signiert sein. Die Berechtigungen definieren, welche Anwendungen Zugriff auf die Daten Ihrer Anwendung haben. Diese Berechtigungen bieten daher eine Sicherheitsstufe für die Daten des Benutzers.



Nächstes Mal

Wenn Sie von einigen der iCloud-Konzepte, die ich besprochen habe, verwirrt sind, möchten Sie vielleicht nach der nächsten Ausgabe dieser Tuts + Premium-Serie Ausschau halten. Beim nächsten Mal werde ich Sie durch die Einrichtung einer iCloud-fähigen Anwendung führen. Wir werden eine Anwendung erstellen, die iCloud-Schlüsselwertspeicherung verwendet, um die Daten des Benutzers über mehrere Geräte hinweg synchron zu halten. Bleib dran!