1. Einführung
Im Vergleich zur alten FCM API bietet die FCM HTTP v1 API ein sichereres Autorisierungsmodell mit kurzlebigen Zugriffstokens. Die Schritte zum Generieren des Zugriffstokens für die FCM v1 API unterscheiden sich erheblich von den Schritten für die alte API.
In diesem Codelab wird beschrieben, wie Sie Client und Server einrichten, um Push-Benachrichtigungen mithilfe der FCM HTTP v1 API an eine Android-App zu senden. Darin wird der wichtige Schritt der Anmeldedatengenerierung für die V1-API hervorgehoben.
Weitere Informationen finden Sie unter:
Vorbereitung
- Grundlegende Kenntnisse der Java- und Android-Entwicklung
Lerninhalte
- Detaillierte Schritte für die Einrichtung auf Client- und Serverseite, um Push-Benachrichtigungen mit der FCM HTTP v1 API an Ihre Android-App zu senden
- Anmeldedaten für die HTTP v1 API mit Dienstkonten generieren
- Testnachrichten über die HTTP v1 API senden
Voraussetzungen
Neueste stabile Version von Android Studio
Eines der folgenden Geräte:
- Ein physisches Android-Gerät, das mit Ihrem Computer verbunden ist
- Ein Android-Emulator (siehe Apps im Android-Emulator ausführen)
Eine Java-Entwicklungsumgebung oder ein Code-Editor Ihrer Wahl
2. Firebase-Projekt und Android-App einrichten
Am Ende des Codelabs können Sie Nachrichten mit Firebase Cloud Messaging an Ihre App senden. Dazu müssen Sie zuerst ein Firebase-Projekt erstellen. In diesem Codelab finden Sie auch eine Android-App mit Beispielcode für die Integration in FCM.
Firebase-Projekt einrichten
- Folgen Sie der Anleitung unter Schritt 1: Firebase-Projekt erstellen, um ein eigenes Firebase-Projekt für dieses Codelab zu erstellen.
Android-App einrichten
Die in diesem Codelab bereitgestellte Android-Beispiel-App ist bereits in FCM integriert. Nach dem Start registriert sich die App beim FCM-Server und abonniert ein Thema. In den späteren Schritten dieses Codelabs senden Sie eine Themennachricht an das Thema und Ihre App empfängt sie.
- Laden Sie das Firebase-Android-Schnellstartbeispiel herunter.
- Importieren Sie das Projekt unter https://github.com/firebase/quickstart-android/tree/master/messaging in Android Studio.
- Registrieren Sie die App in der Firebase Console. Der Name der App lautet
com.google.firebase.quickstart.fcm
. Registrieren Sie diese App in Ihrem Firebase-Projekt. Folgen Sie dazu der Anleitung im Abschnitt Schritt 2: App bei Firebase registrieren. - Folgen Sie Teil 1 von Schritt 3: Firebase-Konfigurationsdatei hinzufügen, um
google-services.json
herunterzuladen und Ihrem Projekt hinzuzufügen. Erstellen Sie das Projekt und führen Sie es aus.
3. App-Server einrichten
Nachdem Sie Ihre App eingerichtet haben, müssen Sie ein serverseitiges Codebeispiel herunterladen, um Nachrichten mit der FCM v1 API an Ihre App zu senden. Mit diesem Code werden die API-Anmeldedaten (im nächsten Abschnitt beschrieben) geladen, um ein Zugriffstoken zu generieren. Anschließend wird eine Nachricht über FCM-Themennachrichten an Ihre App gesendet.
- Importieren Sie den Startservercode, indem Sie das GitHub-Projekt herunterladen. Das Projekt „messaging“ ist ein Gradle-basiertes Java-Projekt mit einer Abhängigkeit vom firebase-admin SDK, das Funktionen zum Senden von Nachrichten bietet.
Weitere Informationen zur Funktionsweise eines App-Servers mit FCM finden Sie im Dokument Serverumgebung und FCM.
4. V1-Anmeldedaten abrufen
Die FCM HTTP v1 API verwendet kurzlebige Zugriffstokens gemäß dem OAuth2-Sicherheitsmodell. Im Vergleich zum statischen API-Schlüssel, der in der alten FCM API verwendet wird, ist das kurzlebige Zugriffstoken weniger anfällig für das Risiko eines Anmeldedatendiebstahls. In diesem Abschnitt wird beschrieben, wie Sie eine Anmeldedaten erstellen, um das Zugriffstoken zu generieren, das zum Aufrufen der API verwendet wird.
- Richten Sie ein Firebase-Dienstkonto ein, damit das Firebase Admin SDK Aufrufe an FCM-APIs autorisieren kann. Öffnen Sie in der Firebase Console die Projekteinstellungen und wählen Sie den Tab Dienstkonten aus. Klicken Sie auf Neuen privaten Schlüssel generieren, um das Konfigurations-Snippet herunterzuladen.
- Benennen Sie die heruntergeladene Datei im heruntergeladenen GitHub-Projekt in
service-account.json
um und kopieren Sie sie in den Pfadmessaging/
des Projekts. - Mit der Methode
getAccessToken()
(siehe unten) in der KlasseMessaging.java
wird ein OAuth2-Token generiert, das 1 Stunde lang gültig ist.
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- Ändern Sie die Hauptmethode, um die folgende Zeile hinzuzufügen:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Wechseln Sie in Ihrem Terminal zum Messaging- oder Projektverzeichnis und geben Sie Folgendes ein:
./gradlew run -Pmessage=common-message
um das OAuth2-Token auszugeben.
Weitere Informationen finden Sie unter Sendeanfragen autorisieren.
5. Nachricht mit der REST API senden
Jetzt können Sie eine Nachricht über die HTTP v1 API senden. Führen Sie folgende Schritte aus:
- So fügen Sie das Zugriffstoken einem HTTP-Anfrageheader hinzu:
- Fügen Sie das Token als Wert des Authorization-Headers im Format
Authorization: Bearer <access_token>
hinzu. - Senden Sie mit curl eine HTTP-Anfrage an die FCM v1 API:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
Die $topic_name
oben finden Sie im Code der Android-App, der in der Einrichtung des Firebase-Projekts und der Android-App erwähnt wird. Der Standardwert ist "weather"
.
- Wenn eine Nachricht erfolgreich zugestellt wurde, sollte auf dem Bildschirm eine Benachrichtigung wie im Bild unten angezeigt werden:
6. Fazit
Glückwunsch! Sie haben das Codelab erfolgreich abgeschlossen und Folgendes gelernt:
- Firebase-Projekt einrichten
- Firebase in eine Android-App einbinden
- Anmeldedaten für die FCM HTTP v1 API erstellen
- Nachricht über die FCM HTTP v1 API an Ihre App senden
Die folgenden Referenzen können hilfreich sein, wenn Sie sich mit den erweiterten Funktionen von FCM vertraut machen möchten: