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

Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) — это кроссплатформенное облачное решение для отправки push-уведомлений и передачи данных между сервером приложений и клиентскими устройствами (мобильными приложениями на Android и iOS, веб-приложениями, а также приложениями для платформы Flutter). Разработано компанией Google, является преемником сервиса Google Cloud Messaging (GCM). FCM обеспечивает надёжную, масштабируемую и бесплатную доставку сообщений, используя инфраструктуру Google Cloud Platform.

История

Сервис Firebase Cloud Messaging был запущен в 2016 году как часть платформы Firebase, приобретённой Google в 2014 году. Он пришёл на смену Google Cloud Messaging (GCM), который был представлен в 2010 году. Основные причины перехода на FCM включали упрощение интеграции, улучшенную поддержку разных платформ и более гибкую модель доставки сообщений.

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

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

Архитектура FCM состоит из трёх основных компонентов:

  • Сервер приложений — серверная часть разработчика, которая инициирует отправку сообщений через API FCM.
  • Сервер FCM — облачная инфраструктура Google, отвечающая за маршрутизацию и доставку сообщений.
  • Клиентское приложение — приложение на устройстве пользователя, которое регистрируется в FCM и получает сообщения.

Процесс доставки сообщения включает несколько этапов:

  1. Регистрация клиента: При первом запуске приложение получает от FCM уникальный идентификаторрегистрационный токен (Registration Token). Этот токен связывает приложение с конкретным устройством.
  2. Отправка сообщения: Сервер приложений отправляет запрос к API FCM, указывая регистрационный токен получателя (или группу токенов) и содержимое сообщения.
  3. Маршрутизация: FCM находит устройство, соответствующее токену, и доставляет сообщение. Если устройство офлайн, сообщение может быть сохранено в очереди и доставлено при повторном подключении.
  4. Получение и обработка: Клиентское приложение получает сообщение и обрабатывает его (например, отображает уведомление в системной панели или запускает фоновый код).

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

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

Уведомления (Notification Messages)

Сообщения этого типа содержат предопределённые поля (заголовок, текст, значок, звук) и автоматически отображаются системой в виде push-уведомления. Они не требуют обработки в коде приложения — система сама показывает уведомление, если приложение находится в фоне. Если приложение активно, уведомление передаётся в обработчик приложения.

Сообщения с данными (Data Messages)

Сообщения этого типа содержат произвольные пользовательские данные (в формате ключ-значение). Они не отображаются автоматически — приложение должно обработать их в коде (например, обновить интерфейс, выполнить фоновую задачу или показать кастомное уведомление). Сообщения с данными всегда доставляются приложению, даже если оно находится в фоне.

Комбинированные сообщения

Можно отправлять сообщения, которые содержат как уведомление, так и данные. В этом случае уведомление отображается системой, а данные передаются приложению для дополнительной обработки.

Способы доставки

FCM предоставляет несколько способов отправки сообщений:

  • Одиночная отправка: Сообщение отправляется одному конкретному устройству по его регистрационному токену.
  • Групповая отправка: Сообщение отправляется группе устройств, объединённых по теме (Topic) или по группе устройств (Device Group). Топики — это простой способ подписки пользователей на определённые категории уведомлений (например, «новости», «акции»).
  • Отправка по сегментам: Используя Firebase Analytics, можно отправлять сообщения определённым сегментам пользователей (например, «пользователи из Москвы» или «пользователи, совершившие покупку за последний месяц»).
  • Отправка по условиям: Сообщение отправляется устройствам, соответствующим заданному логическому условию (например, «TopicA && TopicB || TopicC»).

API и интеграция

FCM предоставляет REST API и SDK для различных платформ. Основные методы API:

  • POST /v1/projects/{project_id}/messages:send — отправка сообщения.
  • POST /v1/projects/{project_id}/messages:sendAll — отправка нескольких сообщений в одном запросе.
  • POST /v1/projects/{project_id}/topics:subscribeподписка устройства на топик.
  • POST /v1/projects/{project_id}/topics:unsubscribe — отписка устройства от топика.

SDK доступны для платформ Android, iOS (включая Swift), веб-приложений (JavaScript) и Flutter. Для серверной части Google предоставляет библиотеки для Node.js, Python, Java, Go и C#.

Безопасность и аутентификация

Для отправки сообщений сервер приложений должен пройти аутентификацию в FCM. Используется два основных метода:

  • OAuth 2.0 — рекомендуется для продакшн-сред. Сервер получает токен доступа от Google Cloud IAM и передаёт его в заголовке Authorization.
  • Ключ сервера (Server Key) — устаревший метод, который использует статический ключ, полученный в консоли Firebase.

Клиентские приложения аутентифицируются с помощью секретного ключа приложения (App Secret) или через Firebase Authentication.

Ограничения и лимиты

FCM имеет ряд ограничений, которые необходимо учитывать при разработке:

  • Максимальный размер сообщения: 4 КБ (для уведомлений) и 2 КБ (для сообщений с данными).
  • Максимальная частота отправки: 600 сообщений в секунду на один проект (по умолчанию).
  • Максимальное количество подписчиков на топик: 10 000 000.
  • Максимальное время жизни сообщения (TTL): 28 дней. Сообщения, не доставленные за это время, удаляются.
  • Очередь офлайн-сообщений: FCM хранит до 100 сообщений для одного устройства, если оно офлайн. При превышении лимита старые сообщения удаляются.

Применение

Firebase Cloud Messaging широко используется в мобильных и веб-приложениях для:

  • Push-уведомлений: Информирование пользователей о новых сообщениях, обновлениях, акциях, напоминаниях.
  • Фоновой синхронизации данных: Обновление контента приложения (например, загрузка новых статей или обновление ленты) без участия пользователя.
  • Чат-приложений: Доставка сообщений в реальном времени.
  • Маркетинговых кампаний: Отправка целевых уведомлений на основе поведения пользователей.
  • Управления IoT-устройствами: Отправка команд на устройства, работающие на Android Things.

Преимущества и недостатки

Преимущества

  • Бесплатность: FCM не взимает плату за отправку сообщений, что делает его доступным для проектов любого масштаба.
  • Масштабируемость: Инфраструктура Google автоматически обрабатывает миллиарды сообщений в день.
  • Кроссплатформенность: Единый API для Android, iOS и веба.
  • Интеграция с Firebase: Лёгкая интеграция с другими сервисами Firebase (Analytics, Cloud Functions, Firestore).
  • Гибкая доставка: Поддержка топиков, сегментов, условий и офлайн-очередей.

Недостатки

  • Зависимость от Google: Сервис полностью привязан к экосистеме Google, что может быть проблемой для устройств без сервисов Google (например, в Китае).
  • Ограничения на размер сообщений: 4 КБ — это мало для передачи больших объёмов данных.
  • Задержки доставки: Время доставки может варьироваться в зависимости от нагрузки и состояния сети.
  • Отсутствие гарантии доставки: FCM не гарантирует 100% доставку сообщений, особенно при офлайн-режиме.

Сравнение с альтернативами

FCM является одним из самых популярных сервисов push-уведомлений, но существуют и альтернативы:

  • Apple Push Notification Service (APNs): Собственный сервис Apple для iOS. В отличие от FCM, APNs работает только на устройствах Apple и требует отдельной настройки.
  • Amazon Simple Notification Service (SNS): Облачный сервис от Amazon Web Services, поддерживающий отправку уведомлений на Android, iOS и другие платформы.
  • Pushover: Платный сервис для отправки push-уведомлений на мобильные устройства.
  • OneSignal: Сторонний сервис, предоставляющий push-уведомления для Android, iOS и веба. OneSignal использует FCM и APNs в качестве бэкенда.

Интересные факты

  • FCM обрабатывает более 1 миллиарда сообщений в день по всему миру.
  • FCM поддерживает отправку сообщений не только на мобильные устройства, но и на веб-браузеры (через Service Workers).
  • В 2023 году Google объявила о планах по интеграции FCM с Google Cloud Pub/Sub для улучшения масштабируемости.
  • FCM используется в таких крупных приложениях, как YouTube, Google Maps, Gmail и многих других.

Источники

  • Документация Firebase Cloud Messaging (Google)
  • Firebase Console — официальный сайт
  • Статья «Firebase Cloud Messaging: An Overview» (Medium, 2020)
  • Руководство по миграции с GCM на FCM (Google Developers)
  • Сравнение push-сервисов: FCM vs APNs vs OneSignal (Habr, 2021)

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

На главную BFOmetr →