Tutoriel : Envoyer des notifications Push vers des applications Xamarin.iOS à l’aide d’Azure Notification Hubs

Vue d’ensemble

Ce didacticiel vous montre comment utiliser Azure Notification Hubs pour envoyer des notifications Push vers une application iOS. Vous créez une application Xamarin.iOS vide qui reçoit des notifications Push à l’aide du service de notification Push Apple (APN, Apple Push Notification).

Une fois l’opération terminée, vous pouvez utiliser votre hub de notification pour diffuser des notifications Push sur tous les appareils exécutant votre application. Le code finalisé est disponible dans l’exemple Application NotificationHubs.

Dans ce didacticiel, vous créez/mettez à jour le code pour effectuer les tâches suivantes :

  • Générer le fichier de demande de signature de certificat
  • Inscription de votre application pour les notifications Push
  • Création d’un profil d’approvisionnement pour l’application
  • Configuration de votre hub de notification pour les notifications Push iOS
  • Envoi de notifications Push de test

Prérequis

  • Abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte Azure gratuit avant de commencer.

  • Version la plus récente de Xcode

  • Un appareil compatible iOS 10 (ou version ultérieure)

  • programme pour développeurs Apple

  • Visual Studio pour Mac

    Notes

    En raison des exigences de configuration requise pour les notifications Push iOS, vous devez déployer et tester l’exemple d’application sur un appareil iOS physique (iPhone ou iPad) au lieu d’un simulateur.

Vous devez suivre ce didacticiel avant de pouvoir suivre tous les autres didacticiels consacrés à Notification Hubs pour applications Xamarin. iOS.

Générer le fichier de demande de signature de certificat

Le service de notification Push Apple (APNs) utilise des certificats pour authentifier vos notifications Push. Suivez ces instructions pour créer le certificat push nécessaire pour envoyer et recevoir des notifications. Pour plus d’informations sur ces concepts, consultez la documentation officielle d’Apple Push Notification Service.

Générez le fichier de demande de signature de certificat (CSR, Certificate Signing Request) utilisé par Apple pour générer un certificat Push signé.

  1. Sur votre Mac, exécutez l’outil Trousseaux d’accès. Vous pouvez l’ouvrir à partir du dossier Utilitaires ou du dossier Autre sur Launchpad.

  2. Sélectionnez Trousseaux d’accès, développez Assistant de certification, puis cliquez sur Demander un certificat à une autorité de certification.

    Use Keychain Access to request a new certificate

    Remarque

    Par défaut, Trousseaux d’accès sélectionne le premier élément de la liste. Cela peut poser problème si vous êtes dans la catégorie Certificats et que Apple Worldwide Developer Relations Certification Authority (Autorité de certification des relations des développeurs dans le monde entier) ne figure pas comme premier élément dans la liste. Veillez à disposer d’un élément non-clé, ou que la clé Apple Worldwide Developer Relations Certification Authority est sélectionnée, avant de générer la demande de signature de certificat (CSR).

  3. Sélectionnez votre adresse e-mail d’utilisateur, entrez votre nom commun, veillez à spécifier Enregistré sur le disque, puis sélectionnez Continuer. Laissez le champ Adresse de messagerie d’autorité de certification vide, car il n’est pas requis.

    Required certificate information

  4. Entrez un nom pour le fichier CSR dans Enregistrer en tant que, sélectionnez l’emplacement dans , puis sélectionnez Enregistrer.

    Choose a file name for the certificate

    Cette action enregistre le fichier CSR à l’emplacement sélectionné. L’emplacement par défaut est Bureau. Notez l’emplacement choisi pour ce fichier.

Ensuite, inscrivez votre application auprès d’Apple, activez les notifications Push, puis téléchargez le fichier de demande de signature de certificat exporté pour créer un certificat Push.

Inscription de votre application pour les notifications Push

Pour envoyer des notifications Push vers une application iOS, inscrivez votre application auprès d’Apple ainsi que pour les notifications Push.

  1. Si vous n’avez pas encore inscrit votre application, accédez au portail de provisionnement iOS dans le Centre pour développeurs Apple. Connectez-vous au portail avec votre ID Apple, puis sélectionnez Identifiants. Sélectionnez ensuite + pour inscrire une nouvelle application.

    iOS Provisioning Portal App IDs page

  2. Dans l’écran Register a New Identifier (Inscrire un nouvel identifiant), sélectionnez la case d’option App IDs (ID d’application). Sélectionnez Continuer.

    iOS Provisioning Portal register new ID page

  3. Mettez à jour les trois valeurs suivantes pour votre nouvelle application, puis sélectionnez Continue :

    • Description : tapez un nom descriptif pour votre application.

    • ID de l’offre groupée : entrez un identifiant de bundle au format Organization Identifier.Product Name comme indiqué dans le Guide de distribution d’application. Les valeurs Organization Identifier et Product Name doivent correspondre à l’identificateur d’organisation et au nom de produit que vous utiliserez pour créer le projet Xcode. Dans la capture d’écran ci-dessous, la valeur NotificationHubs est utilisée comme identificateur d’organisation, tandis que la valeur GetStarted correspond au nom du produit. Vérifiez que la valeur Bundle Identifier correspond à celle de votre projet Xcode, afin que Xcode utilise le profil de publication correct.

      iOS Provisioning Portal register app ID page

    • Notifications Push : cochez l’option Notifications Push dans la section Capabilities (Fonctionnalités).

      Form to register a new App ID

      L’ID de votre application est généré et vous êtes invité à confirmer les informations. Sélectionnez Continue (Continuer), puis Register (Inscrire) pour confirmer le nouvel ID d’application.

      Confirm new App ID

      Après avoir sélectionné Register (Inscrire), vous voyez le nouvel ID d’application affiché comme élément de ligne dans la page Certificates, Identifiers & Profiles (Certificats, identifiants et profils).

  4. Dans la page Certificates, Identifiers & Profiles, sous Identifiers (Identifiants), recherchez l’élément de ligne ID d’application que vous venez de créer, puis sélectionnez sa ligne pour afficher l’écran Edit your App ID Configuration (Modifier votre configuration d’ID d’application).

Création d’un certificat pour les hubs de notification

Un certificat est nécessaire pour permettre au hub de notification de fonctionner avec APNS. Cette opération peut être effectuée de deux manières :

  1. Créez un certificat .p12 qui peut être chargé directement sur le hub de notification.
  2. Créez un certificat .p8 qui peut être utilisé pour l’authentification basée sur un jeton (l’approche la plus récente).

L’approche la plus récente présente un certain nombre d’avantages (par rapport à l’utilisation de certificats), comme indiqué dans Authentification basée sur un jeton (HTTP/2) pour APNS. Toutefois, des étapes ont été fournies pour les deux approches.

OPTION 1 : Création d’un certificat Push .p12 qui peut être chargé directement sur le hub de notification

  1. Faites défiler la page jusqu’à l’option cochée Push Notifications (Notifications Push), puis sélectionnez Configure (Configurer) pour créer le certificat.

    Edit App ID page

  2. La fenêtre Apple Push Notification service SSL Certificates (Certificats SSL du service Apple Push Notification) s’affiche. Sélectionnez le bouton Create Certificate (Créer un certificat) sous la section Development SSL Certificate (Certificat de développement SSL).

    Create certificate for App ID button

    L’écran Create a new Certificate (Créer un certificat) s’affiche.

    Notes

    Ce tutoriel utilise un certificat de développement dont votre application se sert pour générer un jeton d’appareil unique. Le même processus est utilisé lors de l’inscription d’un certificat de production. Assurez-vous simplement que vous utilisez le même type de certificat quand vous envoyez des notifications.

  3. Sélectionnez Choose File (Choisir un fichier), accédez à l’emplacement où vous avez enregistré le fichier de demande de signature de certificat créé lors de la première tâche, puis double-cliquez sur le nom du certificat à charger. Sélectionnez Continuer.

  4. Une fois que le portail a créé un certificat, sélectionnez le bouton Télécharger. Enregistrez le certificat et notez son emplacement pour le retrouver facilement.

    Generated certificate download page

    Le certificat est téléchargé et enregistré sur votre ordinateur dans le dossier Téléchargements.

    Locate certificate file in the Downloads folder

    Remarque

    Par défaut, le certificat de développement téléchargé se nomme aps_development.cer.

  5. Double-cliquez sur le certificat Push téléchargé aps_development.cer. Cette opération installe le nouveau certificat dans le Trousseau, comme indiqué dans l’image suivante :

    Keychain access certificates list showing new certificate

    Remarque

    Bien que le nom de votre certificat puisse être différent, il portera toutefois le préfixe Apple Development iOS Push Notification Services.

  6. Dans Trousseau d’accès, cliquez avec le bouton droit sur le certificat push que vous avez créé dans la catégorie Certificats . Sélectionnez Exporter, nommez le fichier, sélectionnez le format .p12, puis sélectionnez Enregistrer.

    Export certificate as p12 format

    Vous pouvez choisir de protéger le certificat par un mot de passe, mais cela est facultatif. Cliquez sur OK si vous souhaitez ignorer l’étape de création du mot de passe. Notez le nom du fichier et l’emplacement du certificat .p12 exporté. Ces informations sont nécessaires pour activer l’authentification avec APNs.

    Notes

    Le nom et l’emplacement de votre fichier .p12 peuvent être différents de ceux montrés dans ce tutoriel.

OPTION 2 : Création d’un certificat .p8 qui peut être utilisé pour l’authentification basée sur un jeton

  1. Prenez note des détails suivants :

    • Préfixe d’ID d’application (il s’agit d’un ID d’équipe)
    • ID de bundle
  2. De retour dans Certificats, identificateurs et profils, cliquez sur Clés.

    Remarque

    Si vous disposez déjà d’une clé configurée pour APNS, vous pouvez réutiliser le certificat .p8 que vous avez téléchargé juste après l’avoir créée. Dans ce cas, vous pouvez ignorer les étapes 3 à 5.

  3. Cliquez sur le bouton + (ou sur le bouton Créer une clé) pour créer une clé.

  4. Fournissez une valeur appropriée pour Nom de clé, activez l’option Apple Push Notification Service (APNs) , puis cliquez sur Continuer, puis sur Inscrire dans l’écran suivant.

  5. Cliquez sur Télécharger, puis déplacez le fichier .p8 (préfixé avec AuthKey_ ) vers un répertoire local sécurisé, puis cliquez sur Terminé.

    Notes

    Veillez à conserver votre fichier .p8 dans un emplacement sécurisé (et à enregistrer une sauvegarde). Une fois votre clé téléchargée, elle ne peut pas être retéléchargée, car la copie du serveur est supprimée.

  6. Dans Clés, cliquez sur la clé que vous venez de créer (ou une clé existante si vous avez choisi de l’utiliser à la place).

  7. Notez la valeur de l’ID de clé.

  8. Ouvrez votre certificat .p8 dans l’application appropriée de votre choix, par exemple Visual Studio Code, puis notez la valeur de la clé. Il s’agit de la valeur comprise entre -----BEGIN PRIVATE KEY----- et -----END PRIVATE KEY----- .

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    Notes

    Il s’agit de la valeur de jeton qui sera utilisée pour configurer le hub de notification.

À la fin de ces étapes, vous devez disposer des informations suivantes, dont vous vous servirez dans Configurer votre hub de notification avec des informations APNs :

  • ID de l’équipe (voir l’étape 1)
  • ID de bundle (voir l’étape 1)
  • ID de clé (voir l’étape 7)
  • Valeur de jeton, c’est-à-dire, la valeur de clé .p8 (voir l’étape 8)

Création d’un profil d’approvisionnement pour l’application

  1. Revenez au portail de provisionnement iOS, sélectionnez Certificates, Identifiers & Profiles (Certificats, identifiants et profils), sélectionnez Profiles (Profils) dans le menu de gauche, puis sélectionnez + pour créer un profil. L’écran Register a New Provisioning Profile (Inscrire un nouveau profil de provisionnement) s’affiche.

  2. Sélectionnez iOS App Development (Développement d’application iOS) sous Development (Développement) comme type de profil de provisionnement, puis sélectionnez Continue (Continuer).

    Provisioning profile list

  3. Ensuite, dans la liste déroulante App ID, sélectionnez l’ID d’application que vous avez créé, puis sélectionnez Continue.

    Select the App ID

  4. Dans la fenêtre Select certificates (Sélectionner des certificats), sélectionnez le certificat de développement utilisé pour la signature de code, puis sélectionnez Continuer. Ce certificat n’est pas le certificat Push que vous avez créé. S’il n’en existe pas, vous devez le créer. Si un certificat existe, passez à l’étape suivante. Pour créer un certificat de développement s’il n’en existe pas déjà :

    1. Si vous voyez No Certificates are available (Aucun certificat n’est disponible), sélectionnez Create Certificate (Créer un certificat).
    2. Dans la section Software (Logiciels), sélectionnez Apple Development (Développement Apple). Sélectionnez Continuer.
    3. Dans l’écran Create a new Certificate (Créer un certificat), sélectionnez Choose File (Choisir un fichier).
    4. Accédez au fichier de demande de signature du certificat que vous avez créé précédemment, sélectionnez-le, puis sélectionnez Ouvrir.
    5. Sélectionnez Continuer.
    6. Téléchargez le certificat de développement et notez son emplacement pour le retrouver facilement.
  5. Revenez à la page Certificates, Identifiers & Profiles (Certificats, identifiants et profils), sélectionnez Profiles dans le menu de gauche, puis sélectionnez + pour créer un profil. L’écran Register a New Provisioning Profile (Inscrire un nouveau profil de provisionnement) s’affiche.

  6. Dans la fenêtre Select certificates (Sélectionner des certificats), sélectionnez le certificat de développement que vous venez de créer. Sélectionnez Continuer.

  7. Sélectionnez les appareils à utiliser pour le test, puis sélectionnez Continue.

  8. Pour finir, choisissez un nom pour le profil dans Provisioning Profile Name (Nom du profil de provisionnement), puis sélectionnez Generate (Générer).

    Choose a provisioning profile name

  9. Une fois le profil de provisionnement créé, sélectionnez Télécharger. Notez son emplacement pour le retrouver facilement.

  10. Accédez à l’emplacement du profil de provisionnement, puis double-cliquez sur le profil pour l’installer sur votre machine de développement Xcode.

Création d’un hub de notifications

Dans cette section, vous créez un hub de notification et configurez l’authentification avec APNs à l’aide du certificat Push .p12 ou de l’authentification basée sur un jeton. Si vous souhaitez utiliser un hub de notification que vous avez déjà créé, vous pouvez passer directement à l’étape 5.

  1. Connectez-vous au portail Azure.

  2. Sélectionnez Tous les services dans le menu de gauche. A screenshot showing select All Services for an existing namespace.

  3. Saisissez Notification Hubs dans la zone de texte Services de filtre. Sélectionnez l’icône d’étoile en regard du nom du service pour l’ajouter à la section FAVORIS dans le menu de gauche. Sélectionnez Notification Hubs.

    A screenshot showing how to filter for notification hubs.

  4. Dans la page Notification Hubs, sélectionnez Créer dans la barre d’outils.

    A screenshot showing how to create a new notification hub.

  5. Sous l’onglet Informations de base de la page Notification Hub, effectuez les étapes suivantes :

    1. Dans Abonnement, sélectionnez le nom de l’abonnement Azure que vous souhaitez utiliser, puis sélectionnez un groupe de ressources existant ou créez-en un.

    2. Entrez un nom unique pour le nouvel espace de noms dans Détails de l’espace de noms.

    3. Un espace de noms contient un ou plusieurs hubs de notification, donc tapez un nom pour le hub dans Détails du hub de notification.

    4. Sélectionnez une valeur dans la zone de liste déroulante Emplacement. Cette valeur spécifie l’emplacement où vous voulez créer le hub.

      Screenshot showing notification hub details.

    5. Examinez l’option Zones de disponibilité. Si vous avez choisi une région contenant des zones de disponibilité, la case à cocher est sélectionnée par défaut. Les zones de disponibilité étant une fonctionnalité payante, des frais supplémentaires sont ajoutés à votre niveau.

    6. Choisissez une option de Récupération d’urgence : Aucune, Région de récupération jumelée ou Région de récupération flexible. Si vous choisissez Région de récupération jumelée, la région de basculement s’affiche. Si vous sélectionnez Région de récupération flexible, utilisez la liste déroulante pour choisir parmi une liste de régions de récupération.

      Screenshot showing availability zone details.

    7. Sélectionnez Create (Créer).

  6. Une fois le déploiement terminé sélectionnez Accéder à la ressource.

Configurer votre hub de notification avec des informations APNs

Sous Services de notification, sélectionnez Apple (APNS) , puis suivez les étapes appropriées en fonction de l’approche que vous avez choisie dans la section Création d’un certificat pour les hubs de notification.

Notes

Si vous créez votre application avec l’App Store ou un profil de distribution ad hoc, utilisez la production pour le mode d’application. Ceci permettra à votre appareil d’envoyer des notifications Push aux utilisateurs qui ont acheté votre application sur le Store.

OPTION 1 : Utilisation d’un certificat Push .p12

  1. Sélectionnez Certificate.

  2. Sélectionnez l’icône du fichier.

  3. Sélectionnez le fichier .p12 exporté précédemment, puis sélectionnez Ouvrir.

  4. S’il y a lieu, entrez le mot de passe correct.

  5. Sélectionnez le mode Bac à sable.

    Configure APNs certification in Azure portal

  6. Sélectionnez Enregistrer.

OPTION 2 : Utilisation de l’authentification basée sur un jeton

  1. Sélectionnez Jeton.

  2. Entrez les valeurs suivantes déjà en votre possession :

    • ID de clé
    • ID de bundle
    • ID de l’équipe
    • Jeton
  3. Choisissez Bac à sable.

  4. Sélectionnez Enregistrer.

Vous avez maintenant configuré votre hub de notification avec APNs. Vous disposez aussi des chaînes de connexion pour inscrire votre application et envoyer des notifications Push.

Connexion de votre application au hub de notification

Création d'un projet

  1. Dans Visual Studio, créez un projet iOS, sélectionnez le modèle Application avec affichage unique, puis cliquez sur Suivant.

    Visual Studio - Select Application Type

  2. Entrez le nom de l’application et l’identifiant de votre organisation, sélectionnez ensuite Suivant, puis Créer.

  3. Dans la vue des solutions, double-cliquez sur Info.plist. Ensuite, sous Identité, assurez-vous que l’identificateur de l’offre groupée correspond à celui utilisé lors de la création du profil d’approvisionnement. Sous Signature, vérifiez que votre compte de développeur est sélectionné sous Team, que l’option Automatically manage signing (Gérer automatiquement la signature) est activée et que votre certificat de signature et votre profil d’approvisionnement sont automatiquement sélectionnés.

    Visual Studio- iOS App Config

  4. Dans la vue des solutions, double-cliquez sur Entitlements.plist et vérifiez que l’option Activer les notifications Push est cochée.

    Visual Studio- iOS Entitlements Config

  5. Ajoutez le package de messagerie Azure. Dans la vue des solutions, cliquez sur le projet avec le bouton droit de la souris, puis sélectionnez Ajouter>Ajouter des paquets NuGet. Recherchez le package Xamarin.Azure.NotificationHubs.iOS et ajoutez-le à votre projet.

  6. Ajoutez un nouveau fichier à votre classe et nommez-le Constants.cs. Ensuite, ajoutez les variables suivantes et remplacez les espaces réservés des littéraux de chaînes par l’élément hubname et l’élément DefaultListenSharedAccessSignature notés précédemment.

    // Azure app-specific connection string and hub path
    public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>";
    public const string NotificationHubName = "<Azure Notification Hub Name>";
    
  7. Dans AppDelegate.cs, ajoutez les instructions using suivantes :

    using WindowsAzure.Messaging.NotificationHubs;
    using UserNotifications
    
  8. Créez une implémentation de MSNotificationHubDelegate dans AppDelegate.cs :

    public class AzureNotificationHubListener : MSNotificationHubDelegate
    {
        public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
        {
    
        }
    }
    
  9. Dans AppDelegate.cs, mettez à jour FinishedLaunching() afin qu’il corresponde au code suivant :

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        // Set the Message listener
        MSNotificationHub.SetDelegate(new AzureNotificationHubListener());
    
        // Start the SDK
        MSNotificationHub.Start(ListenConnectionString, NotificationHubName);
    
        return true;
    }
    
  10. Dans AppDelegate.cs, implémentez la méthode DidReceivePushNotification pour la classe AzureNotificationHubListener :

    public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
    {
        // This sample assumes { aps: { alert: { title: "Hello", body: "World" } } }
        var alertTitle = message.Title ?? "Notification";
        var alertBody = message.Body;
    
        var myAlert = UIAlertController.Create(alertTitle, alertBody, UIAlertControllerStyle.Alert);
        myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
        UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null);
    }
    
  11. Exécutez l'application sur votre appareil.

Envoi de notifications Push de test

Vous pouvez tester la réception de notifications dans votre application avec l’option Test Send du Azure portal. Cette option envoie une notification Push de test à votre appareil.

Azure portal - Test Send

Les notifications Push sont normalement envoyées dans un service principal tel que Mobile Apps ou ASP.NET à l’aide d’une bibliothèque compatible. Si aucune bibliothèque n’est disponible pour votre backend, vous pouvez également utiliser l’API REST directement pour envoyer des messages de notification.

Étapes suivantes

Dans ce didacticiel, vous envoyez des notifications de diffusion à tous vos appareils iOS inscrits avec le serveur principal. Pour savoir comment envoyer des notifications à des appareils iOS spécifiques, passez au didacticiel suivant :