Мне интересно, как работает система push-уведомлений?
Есть ли активное соединение TCP / IP, которое работает в фоновом режиме с серверами Google?
push-notifications
opc0de
источник
источник
Manifest
). Я мог бы вообразить, что какой-то сервис Google выполняет «настоящую работу», а приложение просто регистрирует «получателя». Приведенное выше описание было более «общим», а не специфичным для Android, и я постарался сделать его простым;)Ответы:
Да, Android поддерживает одно активное соединение с серверами Google, но не использует много энергии или данных, потому что по нему не передается трафик, пока что-то не отправит сообщение GCM в приложение на вашем телефоне. На телефоне есть только одно соединение, используемое всеми приложениями: установка нового приложения, использующего GCM, не добавляет дополнительной нагрузки.
Первый шаг в GCM заключается в том, что сторонний сервер (например, сервер электронной почты) отправляет запрос на сервер GCM Google. Затем этот сервер отправляет сообщение на ваше устройство через это открытое соединение. Система Android просматривает сообщение, чтобы определить, для какого приложения оно предназначено, и запускает это приложение. Приложение должно быть зарегистрировано в Android, чтобы использовать GCM, и оно должно иметь соответствующее разрешение. Когда приложение запускается, оно может сразу создать уведомление с данными из сообщения. Размер сообщений GCM очень ограничен, поэтому приложение может вместо этого открыть обычное соединение со сторонним сервером для получения дополнительной информации (например, загрузки заголовков новых писем).
Преимущество использования push-уведомлений заключается в том, что приложения не должны запускаться через регулярные промежутки времени для проверки новых данных, что экономит как энергию, так и данные. Преимущество наличия централизованного механизма, такого как GCM, состоит в том, что устройству требуется только одно открытое сетевое соединение, и единственной вещью, которая должна работать, является система Android GCM, а не каждое приложение, работающее в фоновом режиме для поддержания собственной сети. подключение к собственному серверу.
источник
Android OS теперь использует GCM (Google Cloud Messaging) для Push Notification WS. Вы можете получить лучшую идею здесь ; он предоставит вам архитектурный обзор службы полного push-уведомления с ее жизненным циклом.
Надеюсь, это поможет.
источник
Поздний ответ на старый вопрос, но стоит поставить его.
GCM устарел в апреле прошлого года 2018 года, и Google рекомендовал использовать вместо него FCM, что аналогично GCM.
источник