Partager via


Activer les notifications Push dans votre application de conversation

Ce tutoriel vous guidera pour activer la notification Push dans votre application IOS à l’aide du Kit de développement logiciel (SDK) Azure Communication Chat.
Les notifications push alertent les clients des messages entrants dans un fil de discussion dans les situations où l'application mobile ne s'exécute pas au premier plan. Azure Communication Services prend en charge deux versions de notifications Push.

  • Basic Version : l’utilisateur pourra voir un badge de 1 sur l’icône de l’application, recevoir un son de notification et voir une bannière d’alerte contextuelle.

  • Advanced Version : à l’exception des fonctionnalités prises en charge dans la version de base, Contoso pourra personnaliser la section d’aperçu du message de titre dans la bannière d’alerte.

    Capture d'écran de la version de base de la notification push.

    [Version de base]

    Capture d'écran de la version avancée de la notification push.

    [Version avancée]

Télécharger le code

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

Prérequis

  1. Terminer toutes les étapes requises dans le guide de démarrage rapide conversation

  2. Configuration d’ANH
    Créez un hub de notification Azure dans le même abonnement que votre ressource Communication Services et liez le hub de notification à votre ressource Communication Services. Consultez Provisionnement des hubs de notification.

  3. Configuration du certificat APNS
    Ici, nous vous recommandons de créer un certificat APNS .p12 et de le définir dans le hub de notification.

    If you are not a Microsoft internal client, veuillez exécuter les étapes 1 à 9.
    If you are a Microsoft internal client, envoyez un ticket ici et fournissez l’ID de bundle de votre application pour obtenir un certificat .p12. Une fois que vous avez obtenu un certificat valide émis, effectuez l’étape 9.

  • Étape 1 : Connectez-vous au portail des développeurs Apple. Accédez à Certificates, IDs & Profiles > Identifiers > App IDs et cliquez sur l’ID d’application associé à votre application.

    Capture d'écran de l'étape 1 de la configuration du certificat APNS.
  • Étape 2 : Sur l’écran de votre ID d’application, cochez Capabilities > Push Notifications. Cliquez sur Enregistrer et répondre à « Confirmer » dans la boîte de dialogue Modifier les fonctionnalités de l’application qui s’affiche.

    Capture d'écran de l'étape 2-1 de la configuration du certificat APNS.Capture d'écran de l'étape 2-2 de la configuration du certificat APNS.
  • Étape 3 : Dans la même page, cliquez sur Capabilities > Push Notifications > Configure. Cliquez sur l'un des boutons suivants :

    • Certificat SSL de développement > Créer un certificat (pour tester les notifications Push lors du développement d’une application iOS)
    • Certificat SSL de production > Créer un certificat (pour l’envoi de notifications Push lors de la production)
    Capture d'écran de l'étape 3 de la configuration du certificat APNS.
  • Étape 4 : Vous accédez ensuite à la page ci-dessous. Ici, vous allez charger une demande de signature de certificat (CSR). Suivez l’étape suivante pour créer une demande de signature de certificat.

    Capture d'écran de l'étape 4 de la configuration du certificat APNS.
  • Étape 5 : Dans un nouvel onglet de navigateur, suivez cette page d’aide pour créer une demande de signature de certificat et enregistrer le fichier en tant que « Nom de l’application.cer ».

    Capture d'écran de l'étape 5-1 de la configuration du certificat APNS.Capture d'écran de l'étape 5-2 de la configuration du certificat APNS.
  • Étape 6 : Faites glisser le fichier .cer vers la zone « Choisir un fichier ». Appuyez ensuite sur « Continuer » dans le coin supérieur droit.

    Capture d'écran de l'étape 6 de la configuration du certificat APNS.
  • Étape 7 : Cliquez sur « Télécharger » et enregistrez le fichier sur le disque local.

    Capture d'écran de l'étape 7 de la configuration du certificat APNS.
  • Étape 8 : Ouvrez le fichier .cer que vous avez téléchargé ; il ouvre l’accès au trousseau. Sélectionnez votre certificat, cliquez avec le bouton droit et exportez votre certificat au format .p12.

    Capture d'écran de l'étape 8 de la configuration du certificat APNS.
  • Étape 9 : Accédez à votre hub de notification, cliquez sur « Apple (APNS) » sous Paramètres, puis sélectionnez « Certificat » sous Mode d’authentification. Sélectionnez également le mode d’application en fonction de vos besoins. Chargez ensuite le fichier .p12 que vous venez de créer.

    Capture d'écran de l'étape 9 de la configuration du certificat APNS.
  1. Configuration XCode
  • Dans XCode, accédez à Signing & Capabilities. Ajoutez une fonctionnalité en sélectionnant « + Capability » (Fonctionnalité), puis « Push Notifications » (Notifications Push).

  • Ajoutez une autre fonctionnalité en sélectionnant « + Capability », puis « Background Modes » (Modes d’arrière-plan). Sélectionnez également « Notifications à distance » sous Modes d’arrière-plan.

