FCM опирается на следующий набор компонентов, которые формируют, передают и принимают сообщения:
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.

Бэкенд FCM, который (среди прочих функций) принимает запросы на сообщения, осуществляет распределение сообщений по темам и генерирует метаданные сообщений, такие как идентификатор сообщения.
Транспортный уровень платформы, который маршрутизирует сообщение к целевому устройству, обрабатывает доставку сообщения и применяет, при необходимости, конфигурацию, специфичную для платформы. Этот транспортный уровень включает в себя:
- Транспортный уровень Android (ATL) для устройств Android с сервисами Google Play.
- Сервис push-уведомлений Apple (APNs) для устройств Apple
Протокол веб-push для веб-приложений
FCM SDK на устройстве пользователя, где отображается уведомление или обрабатывается сообщение в зависимости от состояния приложения (активный/фоновый режим) и соответствующей логики приложения.
Поток жизненного цикла
- Регистрация устройств для получения сообщений от FCM . Экземпляр клиентского приложения регистрируется для получения сообщений, получая регистрационный токен, который однозначно идентифицирует экземпляр приложения.
- Отправка и получение сообщений от отправителя к получателю .
- Отправьте сообщение. Сервер приложений отправляет сообщения клиентскому приложению:
- Сообщение формируется либо в редакторе уведомлений, либо в доверенной среде, и запрос на отправку сообщения отправляется на бэкэнд FCM.
- Бэкенд FCM получает запрос на сообщение, генерирует идентификатор сообщения и другие метаданные, а затем отправляет его на транспортный уровень, специфичный для платформы.
- Когда устройство подключено к сети, сообщение отправляется на устройство через транспортный уровень, специфичный для данной платформы.
- На устройстве клиентское приложение получает сообщение или уведомление.
- Отправьте сообщение. Сервер приложений отправляет сообщения клиентскому приложению: