Почему предпочтительно использовать GCM для push-уведомлений?

Я знаю, это так. Но я не понимаю, почему?

Почему бы просто не отправлять запросы на сервер периодически? Конечно, это может разрядить аккумулятор и увеличить интернет-трафик. Я понимаю, это. Но как использование Google Cloud Messaging может устранить эти проблемы?

Я нашел ответ. Но это не совсем понятно для меня.

Кто-нибудь может дать мне четкое объяснение?

1 ответ

Решение

Допустим, у вас есть 50 приложений на вашем телефоне, которые не используют GCM. Каждый разработчик приложения решает, что целесообразно опрашивать соответствующий бэкэнд раз в минуту.

Поскольку это все отдельные приложения, каждый вызов, скорее всего, не будет происходить одновременно с другим вызовом API. Самое большое поражение от батареи - это когда радио в устройстве Android должно включиться после отключения, чтобы сделать вызов API, поэтому множественные вызовы, происходящие с интервалами времени между разрядами, быстрее (читайте эту статью на машине состояния радиомодуля для лучше понять, почему это https://developer.android.com/training/efficient-downloads/efficient-network-access.html)

Кроме того, каждое приложение будет работать с отдельной конечной точкой. Каждый раз, когда вы делаете вызов API, вы должны пройти через процесс подключения для данного сервера. С помощью пакетных запросов API или HTTP 2.0 можно оптимизировать несколько вызовов, отправляемых на один и тот же сервер, без необходимости повторного установления связи или процесса подключения.

Теперь представьте, что все 50 приложений используют GCM. GCM будет опрашивать конечную точку через некоторый регулярный промежуток времени от имени всех 50 приложений. Допустим, GCM опрашивает сервер раз в минуту, на который все серверные части соответствующих приложений отправляют свои уведомления на устройство. Вы сократили 50 различных вызовов API со странной синхронизацией, которые могут включать и выключать батарею, до одного вызова API. Вы будете использовать меньше данных для опроса. Вы не несете стоимость шага подключения HTTP-вызова к 50 различным серверам. Кроме того, Google использует тот же опрос, который уже используется для проверки обновлений ОС, поэтому использование GCM не требует дополнительных затрат в сети (эта информация основана на старых документах. Какую технологию использует GCM (Google Cloud Messaging)?)

Кроме того, см. Это объяснение непосредственно на веб-сайте Android в статье, озаглавленной "Минимизация влияния регулярных обновлений" ( http://developer.android.com/training/efficient-downloads/regular_updates.html):

Каждый раз, когда ваше приложение опрашивает ваш сервер, чтобы проверить, требуется ли обновление, вы активируете беспроводную радиостанцию, потребляя энергию без необходимости, на срок до 20 секунд при обычном соединении 3G.

Google Cloud Messaging для Android (GCM) - это легкий механизм, используемый для передачи данных с сервера в конкретный экземпляр приложения. Используя GCM, ваш сервер может уведомить ваше приложение, работающее на определенном устройстве, о наличии новых данных для него.

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

В результате уменьшается количество ненужных подключений и уменьшается задержка для обновления данных в вашем приложении.

GCM реализован с использованием постоянного соединения TCP/IP. Несмотря на то, что возможно реализовать собственный push-сервис, рекомендуется использовать GCM. Это минимизирует количество постоянных соединений и позволяет платформе оптимизировать пропускную способность и минимизировать связанное с этим влияние на срок службы батареи.

Другие вопросы по тегам