Capture d'écran des modes Activer les notifications push et Arrière-plan dans Xcode.
  • Définissez « Exiger uniquement l’API App-Extension-Safe » sur « Non » pour la cible de pod - AzureCore

Implémentation

1 - Version de base

Si vous souhaitez implémenter une version de base de la notification Push, vous devez vous inscrire aux notifications à distance auprès d’APNS (Apple Push Notification Service). Reportez-vous à l’exemple de code pour voir l’implémentation associée dans AppDelegate.swift.

2 - Version avancée

Si vous souhaitez implémenter une version avancée de notification Push, vous devez inclure les éléments suivants dans votre application. La raison est que nous chiffrerons le contenu client (par exemple, le contenu du message de conversation, le nom complet de l’expéditeur, etc.) dans la charge utile de notification Push et qu’il nécessite une solution de contournement de votre côté.

  • Élément 1 : Stockage de données pour les clés de chiffrement

Tout d’abord, vous devez créer un stockage de données persistant dans un appareil IOS. Ce stockage de données doit être en mesure de partager des données entre l’application principale et les extensions d’application (reportez-vous à l’élément 2 pour plus d’informations sur l’extension App – Notification Service Extension).

Dans notre exemple de code, nous allons choisir « Groupe d’applications » comme stockage de données. Voici les étapes suggérées pour créer et utiliser « Groupe d’applications » :

Suivez les étapes décrites dans Ajouter une fonctionnalité pour ajouter la fonctionnalité Groupes d’applications aux cibles de votre application , à la fois l’application principale et l’extension Notification Service (reportez-vous à l’élément 2 sur la création d’une extension de service de notification).

Suivez également les étapes décrites dans ce document officiel Apple pour configurer App Group. Vérifiez que votre application principale et votre extension d’application ont le même nom de conteneur.

  • Élément 2 : Extension de service de notification

Ensuite, vous devez implémenter une « extension de service de notification » groupée avec l’application principale. Cela est utilisé pour déchiffrer la charge utile de notification Push lors de sa réception.

Accédez à ce document officiel Apple. Suivez l’étape « Ajouter une extension d’application de service à votre projet » et « Implémenter les méthodes de gestionnaire de votre extension ».

Notez que dans l’étape « Implémenter les méthodes de gestionnaire de votre extension », Apple fournit l’exemple de code pour déchiffrer les données et nous allons suivre la structure globale. Toutefois, étant donné que nous utilisons le Kit de développement logiciel (SDK) de conversation pour le déchiffrement, nous devons remplacer la partie à partir de “// Try to decode the encrypted message data.” par notre logique personnalisée. Reportez-vous à l’exemple de code pour voir l’implémentation associée dans NotificationService.swift.

  • Élément 3 : Implémentation du protocole PushNotificationKeyStorage

Troisièmement, PushNotificationKeyStorage est nécessaire pour la version avancée. En tant qu’utilisateur du SDK, vous pouvez utiliser la classe par défaut AppGroupPushNotificationKeyStorage fournie par le SDK Chat. Si vous n’utilisez pas App Group comme stockage de clés ou si vous souhaitez personnaliser les méthodes de stockage des clés, créez votre propre classe conforme au protocole PushNotificationKeyStorage.

Pour PushNotificationKeyStorage, deux méthodes sont définies : onPersistKey(encryptionKey:expiryTime) et onRetrieveKeys() -> [String].

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) Chat définit 45 minutes comme heure d’expiration de la clé de chiffrement. Si vous souhaitez que la notification Push soit appliquée pendant plus de 45 minutes, vous devez planifier l’appel de chatClient.startPushNotifications(deviceToken:) sur une base comparativement fréquente (par exemple, toutes les 15 minutes) afin qu’une nouvelle clé de chiffrement puisse être inscrite avant l’expiration de l’ancienne clé.

La deuxième méthode est utilisée pour récupérer les clés valides précédemment stockées. Vous avez la possibilité de fournir la personnalisation en fonction du stockage des données (élément 1) que vous choisissez.

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

