Catch up on everthing we announced at this year's Firebase Summit. Learn more

Einrichten einer Firebase Cloud Messaging-Client-App auf Android

Um Ihre Firebase Cloud Messaging Android Client App, verwenden Sie das schreiben FirebaseMessaging API und Android Studio 1.4 oder höher mit Gradle. Die Anweisungen auf dieser Seite an , dass Sie die Schritte zum Abschluss Hinzufügen von Firebase zu dem Android - Projekt .

FCM-Clients erfordern Geräte mit Android 4.4 oder höher, auf denen auch die Google Play Store App installiert ist, oder einen Emulator mit Android 4.4 mit Google APIs. Beachten Sie, dass Sie nicht darauf beschränkt sind, Ihre Android-Apps über den Google Play Store bereitzustellen.

SDK einrichten

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 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
    • Verwendet Android 4.4 oder höher
    • Verwendet Jetpack (AndroidX) , die Erfüllung dieser Version Anforderungen beinhaltet:
      • com.android.tools.build:gradle v3.2.1 oder höher
      • compileSdkVersion 28 oder später
  • Legen Sie ein physisches Gerät oder einen verwenden Emulator , um Ihre Anwendung auszuführen.
    Beachten Sie, dass Firebase SDKs mit einer Abhängigkeit von Google Play - Dienste das Gerät oder Emulator erfordern installiert Google Play - Dienste zu haben.

  • Melden Sie sich bei Firebase mit Ihrem Google - Konto.

Wenn Sie nicht bereits über ein Android - Projekt und möchte nur ein Produkt Firebase auszuprobieren, können Sie einen unserer Download quickstart Proben .

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 verstehen Firebase Projekte mehr über Projekte Firebase zu lernen.

Registrieren Sie Ihre App bei Firebase

Um Firebase in Ihrer Android-App zu verwenden, 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.

  1. Gehen Sie auf die Firebase Konsole .

  2. Im Zentrum des Projekts Übersichtsseite klicken Sie auf das Android - Symbol ( ) oder App hinzufügen den Setup - Workflow zu starten.

  3. Geben Sie Ihre App-Paketnamen im Android Paketname Feld.

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

  5. Klicken Sie auf Registrieren App.

Eine Firebase-Konfigurationsdatei hinzufügen

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

    1. Klicken Sie auf Download google-services.json auf Ihre Firebase Android Konfigurationsdatei zu erhalten ( google-services.json ).

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

  2. So aktivieren Sie Firebase Produkte in Ihrer Anwendung, fügen Sie die Google-Dienste - Plugin , um Ihre Gradle Dateien.

    1. In Ihrer Root-Ebene (Projektebene) Gradle Datei ( build.gradle ), fügen Sie Regeln für den Google - Service Gradle Plugin enthalten. Ü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.10'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. In Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel app/build.gradle ), gilt die Google - Service Gradle Plugin:

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

Firebase SDKs zu Ihrer App hinzufügen

  1. Mit Hilfe der Firebase Android BoM , erklärt die Abhängigkeit für die Firebase Cloud Messaging Android - Bibliothek in Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel app/build.gradle ).

    Für ein optimales Benutzererlebnis mit Firebase Cloud Messaging, empfehlen wir Google Analytics ermöglicht in Ihrem Firebase - Projekt und das Hinzufügen des Firebase SDK für Google Analytics in Ihrer App.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.1')
    
        // 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'
    }
    

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , 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:23.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.1')
    
        // 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'
    }
    

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , 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:23.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.0'
    }
    

  2. Synchronisieren Sie Ihre App, um sicherzustellen, dass alle Abhängigkeiten über die erforderlichen Versionen verfügen.

Bearbeiten Sie Ihr App-Manifest

