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.
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.
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
Terminez toutes les étapes requises dans le Guide de démarrage rapide : Ajouter une conversation à votre application.
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 Approvisionnement des hubs de notification.
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.
Connectez-vous au portail des développeurs Apple.
Accédez à Certificats, identificateurs et profils>Identificateurs>ID d’application, puis sélectionnez l’ID d’application associé à votre application.
Sur la page de votre ID d’application, sélectionnez Fonctionnalités>Notifications Push, puis sélectionnez Enregistrer.
Dans la boîte de dialogue Modifier les fonctionnalités de l’application qui s’affiche, sélectionnez Confirmer.
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.
La zone Créer un certificat s’affiche sur la page Certificats, identificateurs et profils.
Dans cette zone, vous chargez une demande de signature de certificat (CSR) :
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.
Faites glisser le fichier .cer vers la zone Choisir un fichier. Sélectionnez ensuite Continuer dans le coin supérieur droit.
Sélectionnez Télécharger.
Enregistrez le fichier localement au format .p12.
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.
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.
Configurer Xcode
Dans Xcode, accédez à Signing & Capabilities (Signature et fonctionnalités).
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).
Sous Modes d’arrière-plan, sélectionnez Notifications à distance.
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.
Accédez à Ajouter une extension d’application de service à votre projet dans la documentation Apple et suivez les étapes.
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 appelchatClient.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
Créez une conversation avec l’utilisateur A et l’utilisateur B.
Téléchargez le dépôt GitHub pour les exemples d’applications.
Placez les valeurs
<ACCESS_TOKEN>
et<ACS_RESOURCE_ENDPOINT>
de l’utilisateur A dans AppSettings.plist.Définissez Enable Bitcode sur Non pour deux cibles de pod : AzureCommunicationChat et Trouter.
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.
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 :
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.
Après avoir configuré votre fonction Azure :
Obtenez l’URL de l’émetteur de jeton à partir du Portail Azure. Votre application de conversation utilise cette URL pour demander de nouveaux jetons.
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 :
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.
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.
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.
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.