FCM — що це таке, принципи Firebase Cloud Messaging у розробці

Автор: IT Sectr Опубліковано: 2026-03-19 Час читання: 8 хв

FCM (Firebase Cloud Messaging) — це кроссплатформений сервіс від Google для доставки push-сповіщень та передачі даних між сервером і мобільними застосунками. Він підтримує Android, iOS та веб-платформи через єдиний API. За даними Firebase Documentation, FCM обробляє понад 1 мільярд повідомлень щодня по всьому світу.

Головне

  • FCM — кроссплатформений сервіс від Google для надсилання push-сповіщень та даних
  • Архітектура — клієнт отримує токен реєстрації, сервер надсилає повідомлення через Firebase Connection Server
  • Типи повідомлень — notification (автоматичний показ) та data (повна обробка в застосунку)
  • Доставка — FCM використовує постійне з'єднання або пріоритетні черги для гарантії доставки
  • Інтеграція — підключення через Firebase SDK, налаштування google-services.json та конфігурація сервера

Що таке FCM?

Firebase Cloud Messaging (FCM) — це хмарний сервіс від Google, який забезпечує надійну доставку push-сповіщень та повідомлень з даними на мобільні пристрої. Раніше відомий як Google Cloud Messaging (GCM), FCM став основним інструментом для кроссплатформених сповіщень в екосистемі Firebase.

FCM автоматично вибирає оптимальний канал доставки залежно від платформи: на Android використовується власне FCM-з'єднання, на iOS — APNS (через шлюз FCM). Розробнику не потрібно реалізовувати дві різні інтеграції — FCM бере на себе маршрутизацію.

Сервіс надає єдиний REST API та Admin SDK для надсилання повідомлень. Це дозволяє надсилати сповіщення з серверної частини без прив'язки до конкретної платформи отримувача.

Ключові можливості FCM

FCM підтримує кілька режимів доставки: одне повідомлення конкретному пристрою, групова розсилка за темою (topic) та сегментне надсилання за умовами (condition). Також доступне планування надсилання та A/B-тестування вмісту сповіщень.

Як працює Firebase Cloud Messaging?

Архітектура FCM базується на трьох компонентах: клієнтський застосунок, Firebase Connection Server та сервер застосунку (app server). Клієнт реєструється в FCM при запуску та отримує унікальний реєстраційний токен — рядок, що ідентифікує пристрій для даного застосунку.

Сервер застосунку надсилає запит до FCM REST API, вказуючи токен отримувача або тему. Firebase Connection Server доставляє повідомлення, використовуючи постійне XMPP-з'єднання або HTTP-запит. Якщо пристрій офлайн — повідомлення ставиться в чергу та доставляється при відновленні зв'язку.

FCM гарантує доставку за допомогою пріоритетних черг та механізму підтвердження отримання. На Android повідомлення зберігається до 28 днів у черзі, на iOS — до 4 тижнів (через APNS). Після закінчення терміну повідомлення видаляється без повідомлення.

Життєвий цикл токена FCM

Токен реєстрації може змінитися в кількох випадках: при відновленні даних застосунку, при оновленні до нової версії або при очищенні кешу. Застосунок повинен реалізувати FirebaseMessagingService.onNewToken для обробки оновлення токена та синхронізації з сервером.

Типи повідомлень FCM

FCM підтримує два типи корисного навантаження: notification та data. Кожен тип визначає, як і коли повідомлення обробляється на пристрої отримувача.

ПараметрNotificationData
Автоматичний показТак, якщо застосунок у фоніНі, тільки в застосунку
ОбробкаСистема/NOS — у фоні; застосунок — у форіЗавжди в застосунку (onMessageReceived)
Максимальний розмір4 КБ4 КБ
Кастомні ключіОбмежені попередньо визначеними полямиБудь-які пари ключ-значення
Вимагає CollapseKeyОпціональноОпціонально для групування

На практиці рекомендується використовувати data-повідомлення, якщо застосунку потрібна повна обробка сповіщення в onMessageReceived. Notification-повідомлення підходять для простих сценаріїв, де системний показ достатній.

FCM та APNS: порівняння підходів

FCM та APNS — два основні сервіси push-доставки. FCM працює як кроссплатформений шлюз, APNS — тільки для екосистеми Apple. Їх ключові відмінності — в архітектурі, вимогах до сертифікатів та механізмах маршрутизації.

  • Кроссплатформеність — FCM підтримує Android, iOS, Web; APNS тільки iOS, macOS, watchOS, tvOS
  • Аутентифікація — FCM використовує Server Key або OAuth 2.0; APNS — сертифікат або Token-based (p8 key)
  • Пріоритет повідомлень — FCM має normal/high; APNS — immediate/power-efficient consideration
  • Теми — FCM підтримує підписку на теми з коробки; APNS вимагає серверної логіки

Вибір між FCM та прямим APNS залежить від архітектури проєкту. Для кроссплатформених застосунків FCM — оптимальний вибір. Для iOS-only проєктів допустима пряма робота з APNS через HTTP/2 API.

Коли вибирати FCM замість прямого APNS

FCM виправданий, коли проєкт використовує Android та iOS одночасно, а також при необхідності аналітики Firebase, A/B-тестування сповіщень або тем без серверної логіки. Прямий APNS кращий для iOS-only застосунків з мінімальними залежностями та строгими вимогами до затримки доставки.

Інтеграція FCM в Android

Для підключення FCM до Android-застосунку необхідно додати Firebase SDK та налаштувати google-services.json в корені проєкту. Після реєстрації токена застосунок готовий приймати повідомлення через FirebaseMessagingService.

kotlin
// build.gradle (Module)
dependencies {
    implementation("com.google.firebase:firebase-messaging:24.1.0")
}

// AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

class MyFirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(message: RemoteMessage) {
        message.notification?.let {
            showNotification(it.title, it.body)
        }
    }
}

Після налаштування застосунок автоматично отримує токен FCM при першому запуску. Токен необхідно відправити на сервер застосунку для подальшого надсилання сповіщень на цей пристрій.

Налаштування каналу для FCM-сповіщень

На Android 8+ перед надсиланням FCM-сповіщення з автоматичним показом необхідно створити NotificationChannel. FCM notification-повідомлення використовують канал з ID за замовчуванням, але рекомендується створювати власний канал через FirebaseMessagingService при отриманні першого повідомлення. Data-повідомлення не вимагають каналу — застосунок сам вирішує, як і коли показати сповіщення.

Інтеграція FCM в iOS

На iOS FCM виступає проміжною ланкою між сервером застосунку та APNS. Firebase отримує повідомлення від сервера, обгортає його в APNS-формат та надсилає через шлюз Apple. Розробнику потрібно налаштувати APNS-ключ або сертифікат у консолі Firebase.

swift
import FirebaseMessaging
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current().delegate = self

        Messaging.messaging().delegate = self
        return true
    }
}

extension AppDelegate: MessagingDelegate {
    func messaging(
        _ messaging: Messaging,
        didReceiveRegistrationToken fcmToken: String?
    ) {
        UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
    }
}

На iOS реєстрація в APNS відбувається асинхронно. FCM SDK автоматично отримує APNS-токен та передає його на сервер Firebase. didReceiveRegistrationToken спрацьовує при отриманні нового FCM-токена, який об'єднує APNS-токен з ідентифікатором проєкту.

Перевірка статусу доставки

FCM надає консоль Firebase для моніторингу доставки: кількість відправлених, прийнятих та показаних сповіщень. Також доступний статус-колбек через Firebase Cloud Functions для відстеження помилок доставки на стороні сервера. Ключові метрики: impressions (покази) та opens (відкриття) сповіщень.