Fügen Sie dem Manifest Ihrer App Folgendes hinzu:

  • Ein Dienst, der sich FirebaseMessagingService . Dies ist erforderlich, wenn Sie über den Empfang von Benachrichtigungen zu Apps im Hintergrund hinaus eine Nachrichtenverarbeitung durchführen möchten. Um Benachrichtigungen in Apps im Vordergrund zu empfangen, Datennutzlast 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) Android 8.0 (API - Ebene 26) und höher, Benachrichtigungskanäle werden unterstützt und empfohlen. FCM bietet einen Standard-Benachrichtigungskanal mit grundlegenden Einstellungen. Wenn Sie es vorziehen erstellen Sie Ihre eigenen Standardkanal zu verwenden, Satz default_notification_channel_id auf die ID des Objekts Benachrichtigungskanal , wie gezeigt; FCM verwendet diesen Wert immer dann, wenn eingehende Nachrichten nicht explizit einen Benachrichtigungskanal festlegen. Um mehr zu erfahren, siehe Benachrichtigungskanäle verwalten .
  • <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 einzelne Geräte oder Gerätegruppen erstellen ausrichten möchten, müssen Sie dieses Token für den Zugriff durch die Erweiterung FirebaseMessagingService und zwingende onNewToken .

In diesem Abschnitt wird beschrieben, wie Sie das Token abrufen und Änderungen am Token überwachen. Da das Token nach dem ersten Start rotiert 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.

Abrufen des aktuellen Registrierungs-Tokens

Wenn Sie das aktuelle Token abrufen müssen, rufen 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()
})

Token-Generierung überwachen

Die onNewToken Rückruf ausgelöst wird, wenn ein neues Token erzeugt 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.

Nach Google Play-Diensten suchen

Apps, die auf das Play Services SDK angewiesen sind, sollten immer auf dem Gerät nach einem kompatiblen APK für Google Play-Dienste suchen, bevor sie auf die Funktionen der Google Play-Dienste zugreifen. Es wird empfohlen , diese an zwei Stellen zu tun: in der Haupttätigkeit des onCreate() Methode, und in seiner onResume() Methode. Die Check - in onCreate() stellt sicher , dass der App nicht ohne eine erfolgreiche Prüfung verwendet werden. Die Überprüfung in onResume() stellt sicher , dass , wenn der Benutzer kehrt zu dem laufenden app durch andere Mittel, wie beispielsweise durch die Zurück - Taste, wird die Prüfung noch durchgeführt.

Wenn das Gerät nicht eine kompatible Version von Google Play - Dienste verfügt, können Sie Ihre App aufrufen GoogleApiAvailability.makeGooglePlayServicesAvailable() Benutzern zu ermöglichen , Google Play - Dienste aus dem Play Store zum Download bereit .

Automatische Initialisierung verhindern

Wenn ein FCM-Registrierungstoken generiert wird, lädt die Bibliothek die Kennung und die Konfigurationsdaten in Firebase hoch. Wenn Sie es vorziehen Token automatische Generierung, deaktivieren Analytics Sammlung und FCM automatische Initialisierung zu verhindern (Sie müssen beide deaktivieren) , indem Sie diese Metadatenwerte zu Ihrem Hinzufügen 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" />

Um die automatische FCM-Initialisierung wieder zu aktivieren, führen Sie einen Laufzeitaufruf durch:

Java

FirebaseMessaging.getInstance().setAutoInitEnabled(true);

Kotlin+KTX

Firebase.messaging.isAutoInitEnabled = true

So aktivieren Sie Sammlung Analytics, rufen Sie die setAnalyticsCollectionEnabled() Methode der FirebaseAnalytics Klasse. Zum Beispiel:

setAnalyticsCollectionEnabled(true);

Diese Werte bleiben über App-Neustarts hinweg bestehen, nachdem sie festgelegt wurden.

Nächste Schritte

Nachdem die Client - Anwendung eingerichtet ist, sind Sie Downstream - Nachrichten mit dem startbereit zu senden Benachrichtigungen Komponisten . Diese Funktionalität wird in der gezeigten quickstart Probe , die Sie herunterladen können, laufen, und zu überprüfen.

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