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

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

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

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

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

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

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

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

Жизненный цикл

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