Partager via


Tutoriel : Créer des notifications Push dans votre application iOS

Ce tutoriel vous guide pour créer des notifications Push dans votre application iOS à l’aide du kit de développement logiciel (SDK) Azure Communication Services Chat.

Les notifications Push alertent les utilisateurs des messages entrants dans une conversation lorsque l’application mobile ne s’exécute pas au premier plan. Azure Communication Services prend en charge deux versions de notifications Push :

  • Version de base : un numéro de badge apparaît sur l’icône de l’application, l’appareil émet un son de notification et une bannière d’alerte contextuelle s’affiche.

    Capture d’écran de la version de base d’une notification Push.

  • Version avancée : en plus des fonctionnalités prises en charge dans la version de base, vous pouvez personnaliser le titre et l’aperçu du message dans la bannière d’alerte.

    Capture d'écran de la version avancée d’une notification Push.

Dans ce tutoriel, vous allez :

  • Configurez un certificat APNs (Apple Push Notification service).
  • Configurez Xcode pour les notifications Push.
  • Implémentez une version de base ou avancée des notifications Push.
  • Testez les notifications sur votre application.
  • Configurez le renouvellement automatique de l’inscription pour les notifications Push.

Télécharger le code

Accédez à l’exemple de code pour ce tutoriel sur GitHub.

Prérequis

Créer un certificat APNs .p12 et le définir dans le hub de notification

Si vous n’êtes pas un client interne Microsoft, effectuez toutes les étapes de la procédure suivante.

Si vous êtes un client interne Microsoft, envoyez un ticket et fournissez l’ID de bundle de votre application pour obtenir un certificat .p12. Passez ensuite à la dernière étape de la procédure suivante.

  1. Connectez-vous au portail des développeurs Apple.

  2. Accédez à Certificats, identificateurs et profils>Identificateurs>ID d’application, puis sélectionnez l’ID d’application associé à votre application.

    Capture d’écran montrant les sélections pour choisir un ID d’application.

  3. Sur la page de votre ID d’application, sélectionnez Fonctionnalités>Notifications Push, puis sélectionnez Enregistrer.

    Capture d’écran montrant les options de modification d’une configuration d’ID d’application.

  4. Dans la boîte de dialogue Modifier les fonctionnalités de l’application qui s’affiche, sélectionnez Confirmer.

    Capture d’écran montrant le bouton Confirmer pour modifier les fonctionnalités de l’application.

  5. Sur la page de votre ID d’application, sélectionnez Fonctionnalités>Notifications Push>Configurer, puis effectuez le choix suivant :

    • Pour tester les notifications Push lors du développement d’une application iOS, sélectionnez le bouton Créer un certificat sous Certificat SSL de développement.
    • Pour envoyer des notifications Push en production, sélectionnez le bouton Créer un certificat sous Certificat SSL de production.

    Capture d’écran montrant les options de création d’un certificat de développement ou d’un certificat de production.

  6. La zone Créer un certificat s’affiche sur la page Certificats, identificateurs et profils.

    Capture d’écran montrant l’option de chargement d’une demande de signature de certificat.

    Dans cette zone, vous chargez une demande de signature de certificat (CSR) :

    1. Dans un nouvel onglet de navigateur, suivez cette page d’aide Apple pour créer une demande de signature de certificat et enregistrer le fichier sous Nom de l’application.cer. Les instructions incluent l’utilisation de l’Assistant Certificat pour demander un certificat et renseigner les informations du certificat.

      Capture d’écran montrant les sélections pour demander un certificat auprès d’une autorité de certification.

      Capture d’écran montrant un exemple de remplissage des informations de certificat.

    2. Faites glisser le fichier .cer vers la zone Choisir un fichier. Sélectionnez ensuite Continuer dans le coin supérieur droit.

      Capture d’écran de la zone pour choisir un fichier de certificat.

  7. Sélectionnez Télécharger.

    Capture d’écran du bouton pour télécharger un certificat.

  8. Enregistrez le fichier localement au format .p12.

    Capture d’écran montrant la zone pour enregistrer un fichier de certificat.

  9. Ouvrez le fichier .cer que vous avez téléchargé. Dans Trousseaux d’accès. sélectionnez votre certificat, cliquez dessus avec le bouton droit, puis exportez votre certificat au format .p12.

  10. Accédez à votre hub de notification. Sous Paramètres, sélectionnez Apple (APNS). Renseignez ensuite les détails du certificat :

    • Sous Mode d’authentification, sélectionnez Certificat.
    • Sous Charger le certificat, chargez le fichier .p12 que vous venez de créer.
    • Sous Mode d’application, sélectionnez le mode en fonction de vos besoins.

    Lorsque vous avez terminé d’entrer toutes les informations, sélectionnez Enregistrer.

    Capture d’écran montrant les paramètres d’application et de certificat pour un hub de notification.

Configurer Xcode

  1. Dans Xcode, accédez à Signing & Capabilities (Signature et fonctionnalités).

  2. Ajoutez une fonctionnalité en sélectionnant + Capability (Fonctionnalité), puis Push Notifications (Notifications Push).

  3. Ajoutez une autre fonctionnalité en sélectionnant + Capability, puis Background Modes (Modes d’arrière-plan).

  4. Sous Modes d’arrière-plan, sélectionnez Notifications à distance.

    Capture d’écran montrant l’ajout de notifications Push et de modes d’arrière-plan dans Xcode.

  5. Sous Cible de pod – AzureCore, définissez Exiger uniquement l’API App-Extension-Safe sur Non.

Implémenter des notifications Push

Version de base

Si vous souhaitez implémenter une version de base des notifications Push, vous devez vous inscrire aux notifications à distance auprès d’APNs. Reportez-vous à l’exemple de code pour voir l’implémentation associée dans AppDelegate.swift.

Version avancée

Si vous souhaitez implémenter une version avancée des notifications Push, vous devez inclure les éléments suivants dans votre application. La raison est que le chiffrement du contenu d’utilisateur (par exemple, le contenu du message de conversation et le nom d’affichage de l’expéditeur) dans les charges utiles de notification Push nécessite certaines solutions de contournement.

Stockage de données pour les clés de chiffrement

Créez un stockage de données persistant sur des appareils iOS. Ce stockage de données doit être en mesure de partager des données entre l’application principale et les extensions d’application.

Dans l’exemple de code de ce tutoriel, choisissez Groupes d’applications comme stockage de données en effectuant ces actions :

  • Ajoutez la fonctionnalité Groupes d’applications aux cibles de votre application (application principale et extensions d’application) en suivant les étapes décrites dans l’article Apple Ajout de fonctionnalités à votre application.

  • Configurez les groupes d’applications en suivant les étapes décrites dans l’article Apple Configuration des groupes d’applications. Vérifiez que votre application principale et vos extensions d’application ont le même nom de conteneur.

Extension de service de notification

Implémentez l’extension de service de notification groupée avec l’application principale. Cette extension d’application est utilisée pour déchiffrer la charge utile de notification Push lorsque l’appareil la reçoit.

  1. Accédez à Ajouter une extension d’application de service à votre projet dans la documentation Apple et suivez les étapes.

  2. Accédez à Implémenter les méthodes de gestionnaire de votre extension dans la documentation Apple. Apple fournit le code par défaut pour déchiffrer les données, et vous pouvez suivre la structure globale de ce tutoriel. Toutefois, étant donné que vous utilisez le kit de développement logiciel (SDK) Conversation pour le déchiffrement, vous devez remplacer la partie qui commence à // Try to decode the encrypted message data par une logique personnalisée. Reportez-vous à l’exemple de code pour voir l’implémentation associée dans NotificationService.swift.

Implémentation du protocole PushNotificationKeyStorage

