Обзор архитектуры 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
    • Протокол Web Push для веб-приложений

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

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

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