Travailler avec iCloud Introduction

Garder les données des applications synchronisées sur tous les appareils est une tâche complexe et ardue. Heureusement, c’est précisément pourquoi Apple a construit iCloud. Dans cette série Tuts + Premium, vous apprendrez le fonctionnement de iCloud et comment vos applications peuvent partager des données en toute transparence sur plusieurs appareils..


Aussi disponible dans cette série:

  1. Travailler avec iCloud: Introduction
  2. Travailler avec iCloud: Stockage de valeurs clés
  3. Travailler avec iCloud: Stockage de documents
  4. Travailler avec iCloud: Intégration des données de base

ICloud est l'une des fonctionnalités les plus vantées d'iOS 5. Bien qu'iCloud partage un certain nombre de similitudes avec le service MobileMe d'Apple, iCloud est bien plus que MobileMe. Comme beaucoup d’autres entreprises, Apple s’est rendu compte que le cloud est un élément indispensable de l’espace mobile. Certains sceptiques considèrent qu'iCloud est la deuxième tentative d'Apple pour créer un service de synchronisation, mais iCloud est une entreprise plus ambitieuse avec un potentiel énorme..


Aperçu de la série

Ceci est le premier article d'une série sur le stockage iCloud. Avant de plonger dans iCloud Storage, j'aimerais prendre quelques instants pour vous donner un aperçu de ce que vous pouvez attendre de cette série..

Ce tutoriel n'aura pas d'échantillons de code. Mon objectif pour ce tutoriel est de vous familiariser avec iCloud sur le plan conceptuel et de vous montrer comment iCloud peut vous aider en tant que développeur..

Dans le deuxième volet de cette série, je vais vous montrer comment activer iCloud Storage pour une application. Nous allons également créer notre première application compatible iCloud en utilisant le stockage iCloud Key-Value..

Les deux derniers versements porteront sur iCloud Document Storage. La troisième partie se concentrera sur la nouvelle classe UIDocument et expliquera comment l’utiliser peut vous rendre la vie plus facile. La quatrième partie portera sur UIManagedDocument, une sous-classe concrète de UIDocument intégrée à Core Data. Grâce à l'intégration étroite de Core Data et d'iCloud, vous constaterez que votre application peut tirer un avantage considérable de l'adoption de Core Data et d'iCloud dans vos applications.!


Qu'est-ce que iCloud offre aux consommateurs?

Pour le consommateur, iCloud est un service gratuit qui stocke les données de l'utilisateur dans le cloud, qu'il s'agisse de musique, de photos, de courrier électronique, de calendriers, de contacts, etc. Les données stockées sur iCloud sont disponibles pour tout appareil configuré avec le compte iCloud de l'utilisateur. (par exemple, Macbooks, iPhone, iPad). Alors que MobileMe a toujours eu un prix relativement élevé, Apple a rendu iCloud gratuit dès le début. Apple a pris cette décision pour une raison. Pour qu'iCloud soit un succès, il est essentiel qu'il soit utilisé par le plus grand nombre de personnes possible. Apple a de grands projets pour iCloud et, avec le temps, il devrait devenir un composant encore plus important des systèmes d'exploitation iOS et OS X.


Comment iCloud aide-t-il les développeurs??

Le composant le plus utile aux développeurs est ce que Apple appelle iCloud Storage. C’est la partie de iCloud conçue pour les données d’application.

Avec iCloud, Apple a introduit une collection d’API permettant aux développeurs d’adopter iCloud Storage dans leurs propres applications. Apple souligne que ses propres applications, telles que la suite d'applications iWork, utilisent les mêmes API pour se connecter à iCloud. L'API iCloud est simple, facile à utiliser et étonnamment flexible. Il est clair qu'Apple a consacré beaucoup d'efforts, de ressources et de ressources à la création d'iCloud en ce qui concerne l'intégration avec des tiers..


Avantages du stockage iCloud

Garder les données d'applications synchronisées sur tous les appareils n'est pas chose aisée (demandez à Apple, Dropbox ou Google!). Non seulement cela nécessite une infrastructure back-end fiable, mais l'un des défis les plus redoutables consiste à effectuer la synchronisation des données elle-même. De nombreux scénarios peuvent entraîner une perte ou une corruption des données. La gestion des conflits, en particulier, est l’un des aspects les plus difficiles de la synchronisation des données. Plus le modèle de données est complexe, plus l'algorithme de conflit doit être sophistiqué pour traiter tous les cas extrêmes..

Au lieu de créer un framework iCloud séparé, Apple a amélioré certains de ses frameworks existants avec des API iCloud.. NSFileManager est un bel exemple d'une classe qui a acquis un support significatif en API pour l'intégration iCloud.

L'un des avantages les plus importants d'iCloud est son intégration transparente avec iOS. Chaque périphérique iOS a un démon iCloud exécuté en arrière-plan. Ce démon surveille les changements dans iCloud même si votre application n'est pas en cours d'exécution.

Une autre optimisation d'iCloud est la synchronisation entre homologues. Tout comme Dropbox, iCloud synchronisera les modifications sur le réseau local s'il détecte qu'un périphérique avec le même compte iCloud se trouve sur le même réseau local..

Enfin, iCloud a été conçu par une entreprise possédant plusieurs années d'expérience dans la fourniture et la gestion de données dans le cloud. La facilité avec laquelle les développeurs peuvent adopter iCloud dans leurs applications montre qu'Apple a déployé une solution fiable qui bénéficiera à des milliers de développeurs. Pour la grande majorité des applications, il ne sera plus utile de développer une solution de synchronisation de données personnalisée.


