Mit der Firebase Admin SDK und der FCM v1 HTTP API können Sie in Ihren Nachrichtenanfragen alle im message-Objekt verfügbaren Felder festlegen. Dazu zählen:
- einen gemeinsamen Satz von Feldern, die von allen App-Instanzen interpretiert werden, die die Nachricht empfangen.
- Plattformspezifische Feldsätze wie
AndroidConfigundWebpushConfig, die nur von App-Instanzen interpretiert werden, die auf der angegebenen Plattform ausgeführt werden.
Plattformspezifische Blöcke bieten Ihnen die Flexibilität, Nachrichten für verschiedene Plattformen anzupassen, damit sie beim Empfang korrekt verarbeitet werden. Das FCM-Backend berücksichtigt alle angegebenen Parameter und passt die Nachricht für jede Plattform an.
Wann sollten gemeinsame Felder verwendet werden?
Verwenden Sie gängige Felder, wenn Sie:
- Felder an eine beliebige Plattform senden
- Nachrichten an Themen senden
Alle App-Instanzen können unabhängig von der Plattform die folgenden allgemeinen Felder interpretieren:
Wann plattformspezifische Felder verwendet werden sollten
Verwenden Sie plattformspezifische Felder, wenn Sie Folgendes möchten:
- Felder nur an bestimmte Plattformen senden
- Senden Sie zusätzlich zu den allgemeinen Feldern plattformspezifische Felder.
Wenn Sie Werte nur an bestimmte Plattformen senden möchten, verwenden Sie plattformspezifische Felder. Wenn Sie beispielsweise eine Benachrichtigung nur an Apple- und Webplattformen, aber nicht an Android senden möchten, müssen Sie zwei separate Sätze von Feldern verwenden, einen für Apple und einen für das Web.
Wenn Sie Nachrichten mit bestimmten Zustellungsoptionen senden, verwenden Sie plattformspezifische Felder, um diese festzulegen. Sie können für jede Plattform unterschiedliche Werte angeben. Auch wenn Sie auf allen Plattformen im Wesentlichen denselben Wert festlegen möchten, müssen Sie plattformspezifische Felder verwenden. Das liegt daran, dass jede Plattform den Wert etwas anders interpretieren kann. Beispielsweise wird die Gültigkeitsdauer unter Android als Ablaufzeit in Sekunden festgelegt, während sie unter Apple als Ablaufdatum festgelegt wird.
Benachrichtigung mit plattformspezifischen Zustelloptionen
Mit der folgenden Sendeanfrage der HTTP v1 API werden ein allgemeiner Titel und Inhalt für Benachrichtigungen an alle Plattformen gesendet, aber auch einige plattformspezifische Überschreibungen. Die Anfrage muss Folgendes enthalten:
- legt eine lange Gültigkeitsdauer für Android- und Webplattformen fest, während die Nachrichtenpriorität für APNs (Apple-Plattformen) auf eine niedrige Einstellung festgelegt wird.
- legt die entsprechenden Schlüssel fest, um das Ergebnis eines Nutzertippens auf die Benachrichtigung unter Android und Apple zu definieren –
click_actionbzw.category.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Match update",
"body":"Arsenal goal in added time, score is now 3-0"
},
"android":{
"ttl":"86400s",
"notification"{
"click_action":"OPEN_ACTIVITY_1"
}
},
"apns": {
"headers": {
"apns-priority": "5",
},
"payload": {
"aps": {
"category": "NEW_MESSAGE_CATEGORY"
}
}
},
"webpush":{
"headers":{
"TTL":"86400"
}
}
}
}
Weitere Informationen zu den in plattformspezifischen Blöcken im Inhalt der Nachricht verfügbaren Schlüsseln finden Sie auf der Referenzseite zu HTTP v1. Weitere Informationen zum Erstellen von Sendeanfragen, die den Inhalt der Nachricht enthalten, finden Sie unter Nachricht mit der FCM HTTP v1 API senden.
Benachrichtigung mit Farb- und Symboloptionen
Im folgenden Beispiel werden ein allgemeiner Titel und Inhalt für die Benachrichtigung an alle Plattformen gesendet, aber auch einige plattformspezifische Überschreibungen an Android-Geräte.
Für Android werden in der Anfrage ein spezielles Symbol und eine spezielle Farbe festgelegt, die auf Android-Geräten angezeigt werden sollen. Wie in der Referenz für AndroidNotification angegeben, wird die Farbe im Format #rrggbb angegeben und das Bild muss eine drawable-Symbolressource sein, die lokal in der Android-App gespeichert ist.
Hier ein Beispiel für den visuellen Effekt auf dem Gerät eines Nutzers:
![]()
Node.js
const topicName = 'industry-tech';
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.'
},
android: {
notification: {
icon: 'stock_ticker_update',
color: '#7e55c3'
}
},
topic: topicName,
};
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
Message message = Message.builder()
.setNotification(Notification.builder()
.setTitle("$GOOG up 1.43% on the day")
.setTitle("$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.")
.build())
.setAndroidConfig(AndroidConfig.builder()
.setTtl(3600 * 1000)
.setNotification(AndroidNotification.builder()
.setIcon("stock_ticker_update")
.setColor("#f45342")
.build())
.build())
.setApnsConfig(ApnsConfig.builder()
.setAps(Aps.builder()
.setBadge(42)
.build())
.build())
.setTopic("industry-tech")
.build();
Python
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.',
),
android=messaging.AndroidConfig(
ttl=datetime.timedelta(seconds=3600),
priority='normal',
notification=messaging.AndroidNotification(
icon='stock_ticker_update',
color='#f45342'
),
),
apns=messaging.APNSConfig(
payload=messaging.APNSPayload(
aps=messaging.Aps(badge=42),
),
),
topic='industry-tech',
)
Go
oneHour := time.Duration(1) * time.Hour
badge := 42
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.",
},
Android: &messaging.AndroidConfig{
TTL: &oneHour,
Notification: &messaging.AndroidNotification{
Icon: "stock_ticker_update",
Color: "#f45342",
},
},
APNS: &messaging.APNSConfig{
Payload: &messaging.APNSPayload{
Aps: &messaging.Aps{
Badge: &badge,
},
},
},
Topic: "industry-tech",
}
C#
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.",
},
Android = new AndroidConfig()
{
TimeToLive = TimeSpan.FromHours(1),
Notification = new AndroidNotification()
{
Icon = "stock_ticker_update",
Color = "#f45342",
},
},
Apns = new ApnsConfig()
{
Aps = new Aps()
{
Badge = 42,
},
},
Topic = "industry-tech",
};
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":"industry-tech",
"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."
},
"android":{
"notification":{
"icon":"stock_ticker_update",
"color":"#7e55c3"
}
}
}
}
Weitere Informationen zu den Schlüsseln, die in plattformspezifischen Blöcken im Inhalt der Nachricht verfügbar sind, finden Sie auf der Seite HTTP v1-Referenz.
Benachrichtigung mit einem benutzerdefinierten Bild
Hinweise:
- Bilder für Benachrichtigungen sind auf eine Größe von 1 MB beschränkt und unterliegen ansonsten der integrierten Bildunterstützung von Android.
- Damit Sie Benachrichtigungsbilder in einer Apple-App empfangen und verarbeiten können, müssen Sie eine Notification Service Extension hinzufügen. Mit der Erweiterung für den Benachrichtigungsdienst kann Ihre App das in der FCM-Nutzlast bereitgestellte Bild verarbeiten, bevor die Benachrichtigung für den Endnutzer angezeigt wird. Ein Codebeispiel finden Sie unter Erweiterung für den Benachrichtigungsdienst einrichten.
- Bilder, die mit dem Notifications Composer hochgeladen werden, dürfen maximal 300 KB groß sein.
- Für Bilder, die in Cloud Storage gespeichert oder von dort bereitgestellt werden, gelten die standardmäßigen Kontingentlimits.
Legen Sie in der Sendeanfrage für die Benachrichtigung die folgenden Optionen fest, damit der empfangende Client das in der Nutzlast enthaltene Bild verarbeiten kann:
- Legen Sie für Android die folgende AndroidConfig-Option fest:
notification.imagemit der Bild-URL
- Legen Sie für iOS die folgenden ApnsConfig-Optionen fest:
fcm_options.imagemit der Bild-URL. Apple verlangt, dass die Bild-URL eine gültige Dateiendung enthält, damit der Ressourcentyp korrekt identifiziert werden kann.headers({ "mutable-content": 1})
Mit der folgenden Sendeanfrage wird ein allgemeiner Benachrichtigungstitel an alle Plattformen gesendet, aber auch ein Bild. Hier ein Beispiel für den visuellen Effekt auf dem Gerät eines Nutzers:

Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: 'Sparky says hello!'
},
android: {
notification: {
imageUrl: 'https://foo.bar.pizza-monster.png'
}
},
apns: {
payload: {
aps: {
'mutable-content': 1
}
},
fcm_options: {
image: 'https://foo.bar.pizza-monster.png'
}
},
webpush: {
headers: {
image: 'https://foo.bar.pizza-monster.png'
}
},
topic: topicName,
};
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);
});
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":"industry-tech",
"notification":{
"title":"Sparky says hello!",
},
"android":{
"notification":{
"image":"https://foo.bar/pizza-monster.png"
}
},
"apns":{
"payload":{
"aps":{
"mutable-content":1
}
},
"fcm_options": {
"image":"https://foo.bar/pizza-monster.png"
}
},
"webpush":{
"headers":{
"image":"https://foo.bar/pizza-monster.png"
}
}
}
}
Weitere Informationen zu den Schlüsseln, die in plattformspezifischen Blöcken im Inhalt der Nachricht verfügbar sind, finden Sie auf der Seite HTTP v1-Referenz.
Benachrichtigung mit einer verknüpften Klickaktion
Mit der folgenden Sendeanfrage wird ein allgemeiner Benachrichtigungstitel an alle Plattformen gesendet. Außerdem wird eine Aktion gesendet, die die App als Reaktion auf die Interaktion des Nutzers mit der Benachrichtigung ausführen soll. Hier ein Beispiel für den visuellen Effekt auf dem Gerät eines Nutzers:

Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: 'Breaking News....'
},
android: {
notification: {
clickAction: 'news_intent'
}
},
apns: {
payload: {
aps: {
'category': 'INVITE_CATEGORY'
}
}
},
webpush: {
fcmOptions: {
link: 'breakingnews.html'
}
},
topic: topicName,
};
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);
});
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1