FCM — co to jest, zasady Firebase Cloud Messaging w tworzeniu aplikacji

Autor: IT Sectr Opublikowano: 2026-03-19 Czas czytania: 8 min

FCM (Firebase Cloud Messaging) to wieloplatformowa usługa Google do dostarczania powiadomień push i przesyłania danych między serwerem a aplikacjami mobilnymi. Obsługuje Android, iOS i platformy internetowe przez jeden interfejs API. Według Firebase Documentation, FCM przetwarza ponad miliard wiadomości dziennie na całym świecie.

Najważniejsze informacje

  • FCM — wieloplatformowa usługa Google do wysyłania powiadomień push i danych
  • Architektura — klient otrzymuje token rejestracyjny, serwer wysyła wiadomości przez Firebase Connection Server
  • Typy wiadomości — notification (automatyczne wyświetlanie) i data (pełne przetwarzanie w aplikacji)
  • Dostarczanie — FCM używa stałego połączenia lub kolejek priorytetowych dla gwarancji dostarczenia
  • Integracja — podłączenie przez Firebase SDK, konfiguracja google-services.json i konfiguracja serwera

Co to jest FCM?

Firebase Cloud Messaging (FCM) to chmurowa usługa Google, która zapewnia niezawodne dostarczanie powiadomień push i wiadomości z danymi na urządzenia mobilne. Wcześniej znana jako Google Cloud Messaging (GCM), FCM stała się głównym narzędziem do wieloplatformowych powiadomień w ekosystemie Firebase.

FCM automatycznie wybiera optymalny kanał dostarczania w zależności od platformy: na Android używa własnego połączenia FCM, na iOS — APNS (przez bramę FCM). Deweloper nie musi implementować dwóch różnych integracji — FCM przejmuje routing na siebie.

Usługa udostępnia jeden REST API i Admin SDK do wysyłania wiadomości. Pozwala to wysyłać powiadomienia z części serwerowej bez przywiązania do konkretnej platformy odbiorcy.

Kluczowe możliwości FCM

FCM obsługuje kilka trybów dostarczania: pojedyncza wiadomość do konkretnego urządzenia, rozesłanie grupowe według tematu (topic) i wysyłanie segmentowe według warunków (condition). Dostępne jest również planowanie wysyłki i A/B-testowanie treści powiadomień.

Jak działa Firebase Cloud Messaging?

Architektura FCM opiera się na trzech komponentach: aplikacja kliencka, Firebase Connection Server i serwer aplikacji (app server). Klient rejestruje się w FCM przy uruchomieniu i otrzymuje unikalny token rejestracyjny — ciąg znaków identyfikujący urządzenie dla danej aplikacji.

Serwer aplikacji wysyła żądanie do FCM REST API, podając token odbiorcy lub temat. Firebase Connection Server dostarcza wiadomość, używając stałego połączenia XMPP lub żądania HTTP. Jeśli urządzenie jest offline — wiadomość jest kolejkowana i dostarczana po przywróceniu połączenia.

FCM gwarantuje dostarczenie za pomocą kolejek priorytetowych i mechanizmu potwierdzenia odbioru. Na Android wiadomość jest przechowywana do 28 dni w kolejce, na iOS — do 4 tygodni (przez APNS). Po upływie terminu wiadomość jest usuwana bez powiadomienia.

Cykl życia tokena FCM

Token rejestracyjny może się zmienić w kilku przypadkach: przy przywracaniu danych aplikacji, przy aktualizacji do nowej wersji lub przy czyszczeniu pamięci podręcznej. Aplikacja powinna zaimplementować FirebaseMessagingService.onNewToken do obsługi aktualizacji tokena i synchronizacji z serwerem.

Typy wiadomości FCM

FCM obsługuje dwa typy ładunku: notification i data. Każdy typ określa, jak i kiedy wiadomość jest przetwarzana na urządzeniu odbiorcy.

ParametrNotificationData
Automatyczne wyświetlanieTak, jeśli aplikacja w tleNie, tylko w aplikacji
PrzetwarzanieSystem/NOS — w tle; app — na pierwszym planieZawsze w aplikacji (onMessageReceived)
Maksymalny rozmiar4 KB4 KB
Niestandardowe kluczeOgraniczone do predefiniowanych pólDowolne pary klucz-wartość
Wymaga CollapseKeyOpcjonalnieOpcjonalnie do grupowania

