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 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. Beispiele sind Benachrichtigungen über einen eingehenden Anruf oder Einladungen zu Veranstaltungen.
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. Er 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 zu Veranstaltungen
- Kalendertermine
Ein weiterer Vorteil der Angabe der Lebensdauer einer Nachricht besteht darin, dass
FCM die Drosselung von Nachrichten mit reduzierter Priorität nicht auf Nachrichten mit einem
Wert für die 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 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 Stromsparmodus befindet, wird eine Nachricht mit niedriger Priorität von
FCM gespeichert, bis das Gerät den Stromsparmodus 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, sofern das Flag ttl nicht festgelegt ist. 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 Berichtsdashboard. 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.