Partage via


Tutoriel : Envoyer des notifications Push vers des applications Xamarin.Android à l’aide de Notification Hubs

Vue d’ensemble

Remarque

Pour plus d’informations sur les étapes de dépréciation et de migration de Firebase Cloud Messaging, consultez Migration de Google Firebase Cloud Messaging.

Ce didacticiel vous montre comment utiliser Azure Notification Hubs pour envoyer des notifications Push vers une application Xamarin.Android. Vous allez créer une application Xamarin.Android vide qui reçoit des notifications Push à l’aide de Firebase Cloud Messaging (FCM). Vous allez utiliser votre hub de notifications 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 tutoriel, vous effectuez les étapes suivantes :

  • Créer un projet Firebase et activer Firebase Cloud Messaging
  • Création d’un hub de notifications
  • Créer une application Xamarin.Android et la connecter au hub de notifications
  • Envoyer des notifications de test à partir du portail Azure

Prérequis

Créer un projet Firebase et activer Firebase Cloud Messaging

  1. Connectez-vous à la console Firebase. Créer un nouveau projet Firebase si vous n’en avez pas encore.

  2. Une fois le projet créé, sélectionnez Add Firebase to your Android app (Ajouter Firebase à votre application Android).

    Add Firebase to your Android app

  3. Dans la page Add Firebase to your Android app (Ajouter Firebase à votre application Android), procédez comme suit :

    1. Pour Android package name (Nom du package Android), entrez un nom pour votre package. Par exemple : tutorials.tutoria1.xamarinfcmapp.

      Specify the package name

    2. Sélectionnez Inscrire une application.

    3. Sélectionnez Télécharger le fichier google-services.json. Puis, enregistrez le fichier dans le dossier de votre projet et sélectionnez Suivant. Si vous n’avez pas encore créé le projet Visual Studio, vous pouvez effectuer cette étape après avoir créé le projet.

      Download google-services.json

    4. Cliquez sur Suivant.

    5. Sélectionnez Ignorer cette étape.

      Skip the last step

  4. Dans la console Firebase, sélectionnez la roue dentée associée à votre projet. Ensuite, sélectionnez Project Settings (Paramètres du projet).

    Select Project Settings

  5. Si vous n’avez pas téléchargé le fichier google-services.JSON, vous pouvez le faire sur cette page.

    Download google-services.json from the General tab

  6. Basculez vers l’onglet Messagerie cloud en haut. Copiez et enregistrez la clé du serveur pour une utilisation ultérieure. Cette valeur est utilisée pour configurer votre hub de notification.

    Copy server key

Création d’un hub de notifications

  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 les paramètres GCM/FCM pour le hub de notifications

  1. Sélectionnez Google (GCM/FCM)/ dans la section Paramètres du menu de gauche.

  2. Entrez la clé du serveur que vous avez notée à partir de la console Google Firebase.

  3. Sélectionnez Enregistrer dans la barre d’outils.

    Screenshot of Notification Hub in Azure Portal with Google G C M F C M option highlighted and outlined in red.

Votre concentrateur de notification est configuré pour FCM, et vous disposez des chaînes de connexion vous permettant d’inscrire votre application pour la réception de notifications et l’envoi de notifications Push.

Créer une application Xamarin.Android et la connecter au hub de notification

Création d’un projet Visual Studio et ajout des packages NuGet

Notes

Les étapes décrites dans ce tutoriel sont destinées à Visual Studio 2017.

  1. Dans Visual Studio, ouvrez le menu Fichier, sélectionnez Nouveau, puis Projet. Dans la fenêtre Nouveau projet, procédez comme suit :

    1. Développez Installé, Visual C# , puis cliquez sur Android.

    2. Sélectionnez Application Android (Xamarin) dans la liste.

    3. Entrez un nom pour le projet.

    4. Sélectionnez un emplacement pour le projet.

    5. Sélectionnez OK.

      New Project dialog

  2. Dans la boîte de dialogue application Android, sélectionnez Application vide, puis OK.

    Screenshot that highlights the Blank App template.

  3. Dans la fenêtre Explorateur de solutions, développez Propriétés, puis cliquez sur AndroidManifest.xml. Mettez à jour le nom du package pour correspondre au nom de package que vous avez saisi lors de l’ajout de Firebase Cloud Messaging à votre projet dans la Google Firebase Console.

    Package name in GCM

  4. Définissez la version Android cible du projet sur Android 10.0 en effectuant les étapes suivantes :

    1. Cliquez avec le bouton droit sur votre projet et sélectionnez Propriétés.
    2. Pour le champ Compiler à l’aide de la version d’Android : (framework cible) , sélectionnez Android 10.0.
    3. Sélectionnez Oui dans la boîte de message pour poursuivre la modification du framework cible.
  5. Ajoutez au projet les packages NuGet demandés en suivant ces étapes :

    1. Cliquez avec le bouton droit sur votre projet et sélectionnez Gérer les packages NuGet... .

    2. Basculez vers l’onglet Installé, sélectionnez Xamarin.Android.Support.Design, puis sélectionnez Mettre à jour dans le volet droit pour actualiser le package avec la dernière version.

    3. Basculez vers l’onglet Parcourir. Recherchez Xamarin.GooglePlayServices.Base. Sélectionnez Xamarin.GooglePlayServices.Base dans la liste des résultats. Sélectionnez Installer.

      Google Play Services NuGet

    4. Dans la fenêtre Gestionnaire de packages NuGet, recherchez Xamarin.Firebase.Messaging. Sélectionnez Xamarin.Firebase.Messaging dans la liste des résultats. Sélectionnez Installer.

    5. Recherchez maintenant Xamarin.Azure.NotificationHubs.Android. Sélectionnez Xamarin.Azure.NotificationHubs.Android dans la liste des résultats. Sélectionnez Installer.

Ajout du fichier JSON Google Services

  1. Copiez dans le dossier du projet le fichier google-services.json que vous avez téléchargé à partir de la console Google Firebase.

  2. Ajoutez google-services.json au projet.

  3. Sélectionnez google-services.json dans la fenêtre de l’Explorateur de solutions.

  4. Dans le volet Propriétés, définissez l’action de génération sur GoogleServicesJson. Si vous ne voyez pas GoogleServicesJson, fermez et redémarrez Visual Studio, rouvrez le projet et réessayez.

    GoogleServicesJson build action

Configuration de hubs de notification dans votre projet

Inscription auprès de Firebase Cloud Messaging

  1. Si vous effectuez une migration à partir de Google Cloud Messaging vers Firebase, le fichier AndroidManifest.xml de votre projet peut contenir une configuration GCM obsolète, ce qui peut entraîner une duplication des notifications. Modifiez le fichier, puis supprimez les lignes suivantes dans la section <application>, le cas échéant :

    <receiver
        android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
        android:exported="false" />
    <receiver
        android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="${applicationId}" />
        </intent-filter>
    </receiver>
    
  2. Ajoutez les instructions suivantes avant l’élément application.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    
  3. Collectez les informations suivantes pour votre application Android et votre concentrateur de notifications :

    • Listen connection string (Chaîne de connexion d’écoute) : dans le tableau de bord du Azure portal, sélectionnez Afficher les chaînes de connexion. Copiez la chaîne de connexion DefaultListenSharedAccessSignature pour cette valeur.
    • Hub name : nom de votre hub sur le Azure portal. Par exemple, mynotificationhub2.
  4. Dans la fenêtre de l’Explorateur de solutions, cliquez avec le bouton droit sur votre projet, sélectionnez Ajouter, puis Classe.

  5. Créez une classe Constants.cs pour votre projet Xamarin et définissez les valeurs constantes suivantes dans la classe. Remplacez les espaces réservés par vos valeurs.

    public static class Constants
    {
        public const string ListenConnectionString = "<Listen connection string>";
        public const string NotificationHubName = "<hub name>";
    }
    
  6. Ajoutez les instructions using suivantes à MainActivity.cs :

    using WindowsAzure.Messaging.NotificationHubs;
    
  7. Ajoutez les propriétés suivantes à la classe MainActivity :

    internal static readonly string CHANNEL_ID = "my_notification_channel";
    
    
  8. Dans MainActivity.cs, ajoutez le code suivant à OnCreate après base.OnCreate(savedInstanceState) :

    // Listen for push notifications
    NotificationHub.SetListener(new AzureListener());
    
    // Start the SDK
    NotificationHub.Start(this.Application, HubName, ConnectionString);
    
  9. Ajoutez à votre projet une classe nommée AzureListener.

  10. Ajoutez les instructions using suivantes à AzureListener.cs.

    using Android.Content;
    using WindowsAzure.Messaging.NotificationHubs;
    
  11. Ajoutez le code suivant au-dessus de votre déclaration de classe, puis faites en sorte que votre classe hérite de Java.Lang.Object et qu’elle implémente INotificationListener :

    public class AzureListener : Java.Lang.Object, INotificationListener
    
  12. Ajoutez le code suivant dans la classe AzureListener pour traiter les messages reçus.

        public void OnPushNotificationReceived(Context context, INotificationMessage message)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);
    
            var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID);
    
            notificationBuilder.SetContentTitle(message.Title)
                        .SetSmallIcon(Resource.Drawable.ic_launcher)
                        .SetContentText(message.Body)
                        .SetAutoCancel(true)
                        .SetShowWhen(false)
                        .SetContentIntent(pendingIntent);
    
            var notificationManager = NotificationManager.FromContext(this);
    
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    
  13. Générez votre projet.

  14. Exécuter votre application sur votre appareil ou un émulateur chargé

Envoyer une notification de test à partir du portail Azure

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 backend tel que Mobile Services ou ASP.NET par le biais d’une bibliothèque compatible. Si aucune bibliothèque n’est disponible pour votre back-end, vous pouvez également utiliser l’API REST directement pour envoyer des messages de notification.

Étapes suivantes

Dans ce didacticiel, vous avez envoyé des notifications de diffusion à tous vos appareils Android inscrits auprès du serveur principal. Pour découvrir comment envoyer des notifications Push à des appareils Android spécifiques, passez au didacticiel suivant :