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
- Abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte Azure gratuit avant de commencer.
- Visual Studio avec Xamarin pour Windows ou Visual Studio pour Mac sur OS X.
- Un compte Google actif
Créer un projet Firebase et activer Firebase Cloud Messaging
Connectez-vous à la console Firebase. Créer un nouveau projet Firebase si vous n’en avez pas encore.
Une fois le projet créé, sélectionnez Add Firebase to your Android app (Ajouter Firebase à votre application Android).
Dans la page Add Firebase to your Android app (Ajouter Firebase à votre application Android), procédez comme suit :
Pour Android package name (Nom du package Android), entrez un nom pour votre package. Par exemple :
tutorials.tutoria1.xamarinfcmapp
.Sélectionnez Inscrire une application.
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.
Cliquez sur Suivant.
Sélectionnez Ignorer cette étape.
Dans la console Firebase, sélectionnez la roue dentée associée à votre projet. Ensuite, sélectionnez Project Settings (Paramètres du projet).
Si vous n’avez pas téléchargé le fichier google-services.JSON, vous pouvez le faire sur cette page.
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.
Création d’un hub de notifications
Connectez-vous au portail Azure.
Sélectionnez Tous les services dans le menu de gauche.
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.
Dans la page Notification Hubs, sélectionnez Créer dans la barre d’outils.
Sous l’onglet Informations de base de la page Notification Hub, effectuez les étapes suivantes :
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.
Entrez un nom unique pour le nouvel espace de noms dans Détails de l’espace de noms.
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.
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.
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.
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.
Sélectionnez Create (Créer).
Une fois le déploiement terminé, sélectionnez Accéder à la ressource.
Configurer les paramètres GCM/FCM pour le hub de notifications
Sélectionnez Google (GCM/FCM)/ dans la section Paramètres du menu de gauche.
Entrez la clé du serveur que vous avez notée à partir de la console Google Firebase.
Sélectionnez Enregistrer dans la barre d’outils.
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.
Dans Visual Studio, ouvrez le menu Fichier, sélectionnez Nouveau, puis Projet. Dans la fenêtre Nouveau projet, procédez comme suit :
Développez Installé, Visual C# , puis cliquez sur Android.
Sélectionnez Application Android (Xamarin) dans la liste.
Entrez un nom pour le projet.
Sélectionnez un emplacement pour le projet.
Sélectionnez OK.
Dans la boîte de dialogue application Android, sélectionnez Application vide, puis OK.
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.
Définissez la version Android cible du projet sur Android 10.0 en effectuant les étapes suivantes :
- Cliquez avec le bouton droit sur votre projet et sélectionnez Propriétés.
- Pour le champ Compiler à l’aide de la version d’Android : (framework cible) , sélectionnez Android 10.0.
- Sélectionnez Oui dans la boîte de message pour poursuivre la modification du framework cible.
Ajoutez au projet les packages NuGet demandés en suivant ces étapes :
Cliquez avec le bouton droit sur votre projet et sélectionnez Gérer les packages NuGet... .
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.
Basculez vers l’onglet Parcourir. Recherchez Xamarin.GooglePlayServices.Base. Sélectionnez Xamarin.GooglePlayServices.Base dans la liste des résultats. Sélectionnez Installer.
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.
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
Copiez dans le dossier du projet le fichier
google-services.json
que vous avez téléchargé à partir de la console Google Firebase.Ajoutez
google-services.json
au projet.Sélectionnez
google-services.json
dans la fenêtre de l’Explorateur de solutions.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.
Configuration de hubs de notification dans votre projet
Inscription auprès de Firebase Cloud Messaging
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>
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"/>
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.
- 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
Dans la fenêtre de l’Explorateur de solutions, cliquez avec le bouton droit sur votre projet, sélectionnez Ajouter, puis Classe.
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>"; }
Ajoutez les instructions using suivantes à
MainActivity.cs
:using WindowsAzure.Messaging.NotificationHubs;
Ajoutez les propriétés suivantes à la classe MainActivity :
internal static readonly string CHANNEL_ID = "my_notification_channel";
Dans
MainActivity.cs
, ajoutez le code suivant àOnCreate
aprèsbase.OnCreate(savedInstanceState)
:// Listen for push notifications NotificationHub.SetListener(new AzureListener()); // Start the SDK NotificationHub.Start(this.Application, HubName, ConnectionString);
Ajoutez à votre projet une classe nommée
AzureListener
.Ajoutez les instructions using suivantes à
AzureListener.cs
.using Android.Content; using WindowsAzure.Messaging.NotificationHubs;
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émenteINotificationListener
:public class AzureListener : Java.Lang.Object, INotificationListener
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()); }
Générez votre projet.
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.
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 :