Найкращі практики FCM

При роботі з FCM важливо правильно вибирати тип повідомлення для кожного сценарію. Для простих сповіщень з автоматичним показом використовуйте notification-повідомлення. Для випадків, коли застосунку потрібно обробити дані до показу — data-повідомлення. Змішаний тип (notification + data) рекомендується тільки якщо дані потрібні для аналітики, а не для зміни вмісту сповіщення.

Керуйте токенами централізовано. Зберігайте актуальні токени на сервері в таблиці з прив'язкою до користувача та платформи. Реалізуйте механізм очищення застарілих токенів: при помилці NotRegistered або InvalidRegistration видаляйте токен з бази. Токени змінюються рідко, але їх чистка — обов'язковий елемент підтримки FCM.

Використовуйте колапс-ключі (collapseKey) для групування повідомлень. Якщо ви надсилаєте кілька сповіщень одного типу (наприклад, "оновлення курсу валют"), встановіть однаковий collapseKey. FCM доставить тільки останнє повідомлення з групи, що знижує навантаження на пристрій та не дратує користувача шквалом сповіщень.

Моніторте доставку через Firebase Console та Cloud Functions. Аналітика FCM показує кількість відправлених, прийнятих та показаних сповіщень. Якщо відсоток показів нижче 70% — перевірте налаштування каналів на Android та дозволів на iOS. Низька доставка часто пов'язана з вимкненими каналами або забороною на сповіщення. П'яте: використовуйте A/B-тестування Firebase для оптимізації тексту сповіщень та часу надсилання — це підвищує конверсію відкриттів на 15–25% за даними Firebase.

Часті запитання

В чому різниця між FCM та GCM?

FCM — це еволюційне оновлення GCM (Google Cloud Messaging). FCM пропонує спрощене налаштування через Firebase Console, вбудовану аналітику, теми та підтримку Web Push. GCM офіційно вимкнений з квітня 2019 року, всі проєкти повинні бути мігровані на FCM.

Скільки повідомлень можна відправити через FCM безкоштовно?

Firebase Cloud Messaging — безкоштовний сервіс без обмежень на кількість повідомлень. Оплата стягується тільки за використання інших сервісів Firebase, таких як Cloud Functions або Firestore. FCM не вимагає підписки Spark або Blaze для базового надсилання сповіщень.

Чому FCM-токен може змінитися?

Токен FCM змінюється при: відновленні застосунку з бекапу, очищенні даних застосунку, перевстановленні, оновленні до нової версії зі зміною Sender ID. Завжди обробляйте onNewToken в FirebaseMessagingService для надсилання нового токена на сервер.

Чи працює FCM в Китаї?

FCM від Google заблокований на території Китаю. Для доставки сповіщень в Китаї використовують альтернативні сервіси: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Для кроссплатформеної доставки застосовуються мультипровайдерні сервіси на кшталт Getui.

Як перевірити, що FCM налаштовано коректно?

Використовуйте вбудовану консоль Firebase: виберіть "Cloud Messaging" — "Send Test Message". Введіть тестовий токен та відправте notification-повідомлення. На пристрої повинно з'явитися сповіщення. Також можна моніторити логи FirebaseMessagingService.onMessageReceived.

Підсумки

  • FCM — кроссплатформенний хмарний сервіс Google для доставки push-сповіщень та даних
  • Токен — унікальний ідентифікатор пристрою, який використовується для цільового надсилання повідомлень
  • Notification — тип повідомлення з автоматичним показом системою при фоновому режимі
  • Data — тип повідомлення з повним корисним навантаженням, що обробляється тільки в застосунку
  • Теми — механізм групової розсилки за підпискою на теми без зберігання токенів на сервері
  • APNS-шлюз — для iOS FCM виступає як посередник, пересилаючи повідомлення через APNS
  • Безкоштовно — FCM не стягує плату за кількість відправлених повідомлень

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також