Comment utiliser le CloudKit d'Apple pour les notifications push

introduction

Apple a présenté son framework CloudKit aux côtés d'iOS 8 en 2014. Si son objectif principal était de servir de base de données en ligne pour les applications iOS, CloudKit offre également de nombreuses autres fonctionnalités, notamment les notifications push.. 

Dans ce tutoriel, je vais vous montrer comment utiliser le framework CloudKit pour implémenter des notifications push pour vos applications iOS. Si vous souhaitez en savoir plus sur les autres fonctionnalités offertes par CloudKit, vous pouvez lire mon tutoriel couvrant les bases du cadre:

  • Une introduction à CloudKit

    Dans ce tutoriel, vous allez apprendre à configurer CloudKit pour une application iOS. En chemin, vous vous familiariserez avec le tableau de bord CloudKit, le…
    Davis Allie
    iOS 8

Ce tutoriel nécessite l'utilisation d'au moins Xcode 8 avec Swift 3. Vous devez également disposer d'un périphérique physique iOS pour effectuer des tests et d'un compte de développeur Apple pour pouvoir activer CloudKit pour votre application..

1. Pourquoi utiliser CloudKit?

Tout d'abord, nous examinerons les avantages (et les inconvénients) de l'utilisation de CloudKit pour les notifications push de votre application.. 

Comme vous le verrez dans ce didacticiel, pour configurer des notifications push avec CloudKit, vous n'avez pas à vous soucier de la création de certificats et de profils de provisioning comme vous le faites avec d'autres services de cloud. Puisque tout est fabriqué par Apple, tout ce que vous avez à faire est d’activer CloudKit pour votre application, et le reste ne fonctionne que.

Une des meilleures choses à propos de CloudKit pour certains développeurs est combien vous obtenez gratuitement. De nombreuses autres sociétés Baas (Backend-as-a-Service) existent et offrent des notifications push pour les applications iOS, mais la plupart d'entre elles ont une limite quant au nombre de notifications pouvant être envoyées gratuitement. Avec CloudKit, le nombre de notifications push que vous pouvez envoyer à vos utilisateurs est illimité. Cependant, le niveau libre de CloudKit limite le stockage de données, le transfert de données et le nombre de demandes d'utilisateurs par seconde.. 

L'utilisation de CloudKit dans vos applications présente un autre avantage: vous ne devrez jamais vous inquiéter de la stabilité et de la maintenance du réseau, fournies par Apple. Les pannes de service Apple se produisent très rarement et sont résolues rapidement. Cela signifie que vous pouvez compter sur CloudKit pour toujours fonctionner correctement pour vos utilisateurs..

Cependant, un inconvénient dont vous devez être conscient lorsque vous utilisez CloudKit est qu’il n’est actuellement pas disponible sur des plates-formes autres que Apple. Cela signifie que si vous souhaitez créer une version Android de votre application, CloudKit ne fonctionnera pas. Pour une solution multiplate-forme, je recommanderais un autre BaaS tel que back4app (construit sur Parse), comme je l'explique dans ce tutoriel:

2. Configuration de CloudKit

Pour commencer, créez un nouveau projet dans Xcode à partir du iOS> Application> Application à vue unique modèle. 

Une fois que Xcode a créé votre projet, accédez au Navigateur de projet et cliquez sur le Les capacités languette. Sur cet écran, cliquez sur le bouton pour activer iCloud puis activez le CloudKit case à cocher:

Une fois que vous avez activé CloudKit, vous pouvez maintenant accéder au tableau de bord CloudKit pour votre application..

Pour envoyer des notifications push aux utilisateurs de notre application, nous allons créer un GlobalNotification type d’enregistrement qui avertira tous les utilisateurs lorsqu’un nouvel enregistrement de ce type est créé. Si la Type d'enregistrement Une section du tableau de bord CloudKit n'est pas déjà ouverte pour vous après votre connexion, cliquez dessus dans la barre latérale..

Pour créer un nouveau type d’enregistrement, cliquez sur le bouton +bouton en haut de l'écran. Remplissez le menu comme indiqué dans la capture d'écran suivante:

Pour ce tutoriel, nous n’ajoutons qu’un seul contenu champ au type d'enregistrement, mais pour vos propres applications, vous pouvez en ajouter autant que nécessaire. 

Lorsque vous avez terminé, cliquez sur le bouton sauvegarder bouton dans le coin en bas à droite.

3. Configuration de l'application

De retour dans Xcode, ouvrez votre AppDelegate.swift fichier et ajoutez les instructions d'importation suivantes en haut de votre code:

importer CloudKit import UserNotifications

Ce code importera simplement les frameworks CloudKit et UserNotifications. Nous allons utiliser UserNotifications pour gérer à la fois les autorisations de notification et les notifications entrantes. Si vous voulez en savoir plus sur ce framework, vous pouvez lire mon tutoriel le couvrant ici:

  • Une introduction au framework UserNotifications

    Dans ce didacticiel, vous découvrirez le nouveau cadre UserNotifications sous iOS 10, tvOS 10 et watchOS 3. Ce nouveau cadre fournit un ensemble moderne de…
    Davis Allie
    iOS

Ensuite, éditez votre AppDéléguer définition de classe pour le rendre conforme à la UNUserNotificationCenterDelegate protocole:

classe AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate …

Nous devons maintenant demander l'autorisation d'afficher les notifications. Pour ce faire, remplacez votre application (_: didFinishLaunchingWithOptions :) méthode avec ce qui suit:

application func (_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: any]?) -> Bool UNUserNotificationCenter.current (). delegate = self UNUserNotificationCenter.current (). requestAuthorization (options: .alert. ], completionHandler: autorisé, erreur si autorisé application.registerForRemoteNotifications ()) renvoie true

Avec ce code, nous demandons à l'utilisateur l'autorisation d'afficher les notifications et, s'il accepte, enregistre l'application pour les notifications push..

Maintenant, nous devons mettre en œuvre le application (_: didRegisterForRemoteNotificationsWithDeviceToken :) méthode. Ajoutez le code suivant à votre AppDéléguer classe:

func application (_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Données) let subscription = CKQuerySubscription (recordType: "GlobalNotification", prédicat: NSPredicate (format: "TRUEPREDICATE"), options: .firesOr. = "Une nouvelle notification a été postée!" info.shouldBadge = true info.soundName = "default" subscription.notificationInfo = info CKContainer.default (). publicCloudDatabase.save (subscription, completionHandler: subscription, erreur si erreur == nil // souscription sauvegardée avec succès else  // Une erreur est survenue)

Avec ce code, nous créons d’abord un CKQuerySubscription objet. Cet objet d'abonnement est ce qui indique à CloudKit pour quoi il doit envoyer des notifications. Lors de l'initialisation de cet abonnement, nous incluons les éléments suivants:

  • Le nom du type d'enregistrement à surveiller.
  • Un prédicat qui peut être utilisé pour limiter l'abonnement à des enregistrements particuliers du type spécifié. Dans ce tutoriel, nous voulons nous abonner à tous GlobalNotification enregistrements donc nous passons dans un prédicat qui est toujours vrai.
  • Un ou plusieurs déclencheurs indiquant à CloudKit quand une notification doit être envoyée. Dans cet exemple, nous ne voulons une notification que lorsqu'un nouvel enregistrement est créé. Les autres déclencheurs valides incluent la mise à jour ou la suppression d’un enregistrement..

Ensuite, nous créons un CKNotificationInfo objet, fournissez-lui du contenu, puis affectez-le à l'objet d'abonnement. le CKNotificationInfo objet est comment vous formatez la notification push qui est livrée à vos utilisateurs. Dans cet exemple, nous le configurons avec les propriétés suivantes:

  • Un alertBody de "Une nouvelle notification a été postée!"
  • UNE devraitBadge valeur de vrai. Ainsi, l'icône de l'application sur l'écran d'accueil incrémente son numéro pour chaque notification reçue..
  • UNE soundName de "défaut". Cela utilisera simplement le son de notification iOS par défaut pour votre application. Si vous souhaitez utiliser un son personnalisé, vous devez utiliser le nom de votre fichier audio..
  • UNE touches souhaitées tableau avec une seule valeur. Pour chaque clé que vous incluez dans ce tableau, CloudKit chargera la valeur correspondante de l'enregistrement qui a déclenché la notification et l'inclura dans le dictionnaire d'informations utilisateur de la notification..

Plus bas, nous attribuons les informations de notification à l'abonnement, qui est ensuite enregistré dans la base de données publique CloudKit pour votre application.. 

Pour que vous puissiez voir la notification lorsque votre application est en cours d'exécution, ajoutez la méthode suivante à votre classe AppDelegate:

func userNotificationCenter (_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) completionHandler ([. alert, .sound])

Ce code utilise la structure UserNotifications pour afficher votre notification comme si votre application ne fonctionnait pas du tout..

Avant de lancer votre application, vous devez vérifier si votre appareil de test est connecté à un compte iCloud en allant sur Réglages. Sinon, vous devrez le faire car les API CloudKit exigent que l'utilisateur actuel soit connecté..

Générez et exécutez votre application à partir de Xcode et acceptez sa demande d'afficher des notifications. Une fois que vous avez fait cela, retournez au tableau de bord CloudKit pour votre application et cliquez sur Types d'abonnement dans la barre latérale gauche. Vous devriez voir un nouvel abonnement pour GlobalNotification disques avec un INSÉRER déclencheur:

4. Envoi d'une notification

Il ne nous reste plus qu'à envoyer une notification! Toujours dans le tableau de bord CloudKit, cliquez sur Zone par défaut sous Données publiques dans la barre latérale gauche. Cliquez soit sur le + bouton ou sur Nouvel enregistrement créer un nouveau GlobalNotification record. Remplissez le contenu avec ce que vous voulez et cliquez sur sauvegarder dans le coin en bas à droite.

Une fois votre enregistrement sauvegardé, vous devriez voir la notification apparaître immédiatement sur votre appareil de test:

Conclusion

Comme vous l'avez vu, vous pouvez facilement implémenter des notifications push pour votre application iOS à l'aide de CloudKit. La configuration est très simple, avec seulement un petit nombre d'étapes et les API fournies permettent toute notification push dont vous pourriez avoir besoin pour vos applications..

Comme toujours, assurez-vous de laisser vos commentaires dans la section commentaires ci-dessous. Et consultez certains de nos autres cours et tutoriels iOS!

  • Quoi de neuf dans iOS 10

    Avec chaque nouvelle version d'iOS, Apple introduit un ensemble de nouvelles fonctionnalités et améliorations pour l'expérience des développeurs. Ce sont particulièrement excitant pour le…
    Markus Mühlberger
    iOS
  • Créer des extensions SiriKit dans iOS 10

    iOS 10 a enfin ouvert Siri aux applications tierces. Dans ce tutoriel, je vais vous montrer comment exploiter les capacités de Siri et intégrer la voix…
    Patrick Balestra
    SDK iOS
  • iOS 10: Extensions du service de notification

    Lorsque vous recevez une notification dans une application iOS, vous pouvez télécharger le contenu en réponse ou modifier son contenu avant qu'il ne soit affiché à l'utilisateur. Dans ce…
    Davis Allie
    iOS 10
  • Notifications push iOS simples avec back4app

    Dans ce didacticiel, vous apprendrez à mettre en œuvre facilement les notifications push pour les applications iOS en utilisant back4app en tant que service principal. Ce tutoriel couvre les…
    Davis Allie
    SDK iOS