Опрос против.Push – есть ли причины избегать push-уведомлений?

StackOverflow https://stackoverflow.com//questions/20019104

Вопрос

Я только что унаследовал проект приложения для Android в качестве (технического) менеджера по продукту, который использует 5-секундный таймер для опроса удаленного URL-адреса чтобы узнать, завершена ли какая-либо работа, инициированная приложением.Моей первой реакцией, конечно, было предложение замените это механизмом push/уведомлений, желательно встроенный в Android GCM, чтобы работа была перенесена из приложения на телефоне и перенесена на серверную часть.

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

Контра-пуш / Опрос за

  1. -
  2. -
  3. Для реализации push-уведомлений необходима работа на стороне сервера
  4. -
  5. Нет прямого способа узнать, было ли успешно доставлено push-уведомление.
  6. Масштабирование доставки push-уведомлений может оказаться непростой задачей

Опрос за/против

  1. Работа удалена с устройства
    • Меньшее использование полосы пропускания
    • Меньшее использование батареи
    • Более отзывчивое приложение и устройство
  2. Нагрузка на сервер снижается, поскольку устройства не опрашивают каждые x секунд, даже если ничего не изменилось (DDOS)
  3. -
  4. Push выполняется быстрее (более отзывчиво), чем 5 секунд (текущий таймер)
  5. Доказательство доставки push-уведомления тривиально реализовать с помощью опроса удаленного URL-адреса (здесь это имеет смысл).
  6. Масштабирование доставки push-уведомлений — это решаемая проблема для множества проектов с открытым исходным кодом и тривиальной реализации с очередью сообщений.

  • Есть ли другие причины избегать push-уведомлений и использовать опрос для этого варианта использования?
  • Есть ли какие-либо другие причины избегать опросов и использовать push-уведомления в этом случае?
  • Какие еще важные вещи я забыл?
Это было полезно?

Решение

Невозможно узнать, было ли push-уведомление успешно доставлено.

Конечно, есть:подключите устройство к вашему серверу после получения push-сообщения.В любом случае вам может потребоваться это сделать, если полезная нагрузка превышает 4K.

Масштабирование доставки push-уведомлений может оказаться непростой задачей

Он работает для довольно больших баз пользователей (например, RememberTheMilk), и это было еще до появления решения постоянных сокетов на основе XMPP.

Есть ли какие-либо другие причины избегать push-уведомлений и использовать опрос для этого варианта использования?

GCM не дает никаких гарантий уровня обслуживания.GCM специфичен для Android;вы можете рассмотреть возможность создания оболочки вокруг него, например Amazon SNS, если вы ищете что-то, что будет работать с другими клиентскими операционными системами.Решения Push с участием третьих сторон, таких как Google, означают, что полезная нагрузка вашего необработанного push-сообщения будет видна серверам этих третьих сторон;пожалуйста, используйте подходящее шифрование на уровне приложения, если это вас беспокоит (и так и должно быть).

Есть ли какие-либо другие причины избегать опросов и использовать push-уведомления в этом случае?

Пятисекундный опрос делает $BABY_DEITY плакать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top