Test

  1. Créez un thread de conversation avec l’utilisateur A et l’utilisateur B.

  2. Téléchargez l’exemple de dépôt d’application et suivez les étapes ci-dessus dans la section conditions préalables et implémentation.

  3. Placez les <ACESS_TOEKN> et <ACS_RESOURCE_ENDPOINT> de l’utilisateur 1 dans AppSettings.plist.

  4. Définissez « Enable Bitcode » sur « Non » pour deux cibles Pods : AzureCommunicationChat et Trouter.

  5. Connectez l’appareil IOS à votre mac, exécutez le programme et cliquez sur « Autoriser » lorsque vous êtes invité à autoriser la notification Push sur l’appareil.

  6. En tant qu’utilisateur B, envoyez un message de conversation. Vous (Utilisateur A) devez être en mesure de recevoir une notification Push dans votre appareil IOS.

Renouvellement automatique de l’inscription

Pour que Microsoft fournisse un service de conversation sécurisé, l’inscription pour les 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.

Vous trouverez ici deux solutions conformes aux directives officielles d’Apple. Notez que différents facteurs peuvent influencer l’efficacité de l’une ou l’autre des solutions, comme l’état de la batterie de l’appareil, les conditions réseau et les restrictions spécifiques à iOS susceptibles d’affecter la capacité de l’application à exécuter des tâches en arrière-plan, qui sont précisées dans Apple WWDC Video et le wiki officiel d’Apple. Nous recommandons d’implémenter les deux solutions ensemble pour améliorer leur efficacité.

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. En implémentant 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 des notifications Push. Voici comment tirer parti des tâches en arrière-plan pour renouveler l’inscription :

Étape 1. Configurer l’actualisation automatique du jeton 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 (24 heures), après laquelle ils expirent, ce qui impose un renouvellement. 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é. Pour configurer votre application de conversation de sorte à prendre en charge l’actualisation automatique des jetons, procédez comme suit :

1.1 Établir un niveau de service pour l’émission de jetons

Pour que votre application de conversation propose toujours 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 à tirer profit d’Azure Functions à cet effet.

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

1.2 Implémenter l’actualisation des jetons dans votre application de conversation

Une fois votre instance Azure Functions Azure configurée :
Sur le portail Azure, récupérez l’URL d’émetteur de jeton que votre application de conversation utilise pour demander de nouveaux jetons.
Créez et intégrez l’actualisateur de jetons dans votre application de conversation. Cela implémente un composant actualisateur de jetons qui demande de nouveaux jetons et permet d’initialiser le client Chat pour un renouvellement automatique et transparent des jetons.

À des fins de référence et d’implémentation simplifiées, vous trouverez un exemple de code pour l’actualisateur de jetons et son intégration au client Chat dans notre Exemple de référentiel d’applications.

Étape 2. Suivez les instructions Apple pour activer et planifier des tâches en arrière-plan

Pour activer et planifier des tâches en arrière-plan dans votre application, respectez les instructions d’Apple, comme indiqué dans sa documentation sur Utiliser les tâches en arrière-plan pour mettre à jour votre application. Ce guide décrit l’ensemble de la procédure permettant d’intégrer des fonctionnalités de tâche en arrière-plan dans votre application iOS.

Pour une implémentation pratique, consultez notre Exemple de référentiel d’applications. Dans l’exemple fourni, nous utilisons la tâche BGProcessingTask configurée pour s’exécuter une minute plus tard. Cela illustre comment extraire efficacement les données en arrière-plan.

Solution 2. Notification distante

La notification distante 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. Elle peut s’utiliser avec des tâches comme l’actualisation des inscriptions sans intervention de l’utilisateur. Voici comment utiliser la notification distante pour exécuter une tâche en arrière-plan :

1. Implémenter un mécanisme de déclenchement
Par exemple, vous pouvez utiliser une application Azure Functions 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. Configurer une connexion Azure Notification Hubs
Azure Notification Hubs fournit une infrastructure de notification Push évolutive et conviviale qui permet d’envoyer des notifications à n’importe quelle plateforme (iOS, Android, Windows, etc.) à partir de n’importe quel back-end (cloud ou local). Il est indispensable à la gestion des notifications et à leur envoi aux appareils. 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. Configurer l’application Azure Functions pour les notifications régulières
Configurez l’application Azure Functions pour envoyer régulièrement des notifications distantes via Azure Notification Hubs. Ces notifications sont transférées vers Apple Push Notification Service (APNS) et dirigées vers l’appareil spécifié. Pour plus d’instructions, consultez Functions-bindings-notification-hubs.

4. Tester les notifications push 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.