W praktyce zaleca się używanie data-wiadomości, jeśli aplikacja potrzebuje pełnego przetwarzania powiadomienia w onMessageReceived. Notification-wiadomości nadają się do prostych scenariuszy, gdzie systemowe wyświetlanie jest wystarczające.

FCM i APNS: porównanie podejść

FCM i APNS to dwie główne usługi dostarczania push. FCM działa jako wieloplatformowa brama, APNS — tylko dla ekosystemu Apple. Ich kluczowe różnice dotyczą architektury, wymagań dotyczących certyfikatów i mechanizmów routingu.

  • Wieloplatformowość — FCM obsługuje Android, iOS, Web; APNS tylko iOS, macOS, watchOS, tvOS
  • Uwierzytelnianie — FCM używa Server Key lub OAuth 2.0; APNS — certyfikatu lub Token-based (p8 key)
  • Priorytet wiadomości — FCM ma normal/high; APNS — immediate/power-efficient consideration
  • Tematy — FCM obsługuje subskrypcję tematów od razu; APNS wymaga logiki serwerowej

Wybór między FCM a bezpośrednim APNS zależy od architektury projektu. Dla wieloplatformowych aplikacji FCM jest optymalnym wyborem. Dla projektów tylko iOS dopuszczalna jest bezpośrednia praca z APNS przez HTTP/2 API.

Kiedy wybrać FCM zamiast bezpośredniego APNS

FCM jest uzasadniony, gdy projekt używa jednocześnie Android i iOS, a także przy potrzebie analityki Firebase, A/B-testowania powiadomień lub tematów bez logiki serwerowej. Bezpośredni APNS jest preferowany dla aplikacji tylko iOS z minimalnymi zależnościami i ścisłymi wymaganiami dotyczącymi opóźnienia dostarczania.

Integracja FCM w Android

Do podłączenia FCM do aplikacji Android należy dodać Firebase SDK i skonfigurować google-services.json w katalogu głównym projektu. Po rejestracji tokena aplikacja jest gotowa do odbierania wiadomości przez FirebaseMessagingService.

kotlin
// build.gradle (Moduł)
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)
        }
    }
}

Po konfiguracji aplikacja automatycznie otrzymuje token FCM przy pierwszym uruchomieniu. Token należy wysłać na serwer aplikacji w celu późniejszego wysyłania powiadomień na to urządzenie.

Konfiguracja kanału dla powiadomień FCM

Na Android 8+ przed wysłaniem powiadomienia FCM z automatycznym wyświetlaniem należy utworzyć NotificationChannel. FCM notification-wiadomości używają kanału z domyślnym ID, ale zaleca się tworzenie własnego kanału przez FirebaseMessagingService przy otrzymaniu pierwszej wiadomości. Data-wiadomości nie wymagają kanału — aplikacja sama decyduje, jak i kiedy wyświetlić powiadomienie.

Integracja FCM w iOS

Na iOS FCM działa jako pośrednik między serwerem aplikacji a APNS. Firebase otrzymuje wiadomość od serwera, owija ją w format APNS i wysyła przez bramę Apple. Deweloper musi skonfigurować klucz APNS lub certyfikat w konsoli 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")
    }
}

Na iOS rejestracja w APNS odbywa się asynchronicznie. FCM SDK automatycznie otrzymuje token APNS i przekazuje go na serwer Firebase. didReceiveRegistrationToken uruchamia się przy otrzymaniu nowego tokena FCM, który łączy token APNS z identyfikatorem projektu.

Sprawdzanie statusu dostarczenia

FCM udostępnia konsolę Firebase do monitorowania dostarczania: liczba wysłanych, odebranych i wyświetlonych powiadomień. Dostępny jest również callback statusu przez Firebase Cloud Functions do śledzenia błędów dostarczania po stronie serwera. Kluczowe metryki: impressions (wyświetlenia) i opens (otwarcia) powiadomień.

Najlepsze praktyki FCM

Podczas pracy z FCM ważne jest prawidłowe wybieranie typu wiadomości dla każdego scenariusza. Do prostych powiadomień z automatycznym wyświetlaniem używaj notification-wiadomości. W przypadkach, gdy aplikacja musi przetworzyć dane przed wyświetleniem — data-wiadomości. Mieszany typ (notification + data) jest zalecany tylko jeśli dane są potrzebne do analityki, a nie do zmiany treści powiadomienia.

Zarządzaj tokenami centralnie. Przechowuj aktualne tokeny na serwerze w tabeli z przypisaniem do użytkownika i platformy. Zaimplementuj mechanizm czyszczenia nieaktualnych tokenów: przy błędzie NotRegistered lub InvalidRegistration usuwaj token z bazy. Tokeny zmieniają się rzadko, ale ich czyszczenie jest obowiązkowym elementem utrzymania FCM.

Używaj kluczy kolapsu (collapseKey) do grupowania wiadomości. Jeśli wysyłasz kilka powiadomień tego samego typu (na przykład „aktualizacja kursu walut”), ustaw ten sam collapseKey. FCM dostarczy tylko ostatnią wiadomość z grupy, co zmniejsza obciążenie urządzenia i nie irytuje użytkownika lawiną powiadomień.

Monitoruj dostarczanie przez Firebase Console i Cloud Functions. Analityka FCM pokazuje liczbę wysłanych, odebranych i wyświetlonych powiadomień. Jeśli procent wyświetleń jest niższy niż 70% — sprawdź ustawienia kanałów na Android i uprawnień na iOS. Niskie dostarczanie często wiąże się z wyłączonymi kanałami lub zakazem powiadomień. Po piąte: używaj A/B-testowania Firebase do optymalizacji treści powiadomień i czasu wysyłki — to zwiększa konwersję otwarć o 15–25% według danych Firebase.

Często zadawane pytania

Jaka jest różnica między FCM a GCM?

FCM to ewolucyjna aktualizacja GCM (Google Cloud Messaging). FCM oferuje uproszczoną konfigurację przez Firebase Console, wbudowaną analitykę, tematy i obsługę Web Push. GCM został oficjalnie wyłączony w kwietniu 2019 roku, wszystkie projekty muszą być migrowane do FCM.

Ile wiadomości można wysłać przez FCM za darmo?

Firebase Cloud Messaging to darmowa usługa bez ograniczeń na liczbę wiadomości. Opłaty pobierane są tylko za korzystanie z innych usług Firebase, takich jak Cloud Functions lub Firestore. FCM nie wymaga subskrypcji Spark ani Blaze do podstawowego wysyłania powiadomień.

Dlaczego token FCM może się zmienić?

Token FCM zmienia się przy: przywracaniu aplikacji z kopii zapasowej, czyszczeniu danych aplikacji, ponownej instalacji, aktualizacji do nowej wersji ze zmianą Sender ID. Zawsze obsługuj onNewToken w FirebaseMessagingService do wysyłania nowego tokena na serwer.

Czy FCM działa w Chinach?

FCM Google jest zablokowany na terytorium Chin. Do dostarczania powiadomień w Chinach używa się alternatywnych usług: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Do wieloplatformowego dostarczania stosuje się usługi wielodostawców takie jak Getui.

Jak sprawdzić, czy FCM jest skonfigurowane poprawnie?

Użyj wbudowanej konsoli Firebase: wybierz „Cloud Messaging” — „Send Test Message”. Wprowadź testowy token i wyślij notification-wiadomość. Na urządzeniu powinno pojawić się powiadomienie. Można również monitorować logi FirebaseMessagingService.onMessageReceived.

Podsumowanie

  • FCM — wieloplatformowa chmurowa usługa Google do dostarczania powiadomień push i danych
  • Token — unikalny identyfikator urządzenia używany do docelowego wysyłania wiadomości
  • Notification — typ wiadomości z automatycznym wyświetlaniem przez system w trybie tła
  • Data — typ wiadomości z pełnym ładunkiem przetwarzanym tylko w aplikacji
  • Tematy — mechanizm rozesłania grupowego przez subskrypcję tematów bez przechowywania tokenów na serwerze
  • Brama APNS — dla iOS FCM działa jako pośrednik, przesyłając wiadomości przez APNS
  • Za darmo — FCM nie pobiera opłat za liczbę wysłanych wiadomości

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również