Le protocole PushNotificationKeyStorage est requis pour la version avancée des notifications Push. Vous pouvez utiliser la classe par défaut AppGroupPushNotificationKeyStorage fournie par le kit de développement logiciel (SDK) Conversation. Si vous n’utilisez pas les groupes d’applications comme stockage de clés ou si vous souhaitez personnaliser les méthodes de stockage de clés, créez votre propre classe conforme au protocole PushNotificationKeyStorage.

PushNotificationKeyStorage définit deux méthodes :

  • onPersistKey(encryptionKey:expiryTime) : La première méthode est utilisée pour conserver la clé de chiffrement dans le stockage de l’appareil iOS de l’utilisateur. Le kit de développement logiciel (SDK) Conversation définit la durée d’expiration de la clé de chiffrement sur 45 minutes. Si vous souhaitez que les notifications Push soient en vigueur pendant plus de 45 minutes, vous devez planifier un appel chatClient.startPushNotifications(deviceToken:) plus fréquemment (par exemple, toutes les 15 minutes) afin qu’une nouvelle clé de chiffrement puisse être inscrite avant l’expiration de l’ancienne clé.

  • onRetrieveKeys() -> [String] : Cette méthode est utilisée pour récupérer les clés valides qui ont été stockées précédemment. Vous avez la possibilité de fournir la personnalisation en fonction du stockage des données que vous avez choisi précédemment.

Dans l’extension de protocole, le kit de développement logiciel (SDK) Conversation fournit une implémentation de la méthode decryptPayload(notification:) -> PushNotificationEvent que vous pouvez utiliser. Reportez-vous à l’exemple de code pour voir l’implémentation associée dans NotificationService.swift.

Tester vos notifications

  1. Créez une conversation avec l’utilisateur A et l’utilisateur B.

  2. Téléchargez le dépôt GitHub pour les exemples d’applications.

  3. Placez les valeurs <ACESS_TOKEN> et <ACS_RESOURCE_ENDPOINT> de l’utilisateur A dans AppSettings.plist.

  4. Définissez Enable Bitcode sur Non pour deux cibles de pod : AzureCommunicationChat et Trouter.

  5. Connectez l’appareil iOS à votre Mac et exécutez le programme. Lorsque vous êtes invité à autoriser les notifications Push sur l’appareil, sélectionnez Autoriser.

  6. En tant qu’utilisateur B, envoyez un message de conversation. Vérifiez que l’utilisateur A reçoit une notification Push sur l’appareil iOS.

Implémenter le renouvellement de l’inscription

Pour que Microsoft fournisse un service de conversation sécurisé, l’inscription aux notifications Push sur les appareils iOS reste valide pendant 45 minutes seulement. Pour gérer les fonctionnalités des notifications Push, vous devez implémenter le renouvellement d’inscription dans l’application cliente.

Ce tutoriel propose deux solutions alignées sur les directives officielles d’Apple. Nous recommandons d’implémenter les deux solutions ensemble pour améliorer leur efficacité.

Remarque

Différents facteurs peuvent influencer l’efficacité de ces solutions. Par exemple, l’état de la batterie de l’appareil, les conditions réseau et les restrictions spécifiques à iOS peuvent affecter la capacité de l’application à exécuter des tâches en arrière-plan. Pour plus d’informations, consultez la vidéo Avances dans l’exécution en arrière-plan de l’application et l’article Apple Envoi (Push) de mises à jour en arrière-plan à votre application.

Solution 1 : Tâches en arrière-plan

Les tâches en arrière-plan permettent d’effectuer des activités même si l’application n’est pas au premier plan. Lorsque vous implémentez une tâche en arrière-plan, votre application peut avoir besoin d’un délai supplémentaire pour effectuer une tâche spécifique, comme renouveler l’inscription aux notifications Push.

Les sections suivantes décrivent comment utiliser des tâches en arrière-plan pour le renouvellement de l’inscription.

Configurer l’actualisation automatique des jetons d’accès utilisateur

Pour garantir un accès ininterrompu aux services de conversation, vous devez disposer de jetons d’accès utilisateur valides. En général, les jetons ont une période de validité par défaut de 24 heures, après laquelle ils expirent et doivent être renouvelés. L’implémentation d’un mécanisme d’actualisation automatique garantit que le jeton est toujours valide chaque fois que l’application de conversation est activée.

Le kit de développement logiciel (SDK) Chat simplifie la gestion des jetons. Pour cela, il automatise le processus d’actualisation lorsqu’un actualisateur de jeton d’accès personnalisé est implémenté. Suivez les étapes ci-dessous pour configurer votre application de conversation pour qu’elle prenne en charge l’actualisation automatique des jetons :

  1. Pour que votre application de conversation maintienne un accès utilisateur continu et sécurisé, vous devez implémenter un niveau de service dédié à l’émission de jetons. L’une des options consiste à utiliser Azure Functions à cet effet.

    Pour créer une fonction Azure, consultez l’article Créer un service d’accès des utilisateurs approuvés à l’aide d’Azure Functions. Il décrit comment configurer votre application de fonction et déployer le code nécessaire pour émettre des jetons.

  2. Après avoir configuré votre fonction Azure :

    1. Obtenez l’URL de l’émetteur de jeton à partir du Portail Azure. Votre application de conversation utilise cette URL pour demander de nouveaux jetons.

    2. Créez et intégrez l’actualisateur de jetons dans votre application de conversation. Ce composant demande de nouveaux jetons et initialise le client de conversation pour un renouvellement de jeton automatique transparent.

      L’exemple de code pour l’actualisateur de jetons et son intégration au client de conversation est disponible dans le dépôt GitHub pour les exemples d’applications.

Activer et planifier des tâches en arrière-plan

Pour activer et planifier des tâches en arrière-plan dans votre application iOS, suivez les étapes de l’article Apple Utilisation de tâches en arrière-plan pour mettre à jour votre application.

Pour une implémentation pratique, consultez le dépôt GitHub pour les exemples d’applications. L’exemple fourni utilise BGProcessingTask configuré pour s’exécuter une minute plus tard. Cela illustre comment extraire efficacement les données en arrière-plan.

Solution 2 : Notification à distance

Une notification à distance est un mécanisme permettant aux applications iOS d’exécuter des tâches en arrière-plan en réponse à des déclencheurs externes. Vous pouvez utiliser des notifications à distance pour les tâches telles que l’actualisation des inscriptions sans intervention de l’utilisateur.

Pour utiliser des notifications à distance pour exécuter une tâche en arrière-plan :

  1. Implémentez un mécanisme de déclenchement.

    Par exemple, vous pouvez utiliser une application de fonction Azure comme mécanisme de déclenchement. Cela vous permet d’exécuter du code en réponse à différents déclencheurs, y compris les requêtes HTTP. Vous pouvez ainsi lancer des notifications Push silencieuses. De votre côté, n’oubliez pas d’implémenter le registre d’appareils afin que l’application de fonction sache où envoyer les notifications.

  2. Configurez un hub de notification.

    Azure Notification Hubs service fournit une infrastructure de notification Push évolutive qui permet d’envoyer des notifications à n’importe quelle plateforme (iOS, Android, Windows, etc.) à partir de n’importe quel back-end (cloud ou local).

    Vous pouvez reprendre le même hub de notification que celui utilisé pour les notifications Push régulières. Pour en configurer un nouveau, consultez la Documentation Azure Notification Hubs.

  3. Configurez l’application de fonction Azure pour les notifications régulières.

    Ajustez l’application de fonction pour envoyer régulièrement des notifications à distance via le hub de notification. Ces notifications sont transférées à APNs et dirigées vers l’appareil spécifié. Pour plus d’instructions, consultez Liaison de sortie Notification Hubs pour Azure Functions.

  4. Gérez les notifications dans votre application.

    Dans votre application iOS, implémentez la méthode d’instance d’application pour déclencher une actualisation automatique de l’inscription à la réception d’une notification silencieuse.

Pour plus d’informations, consultez l’article Apple Configuration d’un serveur de notification à distance.