Erste Schritte mit Firebase Cloud Messaging in Web-Apps

Plattform auswählen : iOS+ Android Web Flutter Unity C++


In dieser Anleitung wird beschrieben, wie Sie Firebase Cloud Messaging in Ihren Webclient-Apps verwenden, um zuverlässig Nachrichten zu senden.

Mit der FCM JavaScript API können Sie Benachrichtigungen in Web-Apps empfangen, die in Browsern ausgeführt werden, die die Push API unterstützen. Dazu gehören die in dieser Supportmatrix aufgeführten Browserversionen und Chrome-Erweiterungen, die die Push API verwenden.

Das FCM SDK wird nur auf Seiten unterstützt, die über HTTPS bereitgestellt werden. Das liegt daran, dass es Service Worker verwendet, die nur auf HTTPS-Websites verfügbar sind. Wenn Sie einen Anbieter benötigen, Firebase App Hosting wird empfohlen und bietet ein kostenloses Kontingent für HTTPS-Hosting in Ihrer eigenen Domain.

Wenn Sie die FCM JavaScript API verwenden möchten, müssen Sie Ihrer Web-App Firebase hinzufügen und Logik hinzufügen, um auf Firebase-Installations-IDs zuzugreifen. So können Sie den Empfänger für Ihre Benachrichtigungen festlegen.

FCM SDK hinzufügen und initialisieren

  1. Installieren Sie das Firebase JS SDK und initialisieren Sie Firebase, falls noch nicht geschehen.

  2. Fügen Sie das Firebase Cloud Messaging JS SDK hinzu und initialisieren Sie Firebase Cloud Messaging:

Web

import { initializeApp } from "firebase/app";
import { getMessaging } from "firebase/messaging";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Firebase Cloud Messaging and get a reference to the service
const messaging = getMessaging(app);

Web

import firebase from "firebase/compat/app";
import "firebase/compat/messaging";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Firebase Cloud Messaging and get a reference to the service
const messaging = firebase.messaging();

Wenn Sie FCM für das Web verwenden und auf SDK 6.7.0 oder höher aktualisieren möchten, müssen Sie die FCM Registration API für Ihr Projekt in der Google Cloud Console aktivieren. Achten Sie beim Aktivieren der API darauf, dass Sie in der Google Cloud Console mit demselben Google-Konto angemeldet sind, das Sie für Firebase verwenden, und wählen Sie das richtige Projekt aus. Bei neuen Projekten , in denen das FCM SDK hinzugefügt wird, ist diese API standardmäßig aktiviert.

Webanmeldedaten mit FCM konfigurieren

Die FCM Weboberfläche verwendet Webanmeldedaten, sogenannte VAPID-Schlüssel (Voluntary Application Server Identification), um Sendeanfragen an unterstützte Web-Push-Dienste zu autorisieren. Wenn Sie Ihre App für Push-Benachrichtigungen abonnieren möchten, müssen Sie ein Schlüsselpaar mit Ihrem Firebase-Projekt verknüpfen. Sie können entweder ein neues Schlüsselpaar generieren oder Ihr vorhandenes Schlüsselpaar über die Firebase Konsole importieren.

Neues Schlüsselpaar generieren

  1. Rufen Sie in der Firebase Console die Einstellungen > Allgemein auf. Klicken Sie dann auf den Cloud Messaging Tab

  2. Gehen Sie zum Abschnitt Webkonfiguration.

  3. Klicken Sie auf dem Tab Web-Push-Zertifikate auf Schlüsselpaar generieren.

    In der Console wird eine Benachrichtigung angezeigt, dass das Schlüsselpaar generiert wurde. Außerdem werden der öffentliche Schlüsselstring und das Datum des Hinzufügens angezeigt.

Vorhandenes Schlüsselpaar importieren

Wenn Sie bereits ein Schlüsselpaar verwenden, das Sie mit Ihrer Web-App nutzen, können Sie es in FCM importieren, damit Sie über FCM APIs auf Ihre vorhandenen Web-App Instanzen zugreifen können. Zum Importieren von Schlüsseln benötigen Sie Zugriff auf das Firebase-Projekt auf Inhaberebene. Importieren Sie Ihren vorhandenen öffentlichen und privaten Schlüssel in Base64-URL-sicherer codierter Form:

  1. Rufen Sie in der Firebase Console die Einstellungen > Allgemein auf. Klicken Sie dann auf den Cloud Messaging Tab

  2. Gehen Sie zum Abschnitt Webkonfiguration.

  3. Suchen und wählen Sie auf dem Tab Web-Push-Zertifikate den Linktext Vorhandenes Schlüsselpaar importieren aus.

  4. Geben Sie im Dialogfeld Schlüsselpaar importieren Ihre öffentlichen und privaten Schlüssel in die entsprechenden Felder ein und klicken Sie auf Importieren.

    In der Console werden der öffentliche Schlüsselstring und das Datum des Hinzufügens angezeigt.

Eine Anleitung zum Hinzufügen des Schlüssels zu Ihrer App finden Sie unter Webanmeldedaten in Ihrer App konfigurieren. Weitere Informationen zum Format der Schlüssel und zum Generieren von Schlüsseln finden Sie unter Anwendungsserverschlüssel.

Webanmeldedaten in Ihrer App konfigurieren

Mit der Methode register(): Promise<void> kann FCM die VAPID-Schlüsselanmeldedaten verwenden, wenn Nachrichten anfragen an verschiedene Push-Dienste gesendet werden. Fügen Sie den Schlüssel, den Sie gemäß der Anleitung unter Webanmeldedaten mit FCM konfigurieren generiert oder importiert haben, in Ihren Code ein, nachdem das Messaging-Objekt abgerufen wurde:

import { getMessaging, register } from "firebase/messaging";

const messaging = getMessaging();
// Add the public key generated from the Firebase console here.
register(messaging, {vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu"});

Berechtigung zum Senden von Benachrichtigungen anfordern und Service Worker konfigurieren

Wenn Sie eine App-Instanz mit FCM ansprechen möchten, fordern Sie zuerst die Berechtigung zum Senden von Benachrichtigungen vom Nutzer mit Notification.requestPermission() an. Wenn die Funktion wie gezeigt aufgerufen wird, wird der Berechtigungsstatus zurückgegeben, falls die Berechtigung erteilt wurde:

function requestPermission() {
  console.log('Requesting permission...');
  Notification.requestPermission().then((permission) => {
    if (permission === 'granted') {
      console.log('Notification permission granted.');
    }
  });
}

FCM erfordert eine firebase-messaging-sw.js-Datei. Wenn Sie noch keine firebase-messaging-sw.js-Datei haben, erstellen Sie eine leere Datei mit diesem Namen und platzieren Sie sie im Stammverzeichnis Ihrer Domain, bevor Sie sich registrieren. Sie können der Datei später bei der Clienteinrichtung aussagekräftige Inhalte hinzufügen.

Auf die Firebase-Installations-ID zugreifen

So registrieren Sie die App-Instanz und rufen die Firebase-Installations-ID (FID) für das Targeting von Nachrichten ab:

import { getMessaging, onRegistered, register } from "firebase/messaging";

const messaging = getMessaging();

// 1. Implement callback to receive the Firebase installation ID upon registration.
// This is triggered every time a manual register() finishes, a FID change
// is detected, or a pushsubscriptionchange event is fired.
onRegistered(messaging, (installationId) => {
  console.log('Registered installation ID:', installationId);

  // Send the Firebase Installation ID to your app server and update the UI if needed.
  sendRegistrationToServer(installationId);
});

// 2. You can also manually trigger registration (recommended on app startup)
register(messaging, {
  vapidKey: '<YOUR_PUBLIC_VAPID_KEY_HERE>'
}).then(() => {
  // Success! The Firebase Installation ID can be used to target messages to this app
  // instance and will be delivered asynchronously to your onRegistered() callback.
}).catch((err) => {
  console.error('An error occurred while registering', err);
});

Der onRegistered Callback wird in drei Fällen ausgelöst:

  1. Jedes Mal, wenn ein manueller register() Aufruf abgeschlossen ist.
  2. Eine Änderung der Firebase-Installations-ID wird erkannt.
  3. Ein pushsubscriptionchange Ereignis wird ausgelöst.

Nachdem Sie die Firebase-Installations-ID erhalten haben, senden Sie sie an Ihren App-Server und speichern Sie sie mit der gewünschten Methode.

Auf das Registrierungstoken zugreifen (eingestellt)

So rufen Sie das aktuelle Token ab:

Web

import { getMessaging, getToken } from "firebase/messaging";

// Get registration token. Initially this makes a network call, once retrieved
// subsequent calls to getToken will return from cache.
const messaging = getMessaging();
getToken(messaging, { vapidKey: '<YOUR_PUBLIC_VAPID_KEY_HERE>' }).then((currentToken) => {
  if (currentToken) {
    // Send the token to your server and update the UI if necessary
    // ...
  } else {
    // Show permission request UI
    console.log('No registration token available. Request permission to generate one.');
    // ...
  }
}).catch((err) => {
  console.log('An error occurred while retrieving token. ', err);
  // ...
});

Web

// Get registration token. Initially this makes a network call, once retrieved
// subsequent calls to getToken will return from cache.
messaging.getToken({ vapidKey: '<YOUR_PUBLIC_VAPID_KEY_HERE>' }).then((currentToken) => {
  if (currentToken) {
    // Send the token to your server and update the UI if necessary
    // ...
  } else {
    // Show permission request UI
    console.log('No registration token available. Request permission to generate one.');
    // ...
  }
}).catch((err) => {
  console.log('An error occurred while retrieving token. ', err);
  // ...
});

Nachdem Sie das Token erhalten haben, senden Sie es an Ihren App-Server und speichern es mit der gewünschten Methode.

Testbenachrichtigung senden

  1. Installieren und führen Sie die App auf dem Zielgerät aus. Auf Apple-Geräten müssen Sie die Anfrage zur Berechtigung zum Empfangen von Remote-Benachrichtigungen akzeptieren.

  2. Prüfen Sie, ob die App auf dem Gerät im Hintergrund ausgeführt wird.

  3. Rufen Sie in der Firebase Console DevOps & Engagement > Messaging auf.

  4. Kampagne erstellen

    • Wenn dies Ihre erste Nachricht ist:

      1. Wählen Sie Erste Kampagne erstellen aus.

      2. Wählen Sie Firebase-Benachrichtigungen und dann Erstellen aus.

    • Wenn Sie bereits Kampagnen erstellt haben:

      1. Wählen Sie auf dem Tab Kampagnen die Option Neue Kampagne aus.

      2. Klicken Sie auf Benachrichtigungen.

  5. Geben Sie den Nachrichtentext ein.

  6. Wählen Sie im rechten Bereich Testnachricht senden aus.

  7. Geben Sie im Feld Registrierungstoken hinzufügen Ihr Registrierungstoken ein.FCM

  8. Wählen Sie Testen aus.

Nachdem Sie Testen ausgewählt haben, sollte das Zielgerät mit der App im Hintergrund die Benachrichtigung erhalten.

Nächste Schritte

Nachdem Sie die Einrichtung abgeschlossen haben, haben Sie folgende Möglichkeiten, mit FCM für das Web (JavaScript) fortzufahren: