Открыть сервис

Google Cloud Messaging

Google Cloud Messaging (GCM) — это бесплатный сервис от компании Google, предназначенный для передачи данных (push-уведомлений) от серверов приложений на мобильные устройства под управлением операционной системы Android, а также на веб-приложения, работающие в браузере Google Chrome. Сервис выступал в роли посредника (брокера), обеспечивая надёжную и энергоэффективную доставку сообщений, не требуя от приложения постоянно поддерживать активное сетевое соединение с сервером. В 2016 году Google объявила о прекращении поддержки GCM и переходе на его преемника — Firebase Cloud Messaging (FCM).

История

Предпосылки и запуск

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

В июне 2012 года на конференции Google I/O был анонсирован Google Cloud Messaging как эволюция C2DM. GCM устранил многие недостатки предшественника: предоставил простой REST API, снял ограничения на количество отправляемых сообщений, добавил поддержку Chrome и упростил процесс регистрации приложений.

Развитие и замена

В течение нескольких лет GCM активно развивался. В 2014 году была добавлена поддержка уведомлений для веб-приложений через Chrome. В 2015 году сервис получил возможность отправлять «топик-сообщения» (topic messages), позволяющие подписывать устройства на определённые темы и получать сообщения по ним без необходимости указывать конкретные идентификаторы устройств.

В мае 2016 года Google анонсировала Firebase Cloud Messaging (FCM) — новый сервис, построенный на базе GCM, но интегрированный в платформу Firebase. FCM унаследовал все возможности GCM, добавив при этом улучшенную аналитику, A/B-тестирование уведомлений, автоматическую отправку на основе данных и более простую настройку. Google рекомендовала разработчикам мигрировать на FCM, а 29 мая 2019 года официально прекратила поддержку GCM, после чего старые API перестали работать. Все существующие проекты на GCM были автоматически перенесены на FCM.

Архитектура и принцип работы

Основные компоненты

Архитектура GCM включала три ключевых элемента:

  1. Сервер приложения (App Server) — серверная часть разработчика, которая отправляет сообщения через GCM-серверы Google.
  2. GCM-серверы Google — центральные серверы, принимающие сообщения от сервера приложения и доставляющие их на целевые устройства.
  3. Клиентское приложение — приложение на устройстве пользователя (Android или Chrome), которое регистрируется для получения сообщений.

Процесс доставки

  1. Регистрация: При первом запуске приложение обращается к GCM-серверу и получает уникальный идентификаторRegistration ID (токен). Этот токен передаётся на сервер приложения и используется для идентификации устройства.
  2. Отправка: Когда сервер приложения хочет отправить уведомление, он формирует HTTP-запрос (POST) к GCM-серверу по адресу https://android.googleapis.com/gcm/send`. В запросе указываются:
  • Registration ID получателя (или список ID).
  • Ключ авторизации (API Key), полученный разработчиком в консоли Google.
  • Полезная нагрузка (payload) — данные, которые будут переданы приложению (например, текст сообщения, заголовок, иконка).
  1. Доставка: GCM-сервер принимает запрос, проверяет авторизацию, находит устройство по Registration ID и отправляет ему сообщение. Если устройство офлайн, сообщение ставится в очередь и доставляется при восстановлении соединения. Время хранения сообщения в очереди по умолчанию составляло 4 недели.
  2. Обработка: На устройстве операционная система Android получает сообщение и передаёт его целевому приложению. Приложение может обработать данные в фоновом режиме (например, загрузить новые данные) или отобразить уведомление в строке состояния.

Типы сообщений

GCM поддерживал два основных типа сообщений:

  • Сообщения-уведомления (Notification messages): Обрабатываются системой Android напрямую. Приложение получает готовое уведомление с заголовком, текстом и иконкой, которое отображается в строке состояния. Разработчик не может изменить поведение при получении такого сообщения (оно либо отображается, либо нет).
  • Сообщения-данные (Data messages): Содержат произвольный набор пар «ключ-значение». Приложение получает эти данные и само решает, что с ними делать: показать уведомление, обновить интерфейс, запустить фоновую задачу. Этот тип давал разработчику полный контроль.

Классификация и характеристики

Основные возможности

  • Бесплатность: Сервис не взимал плату за отправку сообщений, что делало его доступным для разработчиков любого масштаба.
  • Масштабируемость: GCM был рассчитан на миллиарды устройств и мог обрабатывать огромные объёмы сообщений.
  • Энергоэффективность: Использование единого постоянного соединения с серверами Google вместо множества соединений от разных приложений существенно экономило заряд батареи.
  • Надёжность: Сервис гарантировал доставку сообщений (с учётом очередей для офлайн-устройств) и предоставлял механизмы повторной отправки при сбоях.
  • Безопасность: Передача данных осуществлялась по зашифрованному каналу (HTTPS). Для авторизации сервера приложения использовался API Key.
  • Многоплатформенность: Поддержка Android (начиная с версии 2.2) и Chrome (настольного и мобильного).

Ограничения

  • Размер сообщения: Максимальный размер полезной нагрузки составлял 4 КБ (4096 байт). Для передачи больших объёмов данных требовалось использовать другие механизмы (например, загружать данные по ссылке из сообщения).
  • Зависимость от Google Play Services: На Android для работы GCM требовалось наличие установленных сервисов Google Play (Google Play Services). На устройствах без них (например, в некоторых китайских смартфонах или кастомных прошивках) сервис не работал.
  • Отсутствие гарантии мгновенной доставки: Хотя сервис старался доставлять сообщения как можно быстрее, задержки могли возникать из-за перегрузки сети, состояния устройства или настроек энергосбережения.

Применение

Мобильные приложения

GCM широко использовался в самых разных категориях Android-приложений:

  • Социальные сети и мессенджеры: Уведомления о новых сообщениях, лайках, комментариях, запросах в друзья.
  • Новостные и информационные приложения: Оповещения о выходе новых статей, срочных новостях, изменениях курсов валют.
  • Игры: Уведомления о завершении строительства, приглашения от друзей, бонусы за возвращение в игру.
  • Электронная коммерция: Оповещения о статусе заказа, скидках, брошенных корзинах.
  • Бизнес-приложения: Уведомления о новых задачах, встречах, изменениях в документах.

Веб-приложения (Chrome)

GCM также позволял отправлять push-уведомления на веб-сайты, открытые в браузере Google Chrome (как на десктопе, так и на Android). Для этого использовался API Service Worker. Это давало возможность сайтам оповещать пользователей о новых событиях даже после закрытия вкладки с сайтом. Примеры: уведомления о новых письмах в Gmail, о новых сообщениях в Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ), о завершении загрузки файла.

Критика и недостатки

Основные претензии к GCM были связаны с его зависимостью от инфраструктуры Google. В регионах, где сервисы Google были заблокированы или ограничены (например, в Китае), GCM не работал, что вынуждало разработчиков создавать собственные альтернативные системы push-уведомлений. Также критиковалась ограниченная документация и сложность отладки на ранних этапах. Некоторые разработчики отмечали, что на устройствах с агрессивными настройками энергосбережения GCM мог задерживать доставку сообщений на неопределённое время.

Наследие

Google Cloud Messaging стал важным этапом в развитии мобильной экосистемы Android. Он предоставил разработчикам стандартизированный, надёжный и бесплатный инструмент для взаимодействия с пользователями, что способствовало росту популярности платформы. Несмотря на то, что сервис был упразднён, его архитектура и принципы работы легли в основу Firebase Cloud Messaging, который продолжает выполнять те же функции, но с более широкими возможностями и интеграцией с другими сервисами Firebase.

Источники

  • Официальная документация Google Cloud Messaging (архивная версия)
  • Документация Firebase Cloud Messaging
  • Анонс GCM на Google I/O 2012
  • Статья «Google Cloud Messaging for Android» на сайте Android Developers Blog
  • Объявление о прекращении поддержки GCM (2019)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →