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 in Ordnung, aber es gibt einige Apps, bei denen Benachrichtigungen ohne Verzögerung gesendet werden müssen. Das kann beispielsweise eine Benachrichtigung über einen eingehenden Anruf oder eine Einladung zu einer Veranstaltung sein.
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, maximal vier Wochen lang.
Unter iOS können Sie den apns-expiration
-Header im Objekt ApnsConfig festlegen. Weitere Informationen finden Sie in der Apple-Dokumentation zum Senden von Benachrichtigungsanfragen an APNs.
Hier sind einige mögliche Anwendungsbereiche für diese Funktion:
- Eingehende Videoanrufe
- Ablaufende Einladungsereignisse
- Kalendertermine
Ein weiterer Vorteil der Angabe der Lebensdauer einer Nachricht ist, dass FCM die Drosselung von minimierbaren Nachrichten nicht auf Nachrichten mit einem TTL-Wert von 0 Sekunden anwendet. Ein ttl
-Wert von 0 bedeutet, dass Nachrichten, die nicht sofort zugestellt werden können, verworfen werden. Da solche Nachrichten jedoch nie gespeichert werden, ist die Latenz beim Senden von Benachrichtigungen am geringsten.
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 auf dem Gerät zugestellt wurde. Stattdessen bedeutet es, dass es für die Lieferung angenommen wurde. Wann die Nachricht zugestellt wird, hängt von vielen Faktoren ab.
Wenn das Gerät verbunden ist, sich aber im Inaktivmodus befindet, wird eine Nachricht mit niedriger Priorität von FCM gespeichert, bis das Gerät den Inaktivmodus verlässt. Wenn collapse_key
festgelegt ist und eine vorhandene Nachricht mit demselben collapse_key und Registrierungstoken auf die Zustellung wartet, wird die alte Nachricht verworfen und durch die neue Nachricht ersetzt. Wenn der Schlüssel zum Minimieren 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, werden alle ausstehenden Nachrichten von FCM an das Gerät gesendet. Wenn das Gerät nie wieder verbunden wird, kommt es schließlich zu einer Zeitüberschreitung und die Nachricht wird aus dem FCM-Speicher verworfen. Die Standardzeitüberschreitung 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 die Nachricht sofort und macht das Registrierungstoken ungültig. Bei zukünftigen Versuchen, eine Nachricht an dieses Gerät zu senden, wird der Fehler NotRegistered
ausgegeben.
Wenn ein Android-Gerät seit mehr als einem Monat nicht mit FCM verbunden war, akzeptiert FCM die Nachricht zwar, verwirft sie aber sofort. Wenn das Gerät innerhalb von vier Wochen nach der letzten Datenmeldung, die Sie an das Gerät gesendet haben, eine Verbindung herstellt, empfängt Ihre Client-App den onDeletedMessages()
-Callback.
Wenn Sie mehr Informationen zur Zustellung von Nachrichten auf Android- oder Apple-Plattformen erhalten möchten, können Sie das FCM-Berichtsdashboard verwenden. Dort wird die Anzahl der Nachrichten erfasst, die auf Apple- und Android-Geräten gesendet und geöffnet wurden. Außerdem sind Daten zu Impressionen für Android-Apps verfügbar.