Dans les coulisses

Si vous envisagez d'adopter iCloud dans votre application, je vous suggère de prendre le temps de bien comprendre le fonctionnement interne d'iCloud et de prendre conscience de ses limites. Les applications compatibles iCloud ont un sandbox iCloud très semblable au sandbox d’une application sur iOS. Le sandboxing présente un certain nombre d'avantages évidents en matière de sécurité. Cependant, la sécurité a un coût. L'inconvénient du sandbox iCloud est que l'accès aux données de vos applications à partir d'autres applications installées est fastidieux..

Les développeurs novices d'iCloud pourraient penser qu'il s'agit d'une boîte noire avec Apple qui décide de ce qu'il advient de vos données et de la façon dont elles sont gérées. Ce n'est pas vrai, cependant. Lorsqu'un document change sur le périphérique A, les modifications sont transférées vers iCloud. iCloud informe ensuite tous les périphériques supplémentaires, par exemple les périphériques B et C, de ces modifications. Il appartient à votre application de décider de sa réponse lorsque des modifications sont apportées. La même chose est vraie pour la résolution des conflits. Comme je l'ai mentionné précédemment, la gestion des conflits est l'un des aspects les plus difficiles de la synchronisation des données. iCloud vous avertira lorsque des modifications auront été apportées et si des conflits sont survenus. Il vous appartient de mettre en œuvre un algorithme de conflit pour gérer les conflits éventuels..

Il convient également de mentionner que Core Data est étroitement intégré à iCloud. Depuis son introduction sur la plate-forme Mac il y a de nombreuses années, Core Data est devenu un framework incroyablement puissant. Son intégration avec iCloud le rend encore plus attrayant. La gestion des conflits, par exemple, est gérée avec élégance par Core Data grâce à son intégration étroite à iCloud..


Adoption du stockage iCloud

Vous pouvez utiliser iCloud Storage dans une application de deux manières: (1) iCloud Key-Value Storage et (2) iCloud Document Storage. Les deux sont destinés à des cas d'utilisation spécifiques.

Stockage de la valeur clé iCloud

iCloud Key-Value Storage partage beaucoup de similitudes avec NSUserDefaults et fonctionne de manière similaire. Avec iCloud Key-Value Storage, votre application peut stocker des paires clé-valeur, comme vous pouvez le faire avec NSUserDefaults ou un simple NSDictionary. La différence est que ces paires clé-valeur existent localement (sur le périphérique) et dans iCloud. À des intervalles spécifiques, les paires clé-valeur locales sont synchronisées avec iCloud.

Garder les paramètres utilisateur synchronisés sur tous les périphériques est un cas d'utilisation possible pour le stockage clé-valeur iCloud. Il est parfaitement adapté aux applications traitant un nombre limité de données. En d'autres termes, les applications qui ne contiennent pas beaucoup de données et ne stockent que de petites quantités d'informations sont les mieux adaptées au stockage clé-valeur.

iCloud Key-Value Storage présente un certain nombre de limitations. La première limite est que seuls les types de données de liste de propriétés (NSString, NSNumber, NSDate, NSData, etc.) peuvent être stockés. Les objets de modèle personnalisés doivent être sérialisés avant de pouvoir être stockés avec iCloud Key-Value Storage..

Une deuxième limitation est liée à la quantité d'espace disque allouée au stockage de valeurs clés. Chaque application peut stocker 1 Mo ou 1 024 paires clé-valeur. Comme je l'ai mentionné précédemment, le stockage clé-valeur n'est pas une option pour les applications gourmandes en données.

Le principal avantage de Key-Value Storage est sa facilité d'utilisation. Il est extrêmement facile à configurer et à utiliser dans votre application, ce qui nécessite un temps de développement très limité..

Stockage de documents iCloud

Comme son nom l'indique, ce type de stockage est destiné aux applications basées sur des documents. iCloud Document Storage peut être utilisé pour stocker des fichiers et peut également gérer des packages.

L'un des avantages du modèle de stockage de documents iCloud est que l'espace disponible pour votre application n'est limité que par la capacité du compte iCloud de l'utilisateur..

Ces deux types de stockage iCloud sont très différents et il ne devrait pas être difficile de décider quel type est le plus approprié pour votre application..


Configurer iCloud

Configurer une application pour l'utiliser avec iCloud est simple et ne nécessite que deux étapes. Dans la deuxième partie de cette série, je parlerai plus en détail du processus d’installation en vous expliquant pas à pas. Dans cet article, je fournirai une brève description de chaque étape..

Étape 1: Provisionnement iCloud

Une application n'est pas configurée par défaut pour utiliser iCloud. Pour activer iCloud, connectez-vous au portail d'approvisionnement avec votre compte de développeur et activez iCloud pour votre application dans le portail des ID d'application. C’est tout ce dont vous avez besoin pour approvisionner iCloud dans votre application..


Étape 2: Configurer les droits de l'application

L'étape suivante consiste à créer les droits appropriés pour votre application. Toute application qui souhaite utiliser iCloud doit être signée avec des droits spécifiques à iCloud. Les droits définissent les applications qui ont accès aux données de votre application. Ils fournissent donc une couche de sécurité pour les données de l'utilisateur..



La prochaine fois

Si vous êtes dérouté par certains des concepts iCloud dont j'ai parlé, gardez un œil sur le prochain épisode de cette série Tuts + Premium. La prochaine fois, je vous expliquerai comment configurer une application compatible iCloud et nous créerons une application qui adoptera iCloud Key-Value Storage pour que les données de l'utilisateur soient synchronisées sur plusieurs périphériques. Restez à l'écoute!