Как отправлять пакеты из миллионов push-уведомлений с помощью Amazon Simple Notification Service (SNS)

Как и во многих других компаниях, той, в которой я работаю, неудобно использовать APNS от Apple: нет официальной библиотеки, потоки, которые отключаются случайным образом, и т. Д. То же самое и с системой push Android: ограничено небольшими партиями, полностью отличается от APNS от Apple ... Вот почему мы ищем альтернативу, и когда Amazon заявила, что может отправлять миллионы push-уведомлений почти бесплатно, мы подумали, что SNS будет идеальным решением.

Проблема в том, что нам часто приходится обращаться к более чем одному миллиону устройств, и, очевидно, наши push-кампании редко нацелены на одни и те же устройства. Насколько мы выяснили, единственное решение - использовать API AWS, который предоставляет только метод для создания конечных точек по одной за раз! Для нас это очень важно, потому что после некоторого тестирования мы выяснили, что для создания 1 000 000 конечных точек потребуется примерно 15 часов (~ 17 вызовов в секунду).

Даже после того, как все конечные точки созданы, чтобы отправить все push-уведомления сразу, конечные точки необходимо добавить в тему, и, опять же, это нужно делать по одной конечной точке за раз (так что еще 15 часов). Событие, если бы мы распределили наши вызовы, скажем, до 30 потоков, это все равно заняло бы час!

Итак, может ли кто-нибудь сказать нам, есть ли что-то, что мы пропустили? Неужели Amazon действительно ожидает, что мы заполним их веб-сервисы в течение 30 часов, чтобы создать кампанию с одним push? Как они могут притвориться, что отправляют миллион толчков в секунду, если на его подготовку уходит часы? Работают ли они над пакетным API для SNS? Можно ли подключить базу данных Amazon, содержащую токены, для кормления темы SNS?


comment
Могу я спросить, вы выполняли всю эту работу синхронно? Ожидаете создания одной EndpointArn перед созданием следующей? Я сделаю то же самое, что и вы, но все вызовы должны быть асинхронными. Я просто пытаюсь предугадать, что я могу испытать, основываясь на том, что испытали вы. Спасибо.   -  person Eric Olson    schedule 22.10.2014
comment
Здесь та же проблема. Amazon добавил мою учетную запись в запрос функции, но мы знаем, что это мало что значит. Вместо того, чтобы беспокоиться о подписке наших пользователей на темы, мы просто отправляем сообщения прямо в API публикации, поскольку это то же самое. Все еще требует времени, мы должны иметь возможность сбрасывать 10 000 в минуту. Сумасшедший Amazon не поддерживает массовые запросы   -  person Mike Miller    schedule 22.01.2015
comment
Существует определенный лимит запросов, который вы можете выполнить с экземпляра EC2. Но Amazon не сообщает вам, сколько их ... Итак, вам следует запустить около 15 экземпляров t2.micro, чтобы у каждого EC2 был свой лимит запросов. При таком подходе ваш процесс завершится в 15 раз быстрее.   -  person Barbaros Alp    schedule 19.08.2015
comment
Невероятно, но это не поддерживается AWS - продвижение в SNS является второстепенным и не может использоваться в реальных сценариях.   -  person RunLoop    schedule 29.09.2015


Ответы (1)


Похоже, Amazon предоставляет несколько методов добавления конечных точек / токенов, включая импортер CSV (но ограничен 2 МБ CSV-файлов за раз). Они также предоставляют API и образец Java-приложения для массовой загрузки токенов (ссылка).

К точке подписки на тему обращается сотрудник Amazon SNS здесь, по сути, объясняя, что, к сожалению, для этого не существует пакетного API.

Есть несколько других сторонних поставщиков push-уведомлений, которые могут лучше удовлетворить ваши потребности, когда дело доходит до частого создания пользовательских сегментов / тем:

  1. OneSignal (раскрытие информации: я управляю этой компанией)
  2. MixPanel
  3. Анализировать
person Gdeglin    schedule 20.06.2014
comment
Сегодня Mixpanel не поддерживает систему обмена сообщениями Amazon (ADM). Не уверен, поддерживает ли Parse ADM. - person Tobliug; 22.10.2015
comment
Привет, Гдеглин, у меня тоже есть похожая проблема, и мы думаем об использовании oneSignal. Мы хотим отправлять каждому пользователю персонализированное уведомление. Как я могу использовать onesignal для персонализированного уведомления более миллиона пользователей? - person pankaj; 14.10.2016
comment
@pankaj Привет! Пожалуйста, откройте новую ветку stackoverflow по этому вопросу или свяжитесь с командой OneSignal по адресу [email protected] для получения рекомендаций. - person Gdeglin; 15.10.2016
comment
@Gdeglin опубликовал как новый вопрос: http://stackoverflow.com/questions/40083914/sending-personalized-push-notifications-using-onesignal - person pankaj; 17.10.2016
comment
@Gdeglin - Как OneSignal может предложить все это бесплатно? Как я, как клиент, могу рассчитывать, что вы будете примерно через 2 года? Parse был бесплатным, поддерживался FB, и его все же пришлось закрыть. - person Pritam Barhate; 19.10.2016
comment
Меня не беспокоит бесплатная часть, меня беспокоит Мы зарабатываем деньги, используя данные, которые мы собираем, для улучшения работы в Интернете и на мобильных устройствах. Мы также предлагаем индивидуальные решения для корпоративных клиентов. Мне интересно, что такое улучшение работы в Интернете и на мобильных устройствах и что вы на самом деле делаете с данными. - person ; 23.07.2017