Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Richten Sie eine Firebase Cloud Messaging-Client-App unter Android ein

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.

  1. Gehen Sie zur Firebase-Konsole .

  2. Klicken Sie in der Mitte der das Android- Symbol ( ) oder App , um den Setup-Workflow zu starten.

  3. Geben Sie den Paketnamen Ihrer App in das Feld Android-Paketname ein.

  4. (Optional) Geben Sie weitere App-Informationen ein: App-Kurzname und Debug-Signaturzertifikat SHA-1 .

  5. Klicken Sie auf App registrieren .

Fügen Sie eine Firebase-Konfigurationsdatei hinzu

  1. Fügen Sie Ihrer App die Firebase Android-Konfigurationsdatei hinzu:

    1. Klicken Sie auf google-services.json herunterladen , um Ihre Firebase-Android-Konfigurationsdatei ( google-services.json ) abzurufen.

    2. Verschieben Sie Ihre Konfigurationsdatei in das Modulverzeichnis (App-Ebene) Ihrer App.

  2. Fügen Sie Ihren Gradle-Dateien das Google Services-Plugin hinzu , um Firebase-Produkte in Ihrer App zu aktivieren.

    1. build.gradle in Ihrer Gradle-Datei auf build.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
          // ...
        }
      }
      
    2. app/build.gradle Gradle-Datei Ihres Moduls (App-Ebene) (normalerweise app/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

  1. 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'
    }
    

  2. 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>
  • (Optional) Innerhalb der Anwendungskomponente Metadatenelemente zum Festlegen eines Standardbenachrichtigungssymbols und einer Standardfarbe. Android verwendet diese Werte immer dann, wenn eingehende Nachrichten das Symbol oder die Farbe nicht explizit festlegen.
  • <!-- 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" />
  • (Optional) Ab Android 8.0 (API-Level 26) und höher werdenBenachrichtigungskanäle unterstützt und empfohlen. FCM bietet einen Standardbenachrichtigungskanal mit Grundeinstellungen. Wenn Sie Ihren eigenen Standardkanal erstellen und verwenden 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 .