Créer une application de liste d’achats avec CloudKit: partager des articles d’achat

Dans le didacticiel précédent de cette série, vous avez ajouté la possibilité de créer, mettre à jour et supprimer des listes de courses de votre application de liste de courses alimentée par iCloud. Dans le dernier tutoriel de la série, vous utiliserez CKShare pour partager un élément de liste d’achats spécifique avec un autre utilisateur.

Dans cette série, vous avez travaillé avec des bases de données privées, ainsi que sur les bases de données publiques. Cependant, jusqu’à la WWDC 2016, lorsque Apple a introduit CKShare, il n’y avait pas de moyen approprié pour les applications de partager des données. Les bases de données privées ne sont disponibles que pour les utilisateurs connectés, tandis que les bases de données publiques sont conçues pour le contenu public et permettent à quiconque d’afficher les enregistrements. Cependant, lorsque vous utilisez certaines des applications iCloud d’Apple, telles que Pages, Keynote ou Notes, vous avez peut-être remarqué en sélectionnant le bouton de partage, la possibilité d’inviter d’autres utilisateurs à accéder à vos données.

Dans cet article, je vais vous montrer comment partager du contenu de manière sélective.

Application Notes de pommes

Dans ce didacticiel, vous allez donner à votre application la même capacité, afin que les utilisateurs puissent collaborer avec vous sur un élément de liste de courses partagé.

Conditions préalables

N’oubliez pas que j’utiliserai Xcode 9 et Swift 3. Si vous utilisez une ancienne version de Xcode, gardez à l’esprit que vous utilisez une version différente du langage de programmation Swift.

Dans ce tutoriel, nous continuons là où nous nous sommes arrêtés dans le troisième tutoriel de cette série. Vous pouvez télécharger ou cloner le projet à partir de GitHub.

À propos des bases de données

Apple propose trois types de bases de données: publiques, privées et partagées. Une base de données publique est l’endroit où vous rendez disponible du contenu auquel tout le monde peut accéder, le tout dans la zone par défaut. Les utilisateurs n’ont même pas besoin d’être authentifiés avec iCloud pour afficher le contenu, mais ils ne peuvent pas écrire de modifications.

Une base de données privée que vous devriez déjà connaître, car l’application de magasinage a exploité la base de données privée pour stocker des enregistrements auxquels le public ne peut pas accéder. À l’heure actuelle, toutes vos listes de courses sont des listes privées.

Une base de données partagée est la fenêtre de base de données partagée d’Apple dans votre base de données privée, qui permet aux utilisateurs d’accéder en lecture ou en écriture via CKShare.

Il est important de noter que la base de données partagée réside sur le compte de l’utilisateur invité et constitue un portail vers la base de données privée du propriétaire, avec le CKShare étant un type particulier de CKRecord qui est attaché au CKRecord.

Les différents types de bases de données

Ajout du UICloudSharingController

Vous allez d’abord implémenter le UICloudSharingController et ses associés UICloudSharingControllerDelegate. L’approche de loin la plus simple pour le partage est d’utiliser UICloudSharingController, qui se charge de fournir et de présenter les écrans pour partager votre dossier, inviter des utilisateurs et définir des autorisations sur votre dossier, le tout avec quelques lignes de code. Selon le SDK d’Apple, UICloudSharingController vous permet sans effort de:

  • inviter des personnes à consulter ou à collaborer sur un enregistrement partagé
  • définir les droits d’accès en déterminant qui peut accéder à l’enregistrement partagé (uniquement les personnes invitées ou toute personne disposant du lien de partage)
  • définir des autorisations générales ou individuelles (lecture seule ou lecture / écriture)
  • supprimer l’accès à un ou plusieurs participants
  • arrêter de participer (si l’utilisateur est un participant)
  • arrêter le partage avec tous les participants (si l’utilisateur est le propriétaire de l’enregistrement partagé)
En relation :  Votre téléphone ou tablette Android ne s'allume pas? 6 façons de réparer

Dans votre ListViewController.swift fichier, incluez le UICloudSharingControllerDelegate déléguer:

Ensuite, ajoutez le TableViewde didSelectRowAt: afin que lorsqu’un utilisateur sélectionne une cellule, il invoque la feuille de partage.

Dans la méthode ci-dessus, vous créez un CKShare, associant le item CKRecord comme enregistrement racine. La méthode définit ensuite le share[CKShareTitleKey] et share[CKShareTypeKey] properties en préparation de l’affichage de l’enregistrement partagé. La méthode appelle enfin prepareToShare, en passant l’enregistrement d’origine ainsi que l’enregistrement partagé qui vient d’être créé, que vous implémenterez ensuite:

Cette méthode crée le UICloudSharingController dans un gestionnaire de blocs, en sauvegardant d’abord les enregistrements en utilisant le CKModifyRecordsOperation dans votre base de données de cloud privé, avant de notifier le gestionnaire d’achèvement. Vous définissez également les autorisations disponibles du contrôleur de vue, avant de le présenter enfin à votre utilisateur.

Mettre en œuvre le UICloudSharingController Méthodes de délégation

Vous devez également implémenter les deux méthodes de délégué obligatoires, itemTitleForCloudSharingController et failedToSaveShareWithError. Il existe d’autres méthodes de délégué facultatives que vous pouvez également choisir d’implémenter.

le itemTitleForCloudSharingController la méthode correspond à la CKShareTitleKey propriété que vous avez définie précédemment, demandant l’affichage du titre sur la liste d’invitations. failedToSaveShareWithError informe le délégué de traiter les demandes de partage ayant échoué. Allez-y, créez et exécutez votre application, créez un enregistrement, puis sélectionnez un enregistrement individuel pour déclencher la feuille de partage.

Partage de votre dossier

Cela a l’air bien, mais votre travail n’est toujours pas terminé! Vous devez gérer la manière dont les autres utilisateurs peuvent recevoir et afficher votre enregistrement partagé.

Recevoir et gérer CKShare Registres

Enfin, vous devez configurer votre application pour pouvoir récupérer et afficher les enregistrements partagés. Ouvrez votre AppDelegate.swift fichier et ajoutez le userDidAcceptCloudKitShareWith méthode déléguée:

UserDidAcceptCloudKitShareWith: informe le délégué que votre application a accès aux informations partagées, ce qui vous donne la possibilité de gérer le nouveau contenu. Il vous avertit lorsque votre application a réussi à partager un élément, ainsi que les problèmes rencontrés pendant le processus de partage, via le CKAcceptSharesOperation.

Dans la méthode, vous créez une nouvelle instance du AddItemViewController, appelant une nouvelle fonction que vous créez, fetchShare, ainsi que les métadonnées d’intérêt. La méthode ajoute enfin le CKAcceptSharesOperation dans votre conteneur. Pour afficher l’enregistrement, ouvrez le AddItemViewController.swift fichier et implémentez le fetchShare méthode:

En relation :  Avec la fin incassable de Kimmy Schmidt, c'est la grande nouvelle

Dans cette dernière méthode, vous récupérez l’enregistrement partagé et l’assignez à votre variable globale self.item, avant de finalement persister l’opération de votre propre chef sharedCloudDatabase base de données.

Conclusion

Dans ce didacticiel, vous avez appris à quel point il est facile, avec seulement quelques lignes de code, d’ajouter la possibilité de partager un sous-ensemble de vos enregistrements privés avec d’autres utilisateurs et de les faire collaborer sur ces mêmes données. Grâce à la puissance et à la simplicité de CKShare, vous pouvez sélectionner un article de la liste d’achats, inviter un utilisateur à accéder à votre article via le UICloudSharingController feuille, et gérez l’accès et les autorisations des utilisateurs.

En plus de partager vos enregistrements avec les utilisateurs, vous avez également appris à recevoir et à afficher des données dans leurs applications, ainsi qu’à stocker l’enregistrement dans leur base de données partagée.

Comme vous pouvez le voir, CloudKit offre beaucoup de commodité et de robustesse, le tout dans l’écosystème d’Apple. L’authentification est pratiquement invisible, sans que les utilisateurs aient besoin de se connecter avec un e-mail ou un mot de passe, et la synchronisation est en temps réel. Au-delà de cette série, je vous encourage à explorer des sujets plus avancés, tels que la synchronisation de CloudKit avec Core Data ou la création de votre logique de mise en cache pour gérer le marshaling des données hors ligne.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.