Требуется отписаться от тем FCM? - PullRequest
0 голосов
/ 14 февраля 2019

Я использую Firebase (FCM) в проекте, где я использую функцию тем для рассылки ежедневных уведомлений множеству разных пользователей в разных часовых поясах.Уведомления всегда рассылаются, когда время пользователя 12:00, для достижения этого я каждый день создаю уникальную тему для группы пользователей, которую я собираюсь уведомить.На данный момент наши темы могут выглядеть следующим образом: x_daily_notification_1550152751 - Ранее у меня была система, которая создавала статические темы на основе часового пояса, поэтому пользователи могли подписываться на такие темы, как: x_daily_notification_europe_london, но это оказалось слишком ненадежным и сложным для управления,из-за перемещения пользователей между часовыми поясами.

Принцип работы системы основан на исследованиях и советах, которые я сформулировал в конце прошлого года: Ограничения тем в FCM и истечение срока действия / аннулирование старых неиспользуемых тем?

Итак, подведем итоги:

  1. Массовая подписка пользователей на тему
  2. Через 5 минут отошлите тему.Задержка происходит из-за незнания того, ожидает ли FCM обработки всех массовых подписок, прежде чем отправлять уведомления
  3. через 10 минут после отправки темы, снова отмените подписку на все токены из темы, удалив тему из FCM.

Причина этих задержек в том, что я заметил, что иногда мы не получаем уведомлений.Единственная причина, по которой я могу придумать, заключается в том, что мы слишком быстро отправляем и отписываемся от темы, поэтому, если 100K пользователей будут уведомлены, и мы удалили их сразу, только немногие получат это.Похоже, что FCM не ожидает завершения одного запроса до обработки другого.

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

Мой реальный вопрос: нужно ли вообще отписываться?Это может привести к путанице на стороне Firebase, но, безусловно, у них есть системы, способные справиться с этим, поскольку в документации по очистке ничего не сказано.

...