Как работает технология push notification на Android?


Как Google реализовал свою функцию уведомления толчка? Работает ли он через опрос, выполняемый службой, работающей в фоновом режиме или по-другому?

4 165

4 ответа:

из того, что я слышал во время конференции разработчиков Android в Израиле:

там просто TCP сокет ждет в принять режим на облачном сервере Google. TCP-соединение было инициировано приложением Google Play. Вот почему Google Play должен быть установлен на устройстве для создания Google Cloud Messaging (GCM) (ранее Android Cloud to Device Messaging Service -C2DM) работы.

когда этот TCP-клиент сокет получает какое - то сообщение, в сообщении содержится такая информация, как имя пакета приложения, к которому оно должно быть адресовано, и конечно же-сами данные. Эти данные анализируются и упаковываются в намерение это транслируется и в конечном итоге получено приложением.

TCP-сокет остается открытым, даже когда состояние радио устройства переходит в режим "простоя". Приложения не должны быть запущены, чтобы получить намерения.

Подробнее http://developer.android.com/google/gcm/gcm.html

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

первый шаг в GCM заключается в том, что сторонний сервер (например, сервер электронной почты) отправляет запрос на сервер GCM Google. Этот сервер затем отправляет сообщение на устройство, через это открытое соединение. Система Android просматривает сообщение, чтобы определить, для какого приложения оно предназначено, и запускает это приложение. Приложение должно быть зарегистрировано в Android для использования GCM, и оно должно иметь соответствующее разрешение. Когда приложение запускается, оно может сразу создать уведомление с данными из сообщения. Сообщения GCM очень ограничены по размеру, поэтому приложение может вместо этого открыть обычное подключение к стороннему серверу, чтобы получить дополнительную информацию (например, загрузка заголовков новых писем).

преимущество использования push-уведомлений заключается в том, что приложения не должны запускаться через регулярные промежутки времени для проверки новых данных, экономя как энергию, так и данные. Преимущество наличия централизованного механизма, такого как GCM, заключается в том, что устройство нуждается только в одном открытом сетевом соединении, а система Android GCM-это единственное, что нужно продолжать работать, а не каждое приложение должно оставаться запущенным в фоновом режиме, чтобы сохранить свою собственную сеть подключение к собственному серверу.

от : источник Также смотрите здесь.

вы можете реализовать push-уведомление на android самостоятельно с длинным опросом tcp-соединения. Но это будет включать в себя поддержание дополнительного гнезда = > разряда батареи. Или вы можете открыть соединение через регулярные промежутки времени с помощью Диспетчера тревоги.

Google, вероятно, открывает один сокет для всех уведомлений C2DM push, следовательно, его более эффективная батарея.

Да, вы правы. У Google была служба (GTalk Service), и эта служба запрашивала серверы Google в некоторые периоды времени.