FCM dựa vào tập hợp các thành phần sau để xây dựng, vận chuyển và nhận tin nhắn:
Công cụ để soạn hoặc xây dựng yêu cầu tin nhắn. Trình soạn thảo Thông báo cung cấp tùy chọn dựa trên GUI để tạo các yêu cầu thông báo. Để tự động hóa hoàn toàn và hỗ trợ cho tất cả các loại thông báo , bạn phải tạo các yêu cầu thông báo trong môi trường máy chủ đáng tin cậy hỗ trợ SDK quản trị Firebase hoặc các giao thức máy chủ FCM. Môi trường này có thể là Chức năng đám mây cho Firebase, Máy ứng dụng hoặc máy chủ ứng dụng của riêng bạn.
Chương trình phụ trợ FCM, (trong số các chức năng khác) chấp nhận yêu cầu tin nhắn, thực hiện phân bổ tin nhắn qua các chủ đề và tạo siêu dữ liệu tin nhắn chẳng hạn như ID tin nhắn.
Lớp vận chuyển cấp nền tảng định tuyến tin nhắn đến thiết bị được nhắm mục tiêu, xử lý việc gửi tin nhắn và áp dụng cấu hình dành riêng cho nền tảng khi thích hợp. Lớp vận chuyển này bao gồm:
- Lớp vận chuyển Android (ATL) dành cho thiết bị Android có dịch vụ Google Play
- Dịch vụ thông báo đẩy của Apple (APN) cho các thiết bị của Apple
Giao thức đẩy web cho các ứng dụng web
SDK FCM trên thiết bị của người dùng, nơi thông báo được hiển thị hoặc thông báo được xử lý theo trạng thái nền trước/nền của ứng dụng và mọi logic ứng dụng có liên quan.
Dòng chảy vòng đời
- Đăng ký thiết bị để nhận tin nhắn từ FCM . Phiên bản của ứng dụng khách đăng ký để nhận tin nhắn, lấy mã thông báo đăng ký xác định duy nhất phiên bản ứng dụng.
- Gửi và nhận tin nhắn xuôi dòng .
- Gửi tin nhắn. Máy chủ ứng dụng gửi tin nhắn đến ứng dụng khách:
- Tin nhắn được soạn, trong Trình soạn thảo thông báo hoặc môi trường đáng tin cậy và yêu cầu tin nhắn được gửi đến chương trình phụ trợ FCM.
- Chương trình phụ trợ FCM nhận yêu cầu tin nhắn, tạo ID tin nhắn và siêu dữ liệu khác, rồi gửi nó đến lớp vận chuyển cụ thể của nền tảng.
- Khi thiết bị trực tuyến, tin nhắn sẽ được gửi qua lớp vận chuyển dành riêng cho nền tảng tới thiết bị.
- Trên thiết bị, ứng dụng khách nhận tin nhắn hoặc thông báo.
- Gửi tin nhắn. Máy chủ ứng dụng gửi tin nhắn đến ứng dụng khách: