Как я могу использовать TTL, чтобы предотвратить отставание сообщений при использовании Firebase Cloud Messaging с Django-Push-Notifications?

Я работаю с Firebase Cloud Messaging в Django, используя https://github.com/jazzband/django-push-notifications для доставки push-уведомлений нашим пользователям через уведомления на рабочем столе.

После полного закрытия браузера (например, когда компьютер выключен) наши пользователи получают список всех уведомлений, отправленных ранее при следующей загрузке.

Хотя бывают ситуации, когда пользователь хотел бы получить всю очередь сообщений, это не одна из них.

Кажется, что ответ - установить TTL=0, как указано в этом разделе документации FCM, но мои попытки не привели к желаемому поведению.

Пожалуйста, помогите мне лучше понять TTL в этом контексте. Если TTL - правильный путь, как правильно отформатировать TTL вsend_message() используя django-push-notifications, чтобы сообщения не накапливались, если не были доставлены немедленно?

Вот что я пытался:

devices.send_message(
    body,
    TTL=0,
    time_to_live=0,
    link='blah',
    extra={'title': 'blah blah', 'icon': '/foo/bar.png'}
)

1 ответ

Формат, который вы отправляете, отличается от того, который указан в связанной документации. Из документации:

{
  "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"
      }
    }
  }
}

Ключевым моментом здесь является то, что время жизни сообщения webpush устанавливается в webpush/headers/TTL, пока вы добавляете его на верхний уровень.