Firebase Cloud Messaging-Nachrichtentypen

Mit FCM können Sie zwei Arten von Nachrichten an Ihre Client-Apps senden:

  • Benachrichtigungen, ähnlich wie „Anzeigenachrichten“, werden vom FCM SDK automatisch verarbeitet. (Verwenden Sie unter Android mit AndroidConfigV2 RemoteNotification für alle Nachrichten, die eine für den Nutzer sichtbare Benachrichtigung anzeigen, damit sie ohne beabsichtigte Verzögerung zugestellt werden. Benachrichtigungen werden automatisch angezeigt, unabhängig davon, ob sich die App im Vordergrund oder im Hintergrund befindet, es sei denn, sie werden im Clientcode explizit stummgeschaltet.)
  • Daten-Nachrichten, die von der Client-App verarbeitet werden.

Benachrichtigungen enthalten einen vordefinierten Satz von für Nutzer sichtbaren Schlüsseln und können eine optionale Datennutzlast enthalten. Datennachrichten enthalten dagegen nur Ihre benutzerdefinierten Schlüssel/Wert-Paare. Die maximale Nutzlast für beide Nachrichtentypen beträgt 4.096 Byte, außer beim Senden von Nachrichten über die Firebase-Konsole, die eine Zeichenbeschränkung auf 1.000 Zeichen erzwingt.

Anwendungsszenario So sendest du Nachrichten
Benachrichtigung Das FCM SDK zeigt die Mitteilung im Namen der Client-App auf Endnutzergeräten an, wenn die App im Hintergrund ausgeführt wird. Wenn die App im Vordergrund ausgeführt wird, wenn die Benachrichtigung eingeht, wird das Verhalten durch den Code der App bestimmt.
  1. Verwenden Sie in einer vertrauenswürdigen Umgebung wie Cloud Functions oder Ihrem Anwendungsserver das Firebase Admin SDK oder die HTTP v1 API. Legen Sie den Schlüssel notification fest. Kann eine optionale Datennutzlast enthalten. Immer minimierbar.

    Sehen Sie sich einige Beispiele für Displaybenachrichtigungen und Nutzlasten für Sendeanfragen an.

  2. Verwenden Sie den Benachrichtigungs-Composer: Geben Sie den Nachrichtentext, den Titel usw. ein und senden Sie die Nachricht. Fügen Sie eine optionale Datennutzlast hinzu, indem Sie benutzerdefinierte Daten angeben.
Datennachricht Die Client-App ist für die Verarbeitung von Datennachrichten verantwortlich. Daten-Nachrichten enthalten nur benutzerdefinierte Schlüssel/Wert-Paare ohne reservierte Schlüsselnamen (siehe unten). Verwenden Sie in einer vertrauenswürdigen Umgebung wie Cloud Functions oder Ihrem Anwendungsserver die Firebase Admin SDK oder die HTTP v1 API. Legen Sie in der Sendeanfrage den Schlüssel data fest.

Sie können Benachrichtigungen verwenden, wenn das FCM SDK automatisch eine Benachrichtigung anzeigen soll, wenn Ihre App im Hintergrund ausgeführt wird. FCM kann eine Benachrichtigung mit einer optionalen Datennutzlast senden. In solchen Fällen zeigt FCM die Benachrichtigungsnutzlast an und die Client-App verarbeitet die Datennutzlast.

Sie können Datennachrichten verwenden, wenn Sie die Nachrichten mit Ihrem eigenen Client-App-Code verarbeiten möchten.

Benachrichtigungen

Sie können Benachrichtigungen über die Firebase-Konsole, die Firebase Admin SDK oder die FCM HTTP v1 API senden. Die Firebase-Konsole bietet analysebasierte A/B-Tests, mit denen Sie Ihre Benachrichtigungen optimieren und verbessern können.

Wenn Sie Benachrichtigungen mit der Firebase Admin SDK oder der FCM HTTP v1 API senden möchten, legen Sie den Schlüssel notification mit den vordefinierten Schlüssel/Wert-Optionen der Benachrichtigung fest. Anhand des folgenden Beispiels können Sie eine Benachrichtigung in einer IM-Anwendung formatieren.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

Benachrichtigungen werden in der Benachrichtigungsleiste angezeigt, wenn die App im Hintergrund ausgeführt wird. Bei Apps im Vordergrund werden Nachrichten von einer Callback-Funktion verarbeitet.

Eine vollständige Liste der vordefinierten Schlüssel, die zum Erstellen von Benachrichtigungen verfügbar sind, finden Sie in der Referenzdokumentation zum FCM HTTP v1 API-Benachrichtigungsobjekt.

Datennachrichten

Es liegt bei dir, wie du die FCM-Nutzlast data verwendest, um das Verschlüsselungsschema deiner Wahl zu implementieren. Achten Sie darauf, dass Sie in Ihren benutzerdefinierten Schlüssel/Wert-Paaren keine reservierten Wörter verwenden. Zu den reservierten Wörtern gehören from, message_type oder jedes Wort, das mit google., gcm. oder gcm.notification. beginnt.

Das folgende Beispiel zeigt die Verwendung des allgemeinen Datenfelds auf oberster Ebene, das von Clients auf allen Plattformen interpretiert wird, die die Nachricht empfangen. Auf jeder Plattform empfängt die Client-App die Datennutzlast in einer Callback-Funktion.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

Benachrichtigungen mit optionaler Datennutzlast

Sie können Benachrichtigungen, die eine optionale Nutzlast mit benutzerdefinierten Schlüssel/Wert-Paaren enthalten, programmatisch oder über die Firebase Console senden. Verwenden Sie im Benachrichtigungs-Composer die Felder für Benutzerdefinierte Daten unter Erweiterte Optionen.

Das Verhalten der App beim Empfang von Nachrichten, die sowohl Benachrichtigungs- als auch Datennutzlasten enthalten, hängt davon ab, ob die App im Hintergrund oder im Vordergrund ausgeführt wird, also ob sie zum Zeitpunkt des Empfangs aktiv ist oder nicht.

  • Im Hintergrund erhalten Apps die Benachrichtigungsnutzlast in der Benachrichtigungsleiste und verarbeiten die Datennutzlast nur, wenn der Nutzer auf die Benachrichtigung tippt.
  • Im Vordergrund empfängt Ihre App ein Nachrichtenobjekt, in dem beide Nutzlasten verfügbar sind.

Hier ist eine JSON-formatierte Nachricht, die sowohl den Schlüssel notification als auch den Schlüssel data enthält:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}