Наше приложение с более чем миллионом подписчиков сталкивается с огромными проблемами доставки с FCM. В последнее время стало хуже, и сервис уже почти не работает. Мы получаем ошибки, такие как:
{ code: 'messaging/message-rate-exceeded',
message: 'Topic quota exceeded.' },
codePrefix: 'messaging' }
Мы часто получаем эту ошибку. И, кажется, хуже по вечерам в ЕС / США. В некоторых случаях более 90% уведомлений не работают.
Мы находимся в контакте со службой поддержки Firebase, но пока, похоже, решения не найдено. Они дали нам много информации с некоторыми полезными фактами:
- ресурсы распределяются между разработчиками. Таким образом, максимальная скорость сообщений может отличаться из-за того, что другие разработчики занимают ресурсы.
- ИЛИ-запросы должны быть преобразованы в несколько И-запросов, потому что ИЛИ-запросы фактически генерируют сообщения для всей пользовательской базы, а затем применяется условие фильтрации
- 240 сообщений / минута и 5000 сообщений / час на одно устройство.
- ограничение количества исходящих сообщений 15 000 / мин на проект (мы этого не понимаем)
- ограничение количества входящих сообщений на устройство на уровне 1000 в минуту
Они также обновили свои документы на https://firebase.google.com/docs/cloud-messaging/concept-options#topics_throttling
Итак, мы знаем об ограничениях скорости сообщений и механизма разветвления. В нашем случае у нас примерно 6000 различных запросов на отправку тем в час и в среднем 10 000 подписчиков на тему.
Один пользователь никогда не получит более 50-100 уведомлений в час.
Мы считаем, что не нарушаем ограничения, установленные FCM.
Еще во времена GCM все работало нормально. Поэтому мы весьма недовольны нынешней ситуацией. Основные функциональные возможности приложения сейчас очень плохие. И решение, похоже, не там.
Мы рассматриваем возможность перехода на решение SSE.
Есть история о ком-то, кто успешно отошел от FCM
https://f -droid.org / ен / 2018/09/03 / замена-GCM-в-tutanota.html
Но так как Google в последнее время очень усложнил запуск фоновых процессов, мне интересно, что сделали другие люди с подобным опытом.
Или мы все еще можем исправить эту ситуацию?