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.
Dieses Codelab führt Sie durch die clientseitige und serverseitige Einrichtung, um das Senden von Push-Benachrichtigungen an eine Android-App mithilfe der FCM HTTP v1 API zu aktivieren. Der wichtigste Schritt bei der Generierung von Anmeldedaten für die v1 API wird hervorgehoben.
Weitere Informationen finden Sie hier:
Vorbereitung
- Grundlegende Kenntnisse der Java- und Android-Entwicklung
Lerninhalte
- Detaillierte Schritte zur clientseitigen und serverseitigen Einrichtung, um das Senden von Push-Benachrichtigungen an deine Android-App über die FCM HTTP v1 API zu aktivieren
- 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 mit Ihrem Computer verbundenes physisches Android-Gerät
- Einen 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 mit Firebase Cloud Messaging Nachrichten an Ihre App senden. Dazu müssen Sie zuerst ein Firebase-Projekt erstellen. Dieses Codelab bietet auch eine Android-App mit Beispielcode für die Integration in FCM.
Firebase-Projekt einrichten
- Folgen Sie Schritt 1: Firebase-Projekt erstellen, um ein eigenes Firebase-Projekt für dieses Codelab zu erstellen.
Android-App einrichten
Die in diesem Codelab bereitgestellte Beispiel-Android-App ist bereits in FCM integriert. Nach dem Start registriert er sich beim FCM-Server und abonniert ein Thema. In den späteren Schritten dieses Codelabs senden Sie eine Nachrichten an das Thema und Ihre App empfängt sie.
- Laden Sie das Beispiel für die Firebase-Android-Schnellstartanleitung 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 App-Name lautet
com.google.firebase.quickstart.fcm
. Registrieren Sie diese App in Ihrem Firebase-Projekt. Folgen Sie dazu der Anleitung unter „Schritt 2: App bei Firebase registrieren“. - Führen Sie Teil 1 von „Schritt 3: Firebase-Konfigurationsdatei hinzufügen“ aus, um
google-services.json
herunterzuladen und Ihrem Projekt hinzuzufügen. Erstellen und führen Sie das Projekt aus.
3. App-Server einrichten
Nachdem Sie Ihre App eingerichtet haben, müssen Sie ein serverseitiges Codebeispiel herunterladen, um Nachrichten über die 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 mit FCM-Themennachrichten an deine 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 dazu, wie ein Anwendungsserver mit FCM funktionieren sollte, finden Sie im Dokument Ihre 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 Risiko eines Datenlecks bei kurzlebigen Zugriffstokens geringer. In diesem Abschnitt wird beschrieben, wie Sie Anmeldedaten zum Generieren des Zugriffstokens erstellen, das beim 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. - Die Methode
getAccessToken()
(unten dargestellt) in der KlasseMessaging.java
generiert ein OAuth2-Token, das eine 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 Methode "main" in die folgende Zeile:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Wechseln Sie in Ihrem Terminal zum Projektverzeichnis "messaging/" und geben Sie Folgendes ein:
./gradlew run -Pmessage=common-message
aus, um das OAuth2-Token auszudrucken.
Weitere Informationen finden Sie unter Sendeanfragen autorisieren.
5. Nachrichten 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 Autorisierungs-Headers im Format
Authorization: Bearer <access_token>
hinzu. - Stellen 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 wurde. Der Standardwert ist "weather"
.
- Nachdem eine Nachricht erfolgreich zugestellt wurde, sollte eine Pop-up-Benachrichtigung auf Ihrem Bildschirm angezeigt werden, ähnlich wie im folgenden Bild:
6. Fazit
Glückwunsch! Sie haben das Codelab erfolgreich abgeschlossen und dabei Folgendes gelernt:
- Firebase-Projekt einrichten
- Firebase in eine Android-App einbinden
- Anmeldedaten für die FCM HTTP v1 API erstellen
- Nachrichten über die FCM HTTP v1 API an Ihre App senden
Weitere Informationen zu den erweiterten Funktionen von FCM finden Sie in den folgenden Artikeln: