Как я могу использовать TTL для предотвращения отставания в сообщениях при использовании Firebase Cloud Messaging с Django-Push-Уведомлениями? - PullRequest
0 голосов
/ 03 октября 2019

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 03 октября 2019

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

{
  "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, пока вы добавляете его на верхний уровень.

...