Следующие решения являются обходным решением, если нет возможности отправить уведомление о теме в пакете.
1. Задержка времени отображения уведомления на стороне приложения.
После получения уведомления о приложении вы можете решить, когда показывать его пользователю. Напишите логику таким образом, чтобы, скажем, некоторые пользователи увидели уведомление сразу же после его получения, некоторые увидят его через 2 минуты, другие увидят его через 4 минуты и т. Д.
Вы можете использовать AlarmManager , Обработчик или что-то подобное.
2. Создать ведро из тем
Предположим, у вас есть тема sport_news
. Разделите основную тему sport_news
на sport_news_1
, sport_news_2
, sport_news_3
и так далее. Реализуйте свою собственную логику, чтобы разделить пользователей.
Например
пользователей, зарегистрированных в первый день, попадут в sport_news_1
пользователи, зарегистрированные в день 2, попадут в sport_news_2
и т. Д.
Таким образом, всякий раз, когда вам нужно отправить уведомление в тему sport_news
, вы отправите уведомление всем темам, которые ему принадлежат, в нашем случае это будет sport_news_1
, sport_news_2
и так далее. Вы можете отправить его через определенный интервал для обработки пакетов, поскольку у вас есть серверный элемент управления для отправки пакетов.
3. Масштабируйте сервер на определенный интервал для обработки большого трафика.
После отправки уведомления нескольким миллионам пользователей, зная, что вы получите высокий трафик, масштабируйте сервер в течение определенного времени для обработки большого трафика (скажем, 1-2 часа).
4. Увеличьте задержку ваших данных выборки api
Зная, что вы получите слишком много запросов для конкретного API данных выборки, вы можете реализовать кэширование, индексирование базы данных, в хранилище данных памяти или любой другой способ ускорить операцию выборки. Вам просто нужно найти способ как-то сократить время отклика для API выборки, и ваш сервер будет таким образом обслуживать большой трафик, и использование ЦП может уменьшиться.