Gültigkeitsdauer einer Nachricht festlegen

FCM stellt Nachrichten in der Regel sofort nach dem Senden zu. Das ist jedoch nicht immer möglich. Das Gerät ist beispielsweise möglicherweise nicht verfügbar oder FCM verzögert Nachrichten absichtlich, um zu verhindern, dass eine App übermäßig viele Ressourcen verbraucht und die Akkulaufzeit negativ beeinflusst.

In diesen Fällen speichert FCM die Nachricht und stellt sie so schnell wie möglich zu. In den meisten Fällen ist das in Ordnung, aber bei einigen Apps müssen Benachrichtigungen ohne Verzögerung gesendet werden. Beispielsweise eine Benachrichtigung über einen eingehenden Anruf oder eine Einladung zu einer Veranstaltung.

Unter Android und im Web können Sie die maximale Lebensdauer einer Nachricht angeben. Der Wert muss eine Dauer von 0 bis 2.419.200 Sekunden (28 Tage) sein und entspricht dem maximalen Zeitraum, in dem FCM die Nachricht speichert und versucht, sie zuzustellen. Anfragen, die dieses Feld nicht enthalten, sind standardmäßig maximal vier Wochen gültig.

Unter iOS können Sie den Header apns-expiration im Objekt ApnsConfig festlegen. Weitere Informationen finden Sie in der Apple-Dokumentation zum Senden von Benachrichtigungsanfragen an APNs.

Hier sind einige mögliche Anwendungsfälle für diese Funktion:

  • Eingehende Videoanrufe
  • Ablaufende Einladungsereignisse
  • Kalendertermine

Ein weiterer Vorteil der Angabe der Lebensdauer einer Nachricht besteht darin, dass FCM die Drosselung minimierbarer Nachrichten nicht auf Nachrichten mit einer Lebensdauer von 0 Sekunden anwendet. Beachten Sie, dass ein ttl-Wert von 0 bedeutet, dass Nachrichten, die nicht sofort zugestellt werden können, verworfen werden. Da solche Nachrichten jedoch nie gespeichert werden, bietet dies die beste Latenz für das Senden von Benachrichtigungen.

Hier ist ein Beispiel für eine Anfrage, die „ttl“ enthält:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    },
    "apns":{
      "headers":{
        "apns-expiration":"1604750400"
      }
    },
    "android":{
      "ttl":"4500s"
    },
    "webpush":{
      "headers":{
        "TTL":"4500"
      }
    }
  }
}

Lebensdauer einer Nachricht

Wenn ein Anwendungsserver eine Nachricht an FCM sendet und eine Nachrichten-ID zurückerhält, bedeutet das nicht, dass die Nachricht bereits an das Gerät zugestellt wurde. Stattdessen bedeutet es, dass die Nachricht zur Zustellung angenommen wurde. Wann die Nachricht zugestellt wird, hängt von vielen Faktoren ab.

Wenn das Gerät verbunden ist, sich aber im Stromsparmodus befindet, wird eine Nachricht mit niedriger Priorität von FCM gespeichert, bis das Gerät den Stromsparmodus verlässt. Wenn collapse_key festgelegt ist und eine vorhandene Nachricht mit demselben Minimierungsschlüssel und Registrierungstoken auf die Zustellung wartet, wird die alte Nachricht verworfen und die neue Nachricht tritt an ihre Stelle. Wenn der Minimierungsschlüssel jedoch nicht festgelegt ist, werden sowohl die neuen als auch die alten Nachrichten für die zukünftige Zustellung gespeichert.

Wenn das Gerät nicht mit FCM verbunden ist, wird die Nachricht gespeichert, bis eine Verbindung hergestellt wird. Wenn eine Verbindung hergestellt wird, stellt FCM alle ausstehenden Nachrichten an das Gerät zu. Wenn das Gerät nicht mehr verbunden wird, läuft die Nachricht irgendwann ab und wird aus dem FCM-Speicher gelöscht. Das Standardzeitlimit beträgt vier Wochen, sofern das Flag ttl nicht festgelegt ist. Wenn die App deinstalliert wurde, wenn FCM versucht, eine Nachricht an das Gerät zu senden, verwirft FCM diese Nachricht sofort und erklärt das Registrierungstoken für ungültig. Zukünftige Versuche, eine Nachricht an dieses Gerät zu senden, führen zu einem NotRegistered-Fehler.

Wenn sich ein Android-Gerät länger als einen Monat nicht mit FCM verbunden hat, akzeptiert FCM die Nachricht zwar, verwirft sie aber sofort. Wenn das Gerät innerhalb von vier Wochen nach der letzten Datennachricht, die Sie an das Gerät gesendet haben, eine Verbindung herstellt, erhält Ihre Client-App den Callback onDeletedMessages().

Wenn Sie mehr über die Zustellung von Nachrichten auf Android- oder Apple-Plattformen erfahren möchten, können Sie das FCM-Berichts-Dashboard verwenden. Dort wird die Anzahl der auf Apple- und Android-Geräten gesendeten und geöffneten Nachrichten sowie die Anzahl der Impressionen für Android-Apps erfasst.