Обзор архитектуры FCM

FCM опирается на следующий набор компонентов, которые формируют, передают и принимают сообщения:

  1. Инструменты для составления или создания запросов на уведомления. Компоновщик уведомлений предоставляет графический интерфейс для создания запросов на уведомления. Для полной автоматизации и поддержки всех типов сообщений необходимо создавать запросы на уведомления в доверенной серверной среде , поддерживающей Firebase Admin SDK или протокол FCM. Это может быть Cloud Functions for Firebase, App Engine или ваш собственный сервер приложений.

    Схема трех архитектурных уровней, описанных на этой странице.

  2. Бэкенд FCM, который (среди прочих функций) принимает запросы на сообщения, осуществляет распределение сообщений по темам и генерирует метаданные сообщений, такие как идентификатор сообщения.

  3. Транспортный уровень платформы, который маршрутизирует сообщение к целевому устройству, обрабатывает доставку сообщения и применяет, при необходимости, конфигурацию, специфичную для платформы. Этот транспортный уровень включает в себя:

    • Транспортный уровень Android (ATL) для устройств Android с сервисами Google Play.
    • Сервис push-уведомлений Apple (APNs) для устройств Apple
    • Протокол веб-push для веб-приложений

  4. FCM SDK на устройстве пользователя, где отображается уведомление или обрабатывается сообщение в зависимости от состояния приложения (активный/фоновый режим) и соответствующей логики приложения.

Поток жизненного цикла

  • Регистрация устройств для получения сообщений от FCM . Экземпляр клиентского приложения регистрируется для получения сообщений, получая регистрационный токен, который однозначно идентифицирует экземпляр приложения.
  • Отправка и получение сообщений от отправителя к получателю .
    • Отправьте сообщение. Сервер приложений отправляет сообщения клиентскому приложению:
      1. Сообщение формируется либо в редакторе уведомлений, либо в доверенной среде, и запрос на отправку сообщения отправляется на бэкэнд FCM.
      2. Бэкенд FCM получает запрос на сообщение, генерирует идентификатор сообщения и другие метаданные, а затем отправляет его на транспортный уровень, специфичный для платформы.
      3. Когда устройство подключено к сети, сообщение отправляется на устройство через транспортный уровень, специфичный для данной платформы.
      4. На устройстве клиентское приложение получает сообщение или уведомление.