Tutoriel : Envoyer des notifications Push à des appareils Android à l’aide du SDK Firebase version 1.0.0-preview1

Ce tutoriel montre comment utiliser Azure Notification Hubs et la version mise à jour du SDK Firebase Cloud Messaging (FCM) (version 1.0.0-preview1) pour envoyer des notifications Push à une application Android. Dans ce tutoriel, vous allez créer une application Android vide qui reçoit des notifications Push à l’aide de Firebase Cloud Messaging (FCM).

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.

Vous pouvez télécharger le code complet pour ce tutoriel à partir de GitHub.

Ce didacticiel couvre les étapes suivantes :

  • Créer un projet Android Studio.
  • Créer un projet qui prend en charge Firebase Cloud Messaging.
  • Créer un hub de notification.
  • Connecter votre application au hub.
  • Tester l'application.

Prérequis

Pour suivre ce didacticiel, vous avez besoin d'un compte Azure actif. Si vous ne possédez pas de compte, vous pouvez créer un compte d’évaluation gratuit en quelques minutes. Pour plus d’informations, consultez Essai gratuit Azure.

Remarque

Les API Google/Firebase ne sont pas prises en charge dans les régions Azure Chine.

Vous devez également disposer des éléments suivants :

  • La dernière version de Android Studio est recommandée.
  • Le niveau d’API 19 constitue la prise en charge minimale.

Créer un projet Android Studio

La première étape consiste à créer un projet dans Android Studio :

  1. Lancez Android Studio.

  2. Sélectionnez File (Fichier), puis New (Nouveau), puis New Project (Nouveau projet).

  3. Dans la page Choose your project (Choisir votre projet), sélectionnez Empty Activity (Activité vide), puis sélectionnez Next (Suivant).

  4. Dans la page Configure your project (Configurer votre projet), effectuez les actions suivantes :

    1. Entrez un nom pour l’application.
    2. Spécifiez un emplacement où enregistrer les fichiers du projet.
    3. Sélectionnez Terminer.

    Configurer un projet

Créer un projet qui prend en charge FCM

  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).

    Ajouter Firebase

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

    1. Pour le Nom de package Android, copiez la valeur de applicationId dans le fichier build.gradle de votre application. Dans cet exemple, il s’agit de com.fabrikam.fcmtutorial1app.

      Spécifier le nom du package

    2. Sélectionnez Inscrire une application.

  4. Sélectionnez Télécharger google-services.json, enregistrez le fichier dans le dossier app de votre projet, puis sélectionnez Suivant.

    Télécharger le service Google

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

    Paramètres du projet

  6. Si vous n’avez pas encore téléchargé le fichier google-services.json dans le dossier application de votre projet Android Studio, vous pouvez le faire à partir de cette page.

  7. Basculez vers l’onglet Cloud Messaging (Messagerie cloud).

  8. Copiez et enregistrez la clé du serveur pour une utilisation ultérieure. Vous utilisez cette valeur pour configurer votre hub.

  9. Si vous ne voyez pas de clé de serveur sous l’onglet Firebase Cloud Messaging, procédez comme suit :

    1. Sélectionnez le menu à trois points de l’en-tête API Cloud Messaging (hérité) Désactivé.
    2. Suivez le lien proposé pour Gérer l’API dans Google Cloud Console.
    3. Dans la console Google Cloud, sélectionnez le bouton pour activer l’API Google Cloud Messaging.
    4. Patientez quelques minutes.
    5. Retournez à l’onglet Cloud Messaging de votre projet de console Firebase, puis actualisez la page.
    6. Vérifiez que l’en-tête de l’API Cloud Messaging a changé en API Cloud Messaging (hérité) Activé et affiche maintenant une clé de serveur.

    Capture d’écran du portail montrant Activer l’API de messagerie cloud (hérité).

Configurer un hub de notification

  1. Connectez-vous au portail Azure.

  2. Sélectionnez Tous les services dans le menu de gauche, puis sélectionnez Notification Hubs dans la section Mobile. Sélectionnez l’icône d’étoile en regard du nom du service pour l’ajouter à la section FAVORIS dans le menu de gauche. Après avoir ajouté Notification Hubs aux FAVORIS, sélectionnez-le dans le menu de gauche.

  3. Dans la page Notification Hubs, sélectionnez Ajouter dans la barre d’outils.

    Ajouter un hub

  4. Dans la page Notification Hubs, effectuez les actions suivantes :

    1. Entrez un nom dans Notification Hub.

    2. Entrez un nom dans Créer un espace de noms. Un espace de noms contient un ou plusieurs hubs.

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

    4. Sélectionnez un groupe de ressources existant dans Groupe de ressources ou créez-en un.

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

      Créer un hub

  5. Sélectionnez Notifications (icône de cloche), puis Accéder à la ressource. Vous pouvez également actualiser la liste dans la page Notification Hubs et sélectionner votre hub.

    Sélectionner un hub

  6. Sélectionnez Stratégies d’accès dans la liste. Notez que deux chaînes de connexion sont disponibles. Vous en aurez besoin pour gérer les notifications Push.

    Stratégies d’accès

    Important

    N’utilisez pas la stratégie DefaultFullSharedAccessSignature dans votre application. Cette stratégie doit être utilisée uniquement dans le back-end de l’application.

Configurer les paramètres de Firebase Cloud Messaging pour le hub

  1. Dans le volet gauche, sous Settings (Paramètres), sélectionnez Google (GCM/FCM) .

  2. Entrez la clé serveur pour le projet FCM que vous avez enregistré précédemment.

  3. Dans la barre d’outils, sélectionnez Enregistrer.

    Clé serveur

  4. Le portail Azure affiche un message indiquant que le hub a été correctement mis à jour. Le bouton Enregistrer est désactivé.

Votre hub de notification est désormais configuré pour fonctionner avec Firebase Cloud Messaging. Vous disposez également des chaînes de connexion nécessaires pour envoyer des notifications à un appareil et inscrire une application pour recevoir des notifications.

Connexion de votre application au hub de notification

Ajout de services Google Play au projet

  1. Dans Android Studio, sélectionnez Outils dans le menu, puis SDK Manager.

  2. Sélectionnez la version cible du Kit de développement logiciel (SDK) Android qui est utilisé dans votre projet. Puis sélectionnez Afficher les détails du package.

    Gestionnaire SDK

  3. Sélectionnez API Google, si elles ne sont pas déjà installées.

    API

  4. Basculez vers l’onglet SDK Tools. Si vous n’avez pas déjà installé un service Google Play, sélectionnez Google Play Services comme indiqué dans l’image suivante. Sélectionnez ensuite Appliquer pour procéder à l’installation. Notez le chemin du Kit de développement logiciel (SDK). Vous l’utiliserez à une étape suivante.

    Google Play Services

  5. Si la boîte de dialogue de confirmation de la modification s’affiche, sélectionnez OK. Le programme d’installation des composants installe les composants demandés. Sélectionnez Terminer une fois que les composants sont installés.

  6. Sélectionnez OK pour fermer la boîte de dialogue Paramètres pour les nouveaux projets.

Ajoutez des bibliothèques Azure Notification Hubs

  1. Dans la section dependencies du fichier Build.Gradle de l’application, ajoutez les lignes suivantes :

    implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:1.1.4'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.android.volley:volley:1.2.1'
    
  2. Ajoutez le dépôt suivant après la section dependencies :

    dependencyResolutionManagement {
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
     repositories {
         google()
         mavenCentral()
         maven { url 'https://example.io' }
     }
    }
    

Ajouter la prise en charge de Google Firebase

  1. Ajoutez le plug-in suivant à la fin du fichier s’il n’y figure pas encore.

    apply plugin: 'com.google.gms.google-services'
    
  2. Sélectionnez Synchroniser maintenant dans la barre d’outils.

Ajout de code

  1. Créez un objet NotificationHubListener, qui gère l’interception des messages provenant d’Azure Notification Hubs.

    public class CustomNotificationListener implements NotificationListener {
    
       @override
       public void onNotificationReceived(Context context, RemoteMessage message) {
    
          /* The following notification properties are available. */
          Notification notification = message.getNotification();
          String title = notification.getTitle();
          String body = notification.getBody();
          Map<String, String> data = message.getData();
    
          if (message != null) {
             Log.d(TAG, "Message Notification Title: " + title);
             Log.d(TAG, "Message Notification Body: " + message);
          }
    
          if (data != null) {
              for (Map.Entry<String, String> entry : data.entrySet()) {
                  Log.d(TAG, "key, " + entry.getKey() + " value " + entry.getValue());
              }
          }
       }
    }
    
  2. Dans la méthode OnCreate de la classe MainActivity, ajoutez le code suivant pour démarrer le processus d’initialisation de Notification Hubs quand l’activité est créée :

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       NotificationHub.setListener(new CustomNotificationListener());
       NotificationHub.start(this.getApplication(), "Hub Name", "Connection-String");
    
    }
    
  3. Dans la barre de menus de Android Studio, sélectionnez Build (Générer), puis Rebuild Project (Regénérer le projet) pour vérifier que votre code ne contient pas d’erreur. Si vous recevez une erreur concernant l’icône ic_launcher, supprimez l’instruction suivante du fichier AndroidManifest.xml :

    android:icon="@mipmap/ic_launcher"
    
  4. Vérifiez que vous disposez d’un appareil virtuel pour l’exécution de l’application. Si vous n’en avez pas, ajoutez-en un de la façon suivante :

    1. Gestionnaire d’appareils

    2. Appareils virtuels

    3. Exécutez l’application sur l’appareil sélectionné, puis vérifiez que son inscription s’effectue correctement auprès du hub.

      Enregistrement de l’appareil

      Notes

      L’inscription peut échouer lors du lancement initial, jusqu’à ce que la méthode onTokenRefresh() du service d’ID d’instance soit appelée. Une actualisation doit lancer une inscription réussie auprès du hub de notification.

Envoyer une notification de test

Vous pouvez envoyer des notifications Push à votre hub de notification à partir du portail Azure, comme suit :

  1. Sur le portail Azure, dans la page Hub de notification de votre hub, à la section Résolution des problèmes, sélectionnez Envoi de test.

  2. Dans Plateformes, sélectionnez Android.

  3. Sélectionnez Envoyer. Vous ne voyez pas encore de notification sur l’appareil Android parce que vous n’avez pas exécuté l’application mobile sur celui-ci. Après avoir exécuté l’application mobile, sélectionnez de nouveau le bouton Envoyer pour voir le message de notification.

  4. Consultez le résultat de l’opération dans la liste affichée en bas de la page du portail.

    Envoyer une notification de test

  5. Vous voyez le message de notification sur votre appareil.

Les notifications Push sont normalement envoyées dans un service back-end comme 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.

Exécuter l’application mobile sur un émulateur

Avant de tester les notifications Push dans un émulateur, vérifiez que votre image d’émulateur prend en charge le niveau d’API Google que vous avez choisi pour votre application. Si votre image ne prend pas en charge les API Google natives, vous pouvez obtenir une exception SERVICE_NOT_AVAILABLE.

Vérifiez aussi que vous avez ajouté votre compte Google à l’émulateur en cours d’exécution sous Paramètres>Comptes. Dans le cas contraire, vos tentatives d’inscription auprès de FCM risquent d’entraîner la levée d’une exception AUTHENTICATION_FAILED.

Étapes suivantes

Dans ce didacticiel, vous avez utilisé Firebase Cloud Messaging pour diffuser des notifications à tous les appareils Android inscrits auprès du service. Pour savoir comment envoyer des notifications Push à des appareils spécifiques, passez au didacticiel suivant :

La liste suivante indique certains autres tutoriels relatif à l’envoi de notifications :