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