Um mit FCM zu beginnen, entwickeln Sie den einfachsten Anwendungsfall: Senden einer Testbenachrichtigungsnachricht vom Notifications Composer an ein Entwicklungsgerät, wenn die App im Hintergrund auf dem Gerät ausgeführt wird. Auf dieser Seite werden alle Schritte aufgeführt, um dies zu erreichen, von der Einrichtung bis zur Überprüfung. Möglicherweise werden auch Schritte abgedeckt, die Sie bereits abgeschlossen haben, wenn Sie eine Android-Client-App für FCM eingerichtet haben.
Richten Sie das SDK ein
In diesem Abschnitt werden Aufgaben behandelt, die Sie möglicherweise erledigt haben, wenn Sie bereits andere Firebase-Funktionen für Ihre App aktiviert haben.
Bevor Sie beginnen
Installieren oder aktualisieren Sie Android Studio auf die neueste Version.
Stellen Sie sicher, dass Ihr Projekt diese Anforderungen erfüllt:
- Zielt auf API-Level 19 (KitKat) oder höher ab
- Verwendet Android 4.4 oder höher
- Verwendet Jetpack (AndroidX) , was die Erfüllung dieser Versionsanforderungen beinhaltet:
-
com.android.tools.build:gradle
v3.2.1 oder höher -
compileSdkVersion
28 oder höher
-
Richten Sie ein physisches Gerät ein oder verwenden Sie einen Emulator, um Ihre App auszuführen.
Beachten Sie, dass Firebase SDKs mit einer Abhängigkeit von Google Play-Diensten erfordern, dass auf dem Gerät oder Emulator Google Play-Dienste installiert sind.
Wenn Sie noch kein Android-Projekt haben und einfach nur ein Firebase-Produkt ausprobieren möchten, können Sie eines unserer Schnellstart-Beispiele herunterladen.
Erstellen Sie ein Firebase-Projekt
Bevor Sie Firebase zu Ihrer Android-App hinzufügen können, müssen Sie ein Firebase-Projekt erstellen, um eine Verbindung zu Ihrer Android-App herzustellen. Besuchen Sie „Firebase-Projekte verstehen“ , um mehr über Firebase-Projekte zu erfahren.
Registrieren Sie Ihre App bei Firebase
Um Firebase in Ihrer Android-App verwenden zu können, müssen Sie Ihre App bei Ihrem Firebase-Projekt registrieren. Das Registrieren Ihrer App wird oft als „Hinzufügen“ Ihrer App zu Ihrem Projekt bezeichnet.
Gehen Sie zur Firebase-Konsole .
Klicken Sie in der Mitte der Projektübersichtsseite auf das Android- Symbol (
) oder auf App hinzufügen , um den Einrichtungsworkflow zu starten.Geben Sie den Paketnamen Ihrer App in das Feld „Android-Paketname“ ein.
Ein Paketname identifiziert Ihre App eindeutig auf dem Gerät und im Google Play Store.
Ein Paketname wird oft als Anwendungs-ID bezeichnet.
Suchen Sie den Paketnamen Ihrer App in der Gradle-Datei Ihres Moduls (App-Ebene), normalerweise
app/build.gradle
(Beispielpaketname:com.yourcompany.yourproject
).Beachten Sie, dass beim Wert des Paketnamens die Groß-/Kleinschreibung beachtet wird und er für diese Firebase-Android-App nicht geändert werden kann, nachdem sie bei Ihrem Firebase-Projekt registriert wurde.
(Optional) Geben Sie weitere App-Informationen ein: App-Spitzname und Debug-Signaturzertifikat SHA-1 .
App-Spitzname : Eine interne, praktische Kennung, die nur für Sie in der Firebase-Konsole sichtbar ist
Debug-Signaturzertifikat SHA-1 : Ein SHA-1-Hash ist für die Firebase-Authentifizierung (bei Verwendung von Google Sign-In oder Telefonnummer-Anmeldung ) und Firebase Dynamic Links erforderlich.
Klicken Sie auf App registrieren .
Fügen Sie eine Firebase-Konfigurationsdatei hinzu
Laden Sie die Firebase Android-Konfigurationsdatei (
) herunter und fügen Sie sie Ihrer App hinzu:google-services.json Klicken Sie auf „Google-services.json herunterladen“, um Ihre Firebase-Android-Konfigurationsdatei zu erhalten.
Verschieben Sie Ihre Konfigurationsdatei in das Stammverzeichnis des Moduls (App-Ebene) Ihrer App.
Die Firebase-Konfigurationsdatei enthält eindeutige, aber nicht geheime Kennungen für Ihr Projekt. Weitere Informationen zu dieser Konfigurationsdatei finden Sie unter „Grundlegendes zu Firebase-Projekten“ .
Sie können Ihre Firebase-Konfigurationsdatei jederzeit erneut herunterladen.
Stellen Sie sicher, dass an den Namen der Konfigurationsdatei keine zusätzlichen Zeichen wie
(2)
angehängt werden.
Um die Werte in Ihrer
-Konfigurationsdatei für Firebase-SDKs zugänglich zu machen, benötigen Sie das Gradle-Plugin für Google-Dienste (google-services.json google-services
).Fügen Sie in Ihrer Gradle-Datei auf Stammebene (Projektebene) (
<project>/build.gradle.kts
oder<project>/build.gradle
) das Google Services-Plugin als Abhängigkeit hinzu:Kotlin
plugins { id("com.android.application") version "7.2.0" apply false // ... // Add the dependency for the Google services Gradle plugin id("com.google.gms.google-services") version "4.3.15" apply false }
Groovy
plugins { id 'com.android.application' version '7.2.0' apply false // ... // Add the dependency for the Google services Gradle plugin id 'com.google.gms.google-services' version '4.3.15' apply false }
Fügen Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise
<project>/<app-module>/build.gradle.kts
oder<project>/<app-module>/build.gradle
) das Google Services-Plugin hinzu:Kotlin
plugins { id("com.android.application") // Add the Google services Gradle plugin id("com.google.gms.google-services") // ... }
Groovy
plugins { id 'com.android.application' // Add the Google services Gradle plugin id 'com.google.gms.google-services' // ... }
Fügen Sie Ihrer App Firebase-SDKs hinzu
Fügen Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise
<project>/<app-module>/build.gradle.kts
oder<project>/<app-module>/build.gradle
) die Abhängigkeit für die Firebase Cloud hinzu Messaging-Android-Bibliothek. Wir empfehlen die Verwendung der Firebase Android BoM zur Steuerung der Bibliotheksversionierung.Für ein optimales Erlebnis mit Firebase Cloud Messaging empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und das Firebase SDK für Google Analytics zu Ihrer App hinzuzufügen.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-messaging-ktx") implementation("com.google.firebase:firebase-analytics-ktx") }
Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.
(Alternative) Fügen Sie Firebase-Bibliotheksabhängigkeiten hinzu , ohne die Stückliste zu verwenden
Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.
Beachten Sie: Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten der Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.
dependencies { // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-messaging-ktx:23.2.1") implementation("com.google.firebase:firebase-analytics-ktx:21.3.0") }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-messaging") implementation("com.google.firebase:firebase-analytics") }
Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.
(Alternative) Fügen Sie Firebase-Bibliotheksabhängigkeiten hinzu , ohne die Stückliste zu verwenden
Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.
Beachten Sie: Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten der Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.
dependencies { // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-messaging:23.2.1") implementation("com.google.firebase:firebase-analytics:21.3.0") }
Synchronisieren Sie Ihr Android-Projekt mit Gradle-Dateien.
Gradle-Builds, die das Android Gradle-Plugin (AGP) v4.2 oder früher verwenden, müssen die Java 8-Unterstützung aktivieren. Andernfalls kommt es bei diesen Android-Projekten zu einem Buildfehler, wenn ein Firebase SDK hinzugefügt wird.
Um diesen Build-Fehler zu beheben, können Sie eine von zwei Optionen wählen:
- Fügen Sie die aufgelisteten
compileOptions
aus der Fehlermeldung zu Ihrerbuild.gradle.kts
oderbuild.gradle
-Datei auf App-Ebene hinzu. - Erhöhen Sie den
minSdk
für Ihr Android-Projekt auf 26 oder höher.
Erfahren Sie mehr über diesen Build-Fehler in dieser FAQ .
- Fügen Sie die aufgelisteten
Greifen Sie auf das Registrierungstoken zu
Um eine Nachricht an ein bestimmtes Gerät zu senden, müssen Sie das Registrierungstoken dieses Geräts kennen. Da Sie das Token in ein Feld in der Benachrichtigungskonsole eingeben müssen, um dieses Tutorial abzuschließen, stellen Sie sicher, dass Sie das Token kopieren oder nach dem Abrufen sicher aufbewahren.
Beim ersten Start Ihrer App generiert das FCM SDK ein Registrierungstoken für die Client-App-Instanz. Wenn Sie auf einzelne Geräte abzielen oder Gerätegruppen erstellen möchten, müssen Sie auf dieses Token zugreifen, indem Sie FirebaseMessagingService
erweitern und onNewToken
überschreiben.
In diesem Abschnitt wird beschrieben, wie Sie das Token abrufen und Änderungen am Token überwachen. Da das Token nach dem ersten Start rotiert werden könnte, wird dringend empfohlen, das neueste aktualisierte Registrierungstoken abzurufen.
Der Registrierungstoken kann sich ändern, wenn:
- Die App wird auf einem neuen Gerät wiederhergestellt
- Der Benutzer deinstalliert/neuinstalliert die App
- Der Benutzer löscht App-Daten.
Rufen Sie das aktuelle Registrierungstoken ab
Wenn Sie das aktuelle Token abrufen müssen, rufen Sie FirebaseMessaging.getInstance().getToken()
auf:
Kotlin+KTX
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w(TAG, "Fetching FCM registration token failed", task.exception) return@OnCompleteListener } // Get new FCM registration token val token = task.result // Log and toast val msg = getString(R.string.msg_token_fmt, token) Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })
Java
FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (!task.isSuccessful()) { Log.w(TAG, "Fetching FCM registration token failed", task.getException()); return; } // Get new FCM registration token String token = task.getResult(); // 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(); } });
Überwachen Sie die Token-Generierung
Der onNewToken
Rückruf wird immer dann ausgelöst, wenn ein neues Token generiert wird.
Kotlin+KTX
/** * Called if the FCM registration token is updated. This may occur if the security of * the previous token had been compromised. Note that this is called when the * FCM registration 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 // FCM registration token to your app server. sendRegistrationToServer(token) }
Java
/** * There are two scenarios when onNewToken is called: * 1) When a new token is generated on initial app startup * 2) Whenever an existing token is changed * Under #2, there are three scenarios when the existing token is changed: * A) App is restored to a new device * B) User uninstalls/reinstalls the app * C) User clears app data */ @Override public void onNewToken(@NonNull 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 // FCM registration token to your app server. sendRegistrationToServer(token); }
Nachdem Sie das Token erhalten haben, können Sie es an Ihren App-Server senden und mit Ihrer bevorzugten Methode speichern.
Senden Sie eine Testbenachrichtigung
Installieren Sie die App und führen Sie sie auf dem Zielgerät aus. Auf Apple-Geräten müssen Sie die Anfrage um Erlaubnis zum Empfang von Remote-Benachrichtigungen akzeptieren.
Stellen Sie sicher, dass die App auf dem Gerät im Hintergrund läuft.
Öffnen Sie in der Firebase-Konsole die Seite „Messaging“ .
Wenn dies Ihre erste Nachricht ist, wählen Sie Ihre erste Kampagne erstellen aus.
- Wählen Sie Firebase-Benachrichtigungsnachrichten und dann Erstellen aus.
Andernfalls wählen Sie auf der Registerkarte „Kampagnen“ die Option „Neue Kampagne“ und dann „Benachrichtigungen“ aus.
Geben Sie den Nachrichtentext ein. Alle anderen Felder sind optional.
Wählen Sie im rechten Bereich Testnachricht senden aus .
Geben Sie im Feld mit der Bezeichnung „FCM-Registrierungstoken hinzufügen“ das Registrierungstoken ein, das Sie in einem vorherigen Abschnitt dieses Handbuchs erhalten haben.
Wählen Sie Testen aus.
Nachdem Sie Test ausgewählt haben, sollte das Ziel-Clientgerät (mit der App im Hintergrund) die Benachrichtigung erhalten.
Einblicke in die Nachrichtenzustellung an Ihre App erhalten Sie im FCM-Berichts-Dashboard , das die Anzahl der auf Apple- und Android-Geräten gesendeten und geöffneten Nachrichten sowie Daten zu „Impressionen“ (von Benutzern gesehene Benachrichtigungen) für Android-Apps aufzeichnet.
Nächste Schritte
Senden Sie Nachrichten an Apps im Vordergrund
Sobald Sie erfolgreich Benachrichtigungsnachrichten gesendet haben, während sich Ihre App im Hintergrund befindet, lesen Sie „Empfangen von Nachrichten in einer Android-App“, um mit dem Senden an Apps im Vordergrund zu beginnen.
Gehen Sie über Benachrichtigungsnachrichten hinaus
Informationen darüber, wie Sie über Benachrichtigungsnachrichten hinausgehen und Ihrer App weitere, erweiterte Verhaltensweisen hinzufügen können, finden Sie unter: