Google est engagé à faire progresser l'équité raciale pour les communautés noires. Regarde comment.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Mettre en place une application client Firebase-Cloud Messaging sur Android

Pour écrire votre Firebase cloud messagerie Android application client, utilisez le FirebaseMessaging API et Android 1.4 ou supérieur studio avec Gradle. Les instructions contenues dans cette page supposent que vous avez terminé les étapes pour ajouter Firebase à votre projet Android .

les clients ont besoin de la FCM appareils fonctionnant sous Android 4.1 ou plus qui ont également l'application Google Play de magasin installé, ou un émulateur fonctionnant sous Android 4.1 avec API Google. Notez que vous n'êtes pas limité à déployer vos applications Android via Google Play Store.

Mettre en place le SDK

Cette section couvre les tâches que vous avez peut-être terminé si vous avez déjà activé autres Firebase fonctions pour votre application.

Avant que tu commences

  • Installer ou mettre à jour Android Studio est à sa dernière version.

  • Assurez-vous que votre projet répond à ces exigences:

    • niveau de l'API Cibles 16 (Jelly Bean) ou version ultérieure
    • Utilisations Gradle 4.1 ou version ultérieure
    • Utilise Jetpack (AndroidX) , qui comprend la réalisation de ces exigences de version:
      • com.android.tools.build:gradle v3.2.1 ou plus tard
      • compileSdkVersion 28 ou plus tard
  • Mettre en place un dispositif physique ou utiliser un émulateur pour exécuter votre application.
    Émulateurs doivent utiliser une image de l' émulateur avec Google Play.

  • Connectez - vous à Firebase en utilisant votre compte Google.

Si vous ne possédez pas déjà un projet Android et que vous voulez juste essayer un produit Firebase, vous pouvez télécharger un de nos échantillons de démarrage rapide .

Créer un projet Firebase

Avant de pouvoir ajouter Firebase à votre application Android, vous devez créer un projet Firebase pour vous connecter à votre application Android. Visitez Comprendre Firebase projets pour en savoir plus sur les projets Firebase.

Enregistrez votre application avec Firebase

Une fois que vous avez un projet Firebase, vous pouvez ajouter votre application Android à elle.

Visitez Comprendre Firebase projets pour en savoir plus sur les meilleures pratiques et considérations pour ajouter des applications à un projet Firebase, y compris la façon de traiter les variantes multiples de construction.

  1. Allez à la console Firebase .

  2. Au centre de la page d'aperçu du projet, cliquez sur l'icône Android ( ) pour lancer le flux de travail de configuration.

    Si vous avez déjà ajouté une application à votre projet Firebase, cliquez sur Ajouter application pour afficher les options de plate - forme.

  3. Entrez le nom du package de votre application dans le champ Nom du package Android.

  4. (Facultatif) Entrez les autres informations de l' application: certificat pseudonyme App et signature de débogage SHA-1.

  5. Cliquez sur l' application de vous inscrire.

Ajouter un fichier de configuration Firebase

  1. Ajoutez le fichier de configuration Firebase Android à votre application:

    1. Cliquez sur Télécharger google-services.json pour obtenir votre fichier de configuration Firebase Android ( google-services.json ).

    2. répertoire de votre application Déplacez votre fichier de configuration dans le module (app-niveau).

  2. Pour activer les produits Firebase dans votre application, ajoutez les services de google-plugin pour vos fichiers Gradle.

    1. Dans votre niveau racine (niveau du projet) de fichier Gradle ( build.gradle ), ajouter des règles pour inclure le plug - in Services Google Gradle. Vérifiez que vous avez le dépôt Maven de Google, aussi bien.

      buildscript {
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
        }
      
        dependencies {
          // ...
      
          // Add the following line:
          classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. Dans votre module fichier (app-niveau) Gradle (généralement app/build.gradle ), appliquer le plugin Google Services de Gradle:

      apply plugin: 'com.android.application'
      // Add the following line:
      apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
      android {
        // ...
      }
      

Ajouter Firebase à votre application SDKs

  1. Pour votre module (app-niveau) de fichier Gradle (généralement app/build.gradle ), ajoutez les dépendances pour les produits que vous Firebase souhaitez utiliser dans votre application.

    Vous pouvez ajouter des produits Firebase pris en charge à votre application Android.

    Pour une expérience optimale avec Firebase - Cloud Messaging, nous vous recommandons de permettre à Google Analytics dans votre projet. En outre, dans le cadre de la mise en place Analytics, vous devez ajouter le SDK Firebase pour Analytics à votre application.

    Analytics activé

    dependencies {
      // ...
    // Add the Firebase SDK for Google Analytics implementation 'com.google.firebase:firebase-analytics:17.4.4'
    // Add the SDK for Firebase Cloud Messaging implementation 'com.google.firebase:firebase-messaging:20.2.4'
    // Getting a "Could not find" error? Make sure that you've added // Google's Maven repository to your root-level build.gradle file }

    Analytics pas activé

    dependencies {
      // ...
    // Add the SDK for Firebase Cloud Messaging implementation 'com.google.firebase:firebase-messaging:20.2.4'
    // Getting a "Could not find" error? Make sure that you've added // Google's Maven repository to your root-level build.gradle file }
  2. Synchronisez votre application pour faire en sorte que toutes les dépendances ont les versions nécessaires.

  3. Si vous avez ajouté Analytics, exécutez votre application pour envoyer à la vérification Firebase que vous avez intégré avec succès Firebase. Dans le cas contraire, vous pouvez sauter l'étape de vérification.

    Vos journaux appareil affiche la vérification Firebase que l'initialisation est terminée. Si vous avez exécuté votre application sur un émulateur qui a accès au réseau, la console Firebase vous avertit que votre connexion application est terminée.

Modifier votre manifeste d'application

Ajouter ce qui suit manifeste de votre application:

  • Un service qui se prolonge FirebaseMessagingService . Cela est nécessaire si vous voulez faire une gestion des messages au-delà de la réception des notifications sur les applications en arrière-plan. Pour recevoir des notifications dans les applications au premier plan, pour recevoir la charge utile de données, pour envoyer des messages en amont, et ainsi de suite, vous devez étendre ce service.
  • <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
  • (Facultatif) Dans le composant d'application, des éléments de métadonnées pour définir une icône de notification par défaut et la couleur. Android utilise ces valeurs chaque fois que les messages entrants ne font pas explicitement ensemble icône ou couleur.
  • <!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
         See README(https://goo.gl/l4GJaQ) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message. See README(https://goo.gl/6BKBk7) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
  • (Facultatif) A partir de Android 8.0 (niveau API 26) et plus, les voies de notification sont pris en charge et a recommandé. FCM fournit un canal de notification par défaut avec les paramètres de base. Si vous préférez créer et utiliser votre propre canal par défaut, ensemble default_notification_channel_id à l'ID de votre objet de canal de notification comme indiqué; FCM utilisera cette valeur chaque fois que les messages entrants ne fixent pas explicitement un canal de notification. Pour en savoir plus, consultez la section Gérer les canaux de notification .
  • <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

Accédez au jeton d'enregistrement de l'appareil

Au démarrage initial de votre application, le SDK FCM génère un jeton d'enregistrement pour l'instance de l'application client. Si vous souhaitez cibler un ou plusieurs périphériques créer des groupes de périphériques, vous aurez besoin d'accéder à ce jeton en élargissant FirebaseMessagingService et en remplaçant onNewToken .

Cette section décrit comment récupérer le jeton et comment surveiller les changements au jeton. Parce que le jeton peut être mis en rotation après le démarrage initial, il est fortement recommandé de récupérer la dernière jeton d'enregistrement mis à jour.

Le jeton d'inscription peut changer lorsque:

  • L'application supprime ID d'instance
  • L'application est restaurée sur un nouveau dispositif
  • Les désinstallations utilisateur / réinstaller l'application
  • L'utilisateur efface les données de l'application.

Récupérer le jeton d'enregistrement en cours

Lorsque vous avez besoin de récupérer le jeton en cours, appelez FirebaseInstanceId.getInstance().getInstanceId() :

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

                // Log and toast
                String msg = getString(R.string.msg_token_fmt, token);
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Kotlin + KTX

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

            // Log and toast
            val msg = getString(R.string.msg_token_fmt, token)
            Log.d(TAG, msg)
            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
        })

Surveiller génération de jetons

Les onNewToken feux de rappel à chaque fois est généré un nouveau jeton.

Java

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
@Override
public void onNewToken(String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(token);
}

Kotlin + KTX

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(token)
}

Une fois que vous avez obtenu le jeton, vous pouvez l'envoyer à votre serveur d'applications et le stocker en utilisant votre méthode préférée. Voir la référence API ID instance pour le détail complet sur l'API.

Vérifiez les services Google Play

Applications basées sur le SDK Services Play doivent toujours vérifier l'appareil pour les services de Google Play compatible APK avant d'accéder à Google Play propose des services. Il est recommandé de le faire en deux endroits: dans l'activité principale de onCreate() la méthode, et dans son onResume() méthode. Le contrôle en onCreate() veille à ce que l'application ne peut pas être utilisé sans contrôle avec succès. Le contrôle en onResume() assure que si l'utilisateur revient à l'application en cours d' exécution par d'autres moyens, tels que par l'intermédiaire du bouton de retour, la vérification est encore effectuée.

Si l'appareil ne dispose pas d' une version compatible de services Google Play, votre application peut appeler GoogleApiAvailability.makeGooglePlayServicesAvailable() pour permettre aux utilisateurs de télécharger des services Google Play depuis le Play Store.

Empêcher l'initialisation automatique

Firebase génère un ID d'instance, qui utilise FCM pour générer un jeton d'enregistrement et à des fins analytiques pour la collecte de données. Lorsqu'un ID d'instance est généré, la bibliothèque téléchargera les données d'identification et de configuration à Firebase. Si vous préférez éviter ID d' instance autoproduction, désactiver l' initialisation automatique pour la FCM et Analytics (vous devez désactiver les deux) en ajoutant ces valeurs de métadonnées à votre AndroidManifest.xml :

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Pour réactiver la FCM, faire un appel d'exécution:

Java

FirebaseMessaging.getInstance().setAutoInitEnabled(true);

Kotlin + KTX

FirebaseMessaging.getInstance().isAutoInitEnabled = true

Cette valeur persiste à chaque redémarrage de l'application une fois définie.

Prochaines étapes

Après l'application cliente est mis en place, vous êtes prêt à commencer à envoyer des messages en aval avec le Notifications compositeur . Cette fonctionnalité est mise en évidence dans l' échantillon de QuickStart , que vous pouvez télécharger, exécuter et examen.

Pour ajouter d'autres, un comportement plus avancé à votre application, vous pouvez déclarer un filtre intention et mettre en œuvre une activité pour répondre aux messages entrants. Pour plus de détails, consultez les guides pour envoyer des messages à partir d'un serveur d'application:

Gardez à l' esprit que, pour tirer parti de ces fonctionnalités, vous aurez besoin d' une implémentation du serveur et le serveur procotols (HTTP ou XMPP), ou une mise en œuvre du SDK d' administration .