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 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.