Nachrichten an mehrere Geräte senden

Wenn Sie eine Nachricht an mehrere Geräte senden möchten, verwenden Sie Topic Messaging. Mit dieser Funktion können Sie eine Nachricht an mehrere Geräte senden, die ein bestimmtes Thema abonniert haben.

In dieser Anleitung geht es darum, wie Sie Themennachrichten von Ihrem App-Server mit der Admin SDK oder der REST API für FCM senden und in einer Android-App empfangen und verarbeiten. Wir gehen auf die Nachrichtenverarbeitung für Apps im Hintergrund und im Vordergrund ein. Alle Schritte, die dazu erforderlich sind, werden behandelt – von der Einrichtung bis zur Bestätigung.

SDK einrichten

Dieser Abschnitt enthält möglicherweise Schritte, die Sie bereits ausgeführt haben, wenn Sie eine Android-Client-App für FCM eingerichtet oder die Schritte zum Senden Ihrer ersten Nachricht durchlaufen haben.

Hinweis

  • Installieren Sie Android Studio oder aktualisieren Sie es auf die neueste Version.

  • Ihr Projekt muss die folgenden Anforderungen erfüllen. Bei einigen Produkten gelten möglicherweise strengere Anforderungen:

    • Die App ist auf API‑Level 21 (Lollipop) oder höher ausgerichtet.
    • Android 5.0 oder höher
    • Verwendet Jetpack (AndroidX), was die Einhaltung der folgenden Versionsanforderungen erfordert:
      • com.android.tools.build:gradle v7.3.0 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.
    Firebase-SDKs mit einer Abhängigkeit von Google Play-Diensten erfordern, dass auf dem Gerät oder Emulator Google Play-Dienste installiert sind.

  • Melden Sie sich mit Ihrem Google-Konto in Firebase an.

Wenn Sie noch kein Android-Projekt haben und nur ein Firebase-Produkt ausprobieren möchten, können Sie eines unserer Schnellstartbeispiele herunterladen.

Firebase-Projekt erstellen

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. Weitere Informationen zu Firebase-Projekten finden Sie unter Firebase-Projekte.

App bei Firebase registrieren

Wenn Sie Firebase in Ihrer Android-App verwenden möchten, müssen Sie Ihre App in Ihrem Firebase-Projekt registrieren. Die Registrierung Ihrer App wird oft auch als „Hinzufügen“ Ihrer App zu Ihrem Projekt bezeichnet.

  1. Rufen Sie die Firebase-Konsole auf.

  2. Klicken Sie in der Mitte der Projektübersicht auf das Symbol Android () oder auf App hinzufügen, um den Einrichtungsworkflow zu starten.

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

  4. Optional: Geben Sie weitere App-Informationen ein: App-Nickname und SHA-1-Wert des Signaturzertifikats für die Fehlerbehebung.

  5. Klicken Sie auf App registrieren.

Firebase-Konfigurationsdatei hinzufügen

  1. Laden Sie die Firebase-Konfigurationsdatei (google-services.json) Ihrer App herunter und fügen Sie sie der Codebasis hinzu:

    1. Klicken Sie auf google-services.json herunterladen, um die Firebase-Konfigurationsdatei Ihrer App zu erhalten.

    2. Verschieben Sie die Konfigurationsdatei in das Modulstammverzeichnis (auf App-Ebene) Ihrer App.

  2. Wenn Sie die Werte in Ihrer google-services.json-Konfigurationsdatei für Firebase SDKs verfügbar machen möchten, benötigen Sie das Gradle-Plug-in für Google-Dienste (google-services).

    1. Fügen Sie in der Gradle-Datei auf Stammebene (Projektebene) (<project>/build.gradle.kts oder <project>/build.gradle) das Google-Dienste-Plug-in als Abhängigkeit hinzu:

      Kotlin

      plugins {
        id("com.android.application") version "7.3.0" apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id("com.google.gms.google-services") version "4.4.3" apply false
      }

      Groovy

      plugins {
        id 'com.android.application' version '7.3.0' apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id 'com.google.gms.google-services' version '4.4.3' apply false
      }
    2. Fügen Sie in der Gradle-Datei des Moduls (auf App-Ebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) das Google-Dienste-Plug-in hinzu:

      Kotlin

      plugins {
        id("com.android.application")
      
        // Add the Google services Gradle plugin
        id("com.google.gms.google-services")
        // ...
      }

      Groovy

      plugins {
        id 'com.android.application'
      
        // Add the Google services Gradle plugin
        id 'com.google.gms.google-services'
        // ...
      }

Firebase SDKs zu Ihrer App hinzufügen

  1. Fügen Sie in der Gradle-Datei Ihres Moduls (auf App-Ebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) die Abhängigkeit für die Firebase Cloud Messaging-Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM zu verwenden, um die Versionsverwaltung der Bibliothek zu steuern.

    Für eine optimale Nutzung von Firebase Cloud Messaging empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und das Firebase SDK für Google Analytics in Ihre App einzubinden.

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

    Mit der Firebase Android BoM haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

    (Alternative)  Firebase-Bibliotheksabhängigkeiten ohne Verwendung von BoM hinzufügen

    Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden 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 {
        // Add 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:25.0.0")
        implementation("com.google.firebase:firebase-analytics:23.0.0")
    }

  2. Synchronisieren Sie Ihr Android-Projekt mit Gradle-Dateien.

Client-App für ein Thema abonnieren

Client-Apps können jedes vorhandene Thema abonnieren oder ein neues Thema erstellen. Wenn eine Client-App ein neues Thema abonniert, das noch nicht für Ihr Firebase-Projekt vorhanden ist, wird in FCM ein neues Thema mit diesem Namen erstellt. Jeder Client kann es dann abonnieren.

Um ein Thema zu abonnieren, ruft die Client-App Firebase Cloud Messaging subscribeToTopic() mit dem Themanamen FCM auf. Diese Methode gibt ein Task zurück, das von einem Completion-Listener verwendet werden kann, um festzustellen, ob das Abo erfolgreich war:

Kotlin

Firebase.messaging.subscribeToTopic("weather")
    .addOnCompleteListener { task ->
        var msg = "Subscribed"
        if (!task.isSuccessful) {
            msg = "Subscribe failed"
        }
        Log.d(TAG, msg)
        Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
    }

Java

FirebaseMessaging.getInstance().subscribeToTopic("weather")
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                String msg = "Subscribed";
                if (!task.isSuccessful()) {
                    msg = "Subscribe failed";
                }
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Zum Abmelden ruft die Client-App Firebase Cloud Messaging unsubscribeFromTopic() mit dem Namen des Themas auf.

Themennachrichten empfangen und bearbeiten

FCM stellt Themennachrichten auf dieselbe Weise wie andere Downstream-Nachrichten zu.

Verwenden Sie einen Dienst, der FirebaseMessagingService erweitert, um Nachrichten zu empfangen. Ihr Dienst sollte die Callbacks onMessageReceived und onDeletedMessages überschreiben.

Das Zeitfenster für die Verarbeitung einer Nachricht kann kürzer als 20 Sekunden sein, je nachdem, welche Verzögerungen vor dem Aufrufen von onMessageReceived auftreten, z. B. Verzögerungen des Betriebssystems, App-Startzeit, Blockierung des Hauptthreads durch andere Vorgänge oder vorherige onMessageReceived-Aufrufe, die zu lange dauern. Danach können verschiedene Betriebssystemfunktionen wie das Beenden von Prozessen in Android oder die Einschränkungen für die Ausführung im Hintergrund in Android O Ihre Arbeit beeinträchtigen.

onMessageReceived ist für die meisten Nachrichtentypen verfügbar, mit den folgenden Ausnahmen:

  • Benachrichtigungen, die zugestellt werden, wenn Ihre App im Hintergrund ausgeführt wird: In diesem Fall wird die Benachrichtigung in der Taskleiste des Geräts angezeigt. Wenn ein Nutzer auf eine Benachrichtigung tippt, wird standardmäßig der App Launcher geöffnet.

  • Nachrichten mit Benachrichtigungs- und Daten-Payload, wenn sie im Hintergrund empfangen werden: In diesem Fall wird die Benachrichtigung in der Taskleiste des Geräts angezeigt und die Daten-Payload wird in den Extras des Intents Ihrer Launcher-Aktivität bereitgestellt.

Zusammenfassung:

App-Status Benachrichtigung Daten Beides
Vordergrund onMessageReceived onMessageReceived onMessageReceived
Hintergrund Taskleiste onMessageReceived Benachrichtigung: Taskleiste
Daten: in den Extras des Intents.
Weitere Informationen zu Nachrichtentypen finden Sie unter Benachrichtigungen und Datenmeldungen.

App-Manifest bearbeiten

Wenn Sie FirebaseMessagingService verwenden möchten, müssen Sie Folgendes in Ihr App-Manifest einfügen:

<service
    android:name=".java.MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

Außerdem wird empfohlen, Standardwerte festzulegen, um das Erscheinungsbild von Benachrichtigungen anzupassen. Sie können ein benutzerdefiniertes Standardsymbol und eine benutzerdefinierte Standardfarbe angeben, die angewendet werden, wenn in der Benachrichtigungsnutzlast keine entsprechenden Werte festgelegt sind.

Fügen Sie diese Zeilen in das application-Tag ein, um das benutzerdefinierte Standardsymbol und die benutzerdefinierte Farbe festzulegen:

<!-- 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" />

Unter Android wird das benutzerdefinierte Standardsymbol für

  • Alle Benachrichtigungen, die über den Notifications Composer gesendet werden.
  • Alle Benachrichtigungen, bei denen das Symbol nicht explizit in der Benachrichtigungs-Payload festgelegt ist.

Unter Android wird die benutzerdefinierte Standardfarbe für Folgendes verwendet:

  • Alle Benachrichtigungen, die über den Notifications Composer gesendet werden.
  • Alle Benachrichtigungen, bei denen die Farbe nicht explizit in der Benachrichtigungsnutzlast festgelegt ist.

Wenn kein benutzerdefiniertes Standardsymbol festgelegt ist und kein Symbol in der Benachrichtigungs-Payload festgelegt ist, zeigt Android das in Weiß gerenderte Anwendungssymbol an.

Überschreiben onMessageReceived

Durch Überschreiben der Methode FirebaseMessagingService.onMessageReceived können Sie Aktionen basierend auf dem empfangenen RemoteMessage-Objekt ausführen und die Nachrichtendaten abrufen:

Kotlin

override fun onMessageReceived(remoteMessage: RemoteMessage) {
    // TODO(developer): Handle FCM messages here.
    // Not getting messages here? See why this may be: https://goo.gl/39bRNJ
    Log.d(TAG, "From: ${remoteMessage.from}")

    // Check if message contains a data payload.
    if (remoteMessage.data.isNotEmpty()) {
        Log.d(TAG, "Message data payload: ${remoteMessage.data}")

        // Check if data needs to be processed by long running job
        if (needsToBeScheduled()) {
            // For long-running tasks (10 seconds or more) use WorkManager.
            scheduleJob()
        } else {
            // Handle message within 10 seconds
            handleNow()
        }
    }

    // Check if message contains a notification payload.
    remoteMessage.notification?.let {
        Log.d(TAG, "Message Notification Body: ${it.body}")
    }

    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.
}

Java

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // TODO(developer): Handle FCM messages here.
    // Not getting messages here? See why this may be: https://goo.gl/39bRNJ
    Log.d(TAG, "From: " + remoteMessage.getFrom());

    // Check if message contains a data payload.
    if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());

        if (/* Check if data needs to be processed by long running job */ true) {
            // For long-running tasks (10 seconds or more) use WorkManager.
            scheduleJob();
        } else {
            // Handle message within 10 seconds
            handleNow();
        }

    }

    // Check if message contains a notification payload.
    if (remoteMessage.getNotification() != null) {
        Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
    }

    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.
}

Überschreiben onDeletedMessages

In einigen Situationen wird mit FCM keine Nachricht gesendet. Das passiert, wenn auf einem bestimmten Gerät zum Zeitpunkt der Verbindung zu viele Nachrichten (> 100) für Ihre App ausstehen oder wenn das Gerät seit mehr als einem Monat nicht mit FCM verbunden war. In diesen Fällen erhalten Sie möglicherweise einen Callback an FirebaseMessagingService.onDeletedMessages(). Wenn die App-Instanz diesen Callback empfängt, sollte sie eine vollständige Synchronisierung mit Ihrem App-Server durchführen. Wenn Sie in den letzten vier Wochen keine Nachricht an die App auf diesem Gerät gesendet haben, ruft FCM onDeletedMessages() nicht an.

Benachrichtigungen in einer im Hintergrund ausgeführten App verarbeiten

Wenn sich Ihre App im Hintergrund befindet, leitet Android Benachrichtigungen an die Taskleiste weiter. Wenn ein Nutzer auf die Benachrichtigung tippt, wird standardmäßig der App Launcher geöffnet.

Dazu gehören Nachrichten, die sowohl eine Benachrichtigungs- als auch eine Daten-Payload enthalten, sowie alle Nachrichten, die über die Notifications Console gesendet werden. In diesen Fällen wird die Benachrichtigung in der Taskleiste des Geräts angezeigt und die Daten-Payload wird in den Extras des Intents Ihrer Launcher-Aktivität bereitgestellt.

Informationen zur Zustellung von Nachrichten an Ihre App finden Sie im FCM-Berichts-Dashboard. Dort wird die Anzahl der auf Apple- und Android-Geräten gesendeten und geöffneten Nachrichten sowie die Anzahl der Impressionen (von Nutzern gesehene Benachrichtigungen) für Android-Apps erfasst.

Sendeanfragen erstellen

Nachdem Sie ein Thema erstellt haben, entweder indem Sie Client-App-Instanzen auf Clientseite oder über die Server-API für das Thema abonnieren, können Sie Nachrichten an das Thema senden. Wenn Sie zum ersten Mal Sendeanfragen für FCM erstellen, finden Sie im Leitfaden zu Ihrer Serverumgebung und FCM wichtige Hintergrundinformationen und Informationen zur Einrichtung.

Geben Sie in Ihrer Sendelogik im Backend den gewünschten Themennamen wie unten gezeigt an:

Node.js

// The topic name can be optionally prefixed with "/topics/".
const topic = 'highScores';

const message = {
  data: {
    score: '850',
    time: '2:45'
  },
  topic: topic
};

// Send a message to devices subscribed to the provided topic.
getMessaging().send(message)
  .then((response) => {
    // Response is a message ID string.
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
    console.log('Error sending message:', error);
  });

Java

// The topic name can be optionally prefixed with "/topics/".
String topic = "highScores";

// See documentation on defining a message payload.
Message message = Message.builder()
    .putData("score", "850")
    .putData("time", "2:45")
    .setTopic(topic)
    .build();

// Send a message to the devices subscribed to the provided topic.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);

Python

# The topic name can be optionally prefixed with "/topics/".
topic = 'highScores'

# See documentation on defining a message payload.
message = messaging.Message(
    data={
        'score': '850',
        'time': '2:45',
    },
    topic=topic,
)

# Send a message to the devices subscribed to the provided topic.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)

Go

// The topic name can be optionally prefixed with "/topics/".
topic := "highScores"

// See documentation on defining a message payload.
message := &messaging.Message{
	Data: map[string]string{
		"score": "850",
		"time":  "2:45",
	},
	Topic: topic,
}

// Send a message to the devices subscribed to the provided topic.
response, err := client.Send(ctx, message)
if err != nil {
	log.Fatalln(err)
}
// Response is a message ID string.
fmt.Println("Successfully sent message:", response)

C#

// The topic name can be optionally prefixed with "/topics/".
var topic = "highScores";

// See documentation on defining a message payload.
var message = new Message()
{
    Data = new Dictionary<string, string>()
    {
        { "score", "850" },
        { "time", "2:45" },
    },
    Topic = topic,
};

// Send a message to the devices subscribed to the provided topic.
string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
// Response is a message ID string.
Console.WriteLine("Successfully sent message: " + response);

REST

POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
  "message":{
    "topic" : "foo-bar",
    "notification" : {
      "body" : "This is a Firebase Cloud Messaging Topic Message!",
      "title" : "FCM Message"
      }
   }
}

cURL-Befehl:

curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
  "message": {
    "topic" : "foo-bar",
    "notification": {
      "body": "This is a Firebase Cloud Messaging Topic Message!",
      "title": "FCM Message"
    }
  }
}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Wenn Sie eine Nachricht an eine Kombination von Themen senden möchten, geben Sie eine Bedingung an. Das ist ein boolescher Ausdruck, der die Zielthemen angibt. Mit der folgenden Bedingung werden beispielsweise Nachrichten an Geräte gesendet, die TopicA und entweder TopicB oder TopicC abonniert haben:

"'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)"

Bei FCM werden zuerst alle Bedingungen in Klammern und dann der Ausdruck von links nach rechts ausgewertet. Im obigen Ausdruck erhält ein Nutzer, der ein einzelnes Thema abonniert hat, die Nachricht nicht. Ebenso erhält ein Nutzer, der TopicA nicht abonniert hat, die Nachricht nicht. Bei diesen Kombinationen ist sie enthalten:

  • TopicA und TopicB
  • TopicA und TopicC

Sie können bis zu fünf Themen in Ihren bedingten Ausdruck aufnehmen.

An eine Bedingung senden:

Node.js

// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
const condition = '\'stock-GOOG\' in topics || \'industry-tech\' in topics';

// See documentation on defining a message payload.
const message = {
  notification: {
    title: '$FooCorp up 1.43% on the day',
    body: '$FooCorp gained 11.80 points to close at 835.67, up 1.43% on the day.'
  },
  condition: condition
};

// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
getMessaging().send(message)
  .then((response) => {
    // Response is a message ID string.
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
    console.log('Error sending message:', error);
  });

Java

// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
String condition = "'stock-GOOG' in topics || 'industry-tech' in topics";

// See documentation on defining a message payload.
Message message = Message.builder()
    .setNotification(Notification.builder()
        .setTitle("$GOOG up 1.43% on the day")
        .setBody("$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.")
        .build())
    .setCondition(condition)
    .build();

// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);

Python

# Define a condition which will send to devices which are subscribed
# to either the Google stock or the tech industry topics.
condition = "'stock-GOOG' in topics || 'industry-tech' in topics"

# See documentation on defining a message payload.
message = messaging.Message(
    notification=messaging.Notification(
        title='$GOOG up 1.43% on the day',
        body='$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.',
    ),
    condition=condition,
)

# Send a message to devices subscribed to the combination of topics
# specified by the provided condition.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)

Go

// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
condition := "'stock-GOOG' in topics || 'industry-tech' in topics"

// See documentation on defining a message payload.
message := &messaging.Message{
	Data: map[string]string{
		"score": "850",
		"time":  "2:45",
	},
	Condition: condition,
}

// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
response, err := client.Send(ctx, message)
if err != nil {
	log.Fatalln(err)
}
// Response is a message ID string.
fmt.Println("Successfully sent message:", response)

C#

// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
var condition = "'stock-GOOG' in topics || 'industry-tech' in topics";

// See documentation on defining a message payload.
var message = new Message()
{
    Notification = new Notification()
    {
        Title = "$GOOG up 1.43% on the day",
        Body = "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.",
    },
    Condition = condition,
};

// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
// Response is a message ID string.
Console.WriteLine("Successfully sent message: " + response);

REST

POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
   "message":{
    "condition": "'dogs' in topics || 'cats' in topics",
    "notification" : {
      "body" : "This is a Firebase Cloud Messaging Topic Message!",
      "title" : "FCM Message",
    }
  }
}

cURL-Befehl:

curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
  "notification": {
    "title": "FCM Message",
    "body": "This is a Firebase Cloud Messaging Topic Message!",
  },
  "condition": "'dogs' in topics || 'cats' in topics"
}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Nächste Schritte

  • Sie können Ihren Server verwenden, um Client-App-Instanzen für Themen zu abonnieren und andere Verwaltungsaufgaben auszuführen. Weitere Informationen finden Sie unter Themenabos auf dem Server verwalten.