FCM stellt Nachrichten in der Regel sofort nach dem Senden zu. Das ist jedoch nicht immer möglich. Das Gerät ist beispielsweise nicht erreichbar oder FCM verzögert Nachrichten absichtlich, um zu verhindern, dass eine App zu 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 kein Problem, aber es gibt einige Apps, bei denen Benachrichtigungen ohne Verzögerung gesendet werden müssen. 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 zwischen 0 und 2.419.200 Sekunden (28 Tage) sein und entspricht dem maximalen Zeitraum, in dem FCM die Nachricht speichert und versucht, sie zuzustellen. Standardmäßig laufen Anfragen, die dieses Feld nicht enthalten, nach maximal vier Wochen ab.
Unter iOS können Sie den apns-expiration Header im
ApnsConfig
Objekt festlegen. Weitere Informationen finden Sie in der Apple-Dokumentation unter Sending
notification requests to
APNs.
Hier sind einige mögliche Anwendungsfälle für diese Funktion:
- Eingehende Videoanrufe
- Ablaufende Einladungen
- Kalendertermine
Ein weiterer Vorteil der Angabe der Lebensdauer einer Nachricht besteht darin, dass
FCM keine Drosselung für zusammenfassbare Nachrichten auf Nachrichten mit einem
TTL-Wert 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 mit TTL:
{
"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 App-Server 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 sie zur Zustellung akzeptiert wurde. Wann die Nachricht zugestellt wird, hängt von vielen Faktoren ab.
Wenn das Gerät verbunden ist, sich aber im Standby-Modus befindet, wird eine Nachricht mit niedriger Priorität von
FCM gespeichert, bis das Gerät den Standby-Modus verlässt. Wenn das collapse_key festgelegt ist und
eine vorhandene Nachricht mit demselben Collapse
Key und
Registrierungstoken auf die Zustellung wartet, wird die alte Nachricht verworfen und dann
die neue Nachricht nimmt ihren Platz ein. Wenn der Collapse-Key jedoch nicht festgelegt ist, werden sowohl die neue als auch die alte Nachricht 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, FCM
stellt alle ausstehenden Nachrichten an das Gerät zu. Wenn das Gerät nie wieder verbunden wird, läuft die Nachricht schließlich ab und wird aus dem FCM
Speicher verworfen. Das Standard-Timeout beträgt vier Wochen, es sei denn, das Flag ttl ist festgelegt. Wenn die
App deinstalliert wurde, als FCM versucht, eine Nachricht an das
Gerät zu senden, verwirft FCM diese Nachricht sofort und macht das
Registrierungstoken ungültig. Zukünftige Versuche, eine Nachricht an dieses Gerät zu senden, führen zu einem NotRegistered-Fehler.
Wenn ein Android-Gerät seit mehr als einem Monat keine Verbindung zu FCM hergestellt 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
onDeletedMessages()
Callback.
Weitere Informationen zur Zustellung von Nachrichten auf Android- oder Apple-Plattformen finden Sie im FCM Bericht-Dashboard. Dort wird die Anzahl der Nachrichten erfasst, die auf Apple- und Android-Geräten gesendet und geöffnet wurden, sowie Daten zu Impressionen für Android-Apps.