Verwenden Sie zum Schreiben Ihrer Firebase Cloud Messaging-Android-Client-App die FirebaseMessaging
API und Android Studio 1.4 oder höher mit Gradle. In den Anweisungen auf dieser Seite wird davon ausgegangen, dass Sie die Schritte zum Hinzufügen von Firebase zu Ihrem Android-Projekt ausgeführt haben .
FCM-Clients benötigen Geräte mit Android 4.1 oder höher, auf denen auch die Google Play Store-App installiert ist, oder einen Emulator mit Android 4.1 und Google APIs. Beachten Sie, dass Sie nicht nur Ihre Android-Apps über den Google Play Store bereitstellen müssen.
Richten Sie das SDK ein
In diesem Abschnitt werden Aufgaben behandelt, die Sie möglicherweise ausgeführt 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 die folgenden Anforderungen erfüllt:
- Zielt auf API-Level 16 (Jelly Bean) oder höher ab
- Verwendet Gradle 4.1 oder höher
- Verwendet Jetpack (AndroidX) , einschließlich der Erfüllung dieser Versionsanforderungen:
-
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 für Firebase-SDKs mit einer Abhängigkeit von Google Play-Diensten auf dem Gerät oder Emulator Google Play-Dienste installiert sein müssen.Melden Sie sich mit Ihrem Google-Konto bei Firebase an .
Wenn Sie noch kein Android-Projekt haben und nur ein Firebase-Produkt ausprobieren möchten, können Sie eines unserer Schnellstartbeispiele herunterladen.
Erstellen Sie ein Firebase-Projekt
Bevor Sie Ihrer Android-App Firebase 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 häufig als "Hinzufügen" Ihrer App zu Ihrem Projekt bezeichnet.
Gehen Sie zur Firebase-Konsole .
Klicken Sie in der Mitte der
das Android- Symbol ( ) oder App , um den Setup-Workflow zu starten.Geben Sie den Paketnamen Ihrer App in das Feld Android-Paketname ein.
Ein Paketname identifiziert Ihre App auf dem Gerät und im Google Play Store eindeutig.
Ein Paketname wird häufig 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 der Wert des Paketnamens zwischen Groß- und Kleinschreibung unterscheidet und 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-Kurzname und Debug-Signaturzertifikat SHA-1 .
App-Spitzname : Eine interne Convenience-ID, die nur in der Firebase-Konsole für Sie sichtbar ist
Debug-Signaturzertifikat SHA-1 : Für die Firebase-Authentifizierung (bei Verwendung der Google -Anmeldung oder der Anmeldung zur Telefonnummer ) und für Firebase Dynamic Links ist ein SHA-1-Hash erforderlich.
Klicken Sie auf App registrieren .
Fügen Sie eine Firebase-Konfigurationsdatei hinzu
Fügen Sie Ihrer App die Firebase Android-Konfigurationsdatei hinzu:
Klicken Sie auf google-services.json herunterladen , um Ihre Firebase-Android-Konfigurationsdatei (
) abzurufen.google-services.json Verschieben Sie Ihre Konfigurationsdatei in das Modulverzeichnis (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 der Name der Konfigurationsdatei nicht mit zusätzlichen Zeichen wie
(2)
.
Fügen Sie Ihren Gradle-Dateien das Google Services-Plugin hinzu , um Firebase-Produkte in Ihrer App zu aktivieren.
build.gradle
in Ihrer Gradle-Datei aufbuild.gradle
(Projektebene) (build.gradle
) Regeln hinzu, um das Gradle-Plugin von Google Services einzuschließen. Überprüfen Sie, ob Sie auch über das Maven-Repository von Google verfügen.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.5' // Google Services plugin } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
app/build.gradle
Gradle-Datei Ihres Moduls (App-Ebene) (normalerweiseapp/build.gradle
) das Google Services Gradle-Plugin an:apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
Fügen Sie Ihrer App Firebase-SDKs hinzu
Deklarieren Sie mithilfe der Firebase Android BoM die Abhängigkeit für die Firebase Cloud Messaging Android-Bibliothek in der Gradle-Datei Ihres Moduls (App-Ebene) (normalerweise
app/build.gradle
).Für eine optimale Erfahrung mit Firebase Cloud Messaging empfehlen wir , Google Analytics in Ihrem Projekt zu aktivieren . Außerdem müssen Sie im Rahmen der Einrichtung von Analytics Ihrer App das Firebase SDK für Google Analytics hinzufügen.
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:27.0.0') // Declare 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' }
Bei Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.
(Alternative) Deklarieren Sie Firebase-Bibliotheksabhängigkeiten, 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.
Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die Stückliste zum Verwalten von Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.
dependencies { // Declare 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:21.1.0' implementation 'com.google.firebase:firebase-analytics:18.0.3' }
Kotlin + KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:27.0.0') // Declare 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' }
Bei Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.
(Alternative) Deklarieren Sie Firebase-Bibliotheksabhängigkeiten, 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.
Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten von Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.
dependencies { // Declare 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:21.0.1' implementation 'com.google.firebase:firebase-analytics-ktx:18.0.3' }
Synchronisieren Sie Ihre App, um sicherzustellen, dass alle Abhängigkeiten die erforderlichen Versionen haben.
Bearbeiten Sie Ihr App-Manifest
Fügen Sie dem Manifest Ihrer App Folgendes hinzu:
- Ein Dienst, der
FirebaseMessagingService
. Dies ist erforderlich, wenn Sie Nachrichten verarbeiten möchten, die über das Empfangen von Benachrichtigungen für Apps im Hintergrund hinausgehen. Um Benachrichtigungen in Apps im Vordergrund zu empfangen, Datennutzdaten zu empfangen, Upstream-Nachrichten zu senden usw., müssen Sie diesen Dienst erweitern.
<service android:name=".java.MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
<!-- 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" />
default_notification_channel_id
, setzen Sie default_notification_channel_id
wie gezeigt auf die ID Ihres Benachrichtigungskanalobjekts. FCM verwendet diesen Wert immer dann, wenn eingehende Nachrichten keinen expliziten Benachrichtigungskanal festlegen. WeitereInformationen finden Sie unterVerwalten von Benachrichtigungskanälen .<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
Greifen Sie auf das Geräteregistrierungstoken zu
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
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 gedreht werden kann, wird dringend empfohlen, das neueste aktualisierte Registrierungstoken abzurufen.
Das Registrierungstoken kann sich ändern, wenn:
- Die App wird auf einem neuen Gerät wiederhergestellt
- Der Benutzer deinstalliert / installiert die App neu
- 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()
:
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(); } });
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() })
Überwachen Sie die Token-Generierung
Der onNewToken
Rückruf wird onNewToken
wenn ein neues Token generiert wird.
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(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); }
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) }
Nachdem Sie das Token erhalten haben, können Sie es an Ihren App-Server senden und mit Ihrer bevorzugten Methode speichern.
Suchen Sie nach Google Play-Diensten
Apps, die auf dem Play Services SDK basieren, sollten das Gerät immer auf kompatible Google Play Services APK überprüfen, bevor Sie auf die Funktionen der Google Play Services zugreifen. Es wird empfohlen, dies an zwei Stellen zu tun: in der onCreate()
-Methode der Hauptaktivität und in der onResume()
-Methode. Das Einchecken in onCreate()
stellt sicher, dass die App ohne eine erfolgreiche Prüfung nicht verwendet werden kann. Durch das Einchecken in onResume()
sichergestellt, dass die Prüfung weiterhin durchgeführt wird, wenn der Benutzer auf andere Weise, z. B. über die Schaltfläche "Zurück", zur laufenden App zurückkehrt.
Wenn das Gerät nicht über eine kompatible Version der Google Play-Dienste verfügt, kann Ihre App GoogleApiAvailability.makeGooglePlayServicesAvailable()
aufrufen, damit Benutzer Google Play-Dienste aus dem Play Store herunterladen können.
Verhindern Sie die automatische Initialisierung
Wenn ein FCM-Registrierungstoken generiert wird, lädt die Bibliothek die Kennung und die Konfigurationsdaten in Firebase hoch. Wenn Sie die automatische AndroidManifest.xml
von Token verhindern möchten, deaktivieren Sie die Analytics-Sammlung und die automatische FCM-Initialisierung (Sie müssen beide deaktivieren), indem Sie diese Metadatenwerte zu 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" />
Führen Sie einen Laufzeitaufruf durch, um die automatische Initialisierung von FCM wieder zu aktivieren:
Java
FirebaseMessaging.getInstance().setAutoInitEnabled(true);
Kotlin + KTX
Firebase.messaging.isAutoInitEnabled = true
Rufen setAnalyticsCollectionEnabled()
zum erneuten Aktivieren der Analytics-Sammlung die Methode setAnalyticsCollectionEnabled()
der FirebaseAnalytics
Klasse auf. Beispielsweise:
setAnalyticsCollectionEnabled(true);
Diese Werte bleiben auch nach dem Festlegen des App-Neustarts erhalten.
Nächste Schritte
Nachdem die Client-App eingerichtet wurde, können Sie mit dem Notifications Composer Downstream-Nachrichten senden. Diese Funktionalität wird im Schnellstartbeispiel demonstriert, das Sie herunterladen, ausführen und überprüfen können.
Um Ihrer App ein anderes, erweitertes Verhalten hinzuzufügen, können Sie einen Absichtsfilter deklarieren und eine Aktivität implementieren, um auf eingehende Nachrichten zu reagieren. Weitere Informationen finden Sie in den Handbüchern zum Senden von Nachrichten von einem App-Server:
Denken Sie daran , dass die Vorteile dieser Funktionen zu nutzen, benötigen Sie einen Server - Implementierung und die Server - procotols (HTTP oder XMPP) oder eine Implementierung des Admin SDK .