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

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

  1. Tooling to compose or build message requests. The Notifications composer provides a GUI-based option for creating notification requests. For full automation and support for all message types , you must build message requests in a trusted server environment that supports the Firebase Admin SDK or the FCM server protocol. This environment could be Cloud Functions for Firebase, App Engine , or your own app server.

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

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

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

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

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

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

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