FCM — ce este, principiile Firebase Cloud Messaging în dezvoltare

Autor: IT Sectr Publicat: 2026-03-19 Timp de citire: 8 min

FCM (Firebase Cloud Messaging) este un serviciu cross-platform de la Google pentru livrarea notificărilor push și transmiterea datelor între server și aplicațiile mobile. Suportă Android, iOS și platforme web printr-un API unic. Conform Firebase Documentation, FCM procesează peste 1 miliard de mesaje zilnic în întreaga lume.

Principalele puncte

  • FCM — serviciu cross-platform Google pentru trimiterea notificărilor push și a datelor
  • Arhitectură — clientul primește un token de înregistrare, serverul trimite mesaje prin Firebase Connection Server
  • Tipuri de mesaje — notification (afișare automată) și data (procesare completă în aplicație)
  • Livrare — FCM utilizează conexiune persistentă sau cozi prioritare pentru garantarea livrării
  • Integrare — conectare prin Firebase SDK, configurare google-services.json și configurare server

Ce este FCM?

Firebase Cloud Messaging (FCM) este un serviciu cloud de la Google care asigură livrarea fiabilă a notificărilor push și a mesajelor cu date pe dispozitivele mobile. Cunoscut anterior ca Google Cloud Messaging (GCM), FCM a devenit instrumentul principal pentru notificări cross-platform în ecosistemul Firebase.

FCM selectează automat canalul optim de livrare în funcție de platformă: pe Android utilizează propria conexiune FCM, pe iOS — APNS (prin gateway-ul FCM). Dezvoltatorul nu trebuie să implementeze două integrări diferite — FCM preia rutarea.

Serviciul oferă un REST API unic și Admin SDK pentru trimiterea mesajelor. Acest lucru permite trimiterea notificărilor din partea serverului fără legătura cu o platformă specifică a destinatarului.

Capabilitățile cheie ale FCM

FCM suportă mai multe moduri de livrare: mesaj unic către un dispozitiv specific, trimitere în grup pe subiect (topic) și trimitere segmentată pe condiții (condition). De asemenea, sunt disponibile programarea trimiterii și testarea A/B a conținutului notificărilor.

Cum funcționează Firebase Cloud Messaging?

Arhitectura FCM se bazează pe trei componente: aplicația client, Firebase Connection Server și serverul aplicației (app server). Clientul se înregistrează în FCM la pornire și primește un token de înregistrare unic — un șir care identifică dispozitivul pentru această aplicație.

Serverul aplicației trimite o cerere către FCM REST API, specificând tokenul destinatarului sau subiectul. Firebase Connection Server livrează mesajul folosind o conexiune XMPP persistentă sau o cerere HTTP. Dacă dispozitivul este offline — mesajul este pus în coadă și livrat la restabilirea conexiunii.

FCM garantează livrarea cu ajutorul cozilor prioritare și al mecanismului de confirmare a primirii. Pe Android, mesajul este stocat până la 28 de zile în coadă, pe iOS — până la 4 săptămâni (prin APNS). După expirarea termenului, mesajul este șters fără notificare.

Ciclul de viață al tokenului FCM

Tokenul de înregistrare se poate modifica în mai multe cazuri: la restaurarea datelor aplicației, la actualizarea la o versiune nouă sau la ștergerea cache-ului. Aplicația trebuie să implementeze FirebaseMessagingService.onNewToken pentru gestionarea actualizării tokenului și sincronizarea cu serverul.

Tipuri de mesaje FCM

FCM suportă două tipuri de încărcătură utilă: notification și data. Fiecare tip determină cum și când este procesat mesajul pe dispozitivul destinatarului.

ParametruNotificationData
Afișare automatăDa, dacă aplicația este în fundalNu, doar în aplicație
ProcesareSistem — în fundal; aplicație — în prim-planÎntotdeauna în aplicație (onMessageReceived)
Dimensiune maximă4 KB4 KB
Chei personalizateLimitate la câmpuri predefiniteOrice perechi cheie-valoare
Necesită CollapseKeyOpționalOpțional pentru grupare

În practică, se recomandă utilizarea mesajelor data dacă aplicația are nevoie de procesarea completă a notificării în onMessageReceived. Mesajele notification sunt potrivite pentru scenarii simple unde afișarea sistemului este suficientă.

FCM și APNS: compararea abordărilor

FCM și APNS sunt cele două servicii principale de livrare push. FCM funcționează ca un gateway cross-platform, APNS — doar pentru ecosistemul Apple. Diferențele lor cheie sunt în arhitectură, cerințele de certificate și mecanismele de rutare.

  • Cross-platform — FCM suportă Android, iOS, Web; APNS doar iOS, macOS, watchOS, tvOS
  • Autentificare — FCM utilizează Server Key sau OAuth 2.0; APNS — certificat sau Token-based (p8 key)
  • Prioritate mesaj — FCM are normal/high; APNS — immediate/power-efficient consideration
  • Subiecte — FCM suportă abonarea la subiecte din cutie; APNS necesită logică de server

Alegerea între FCM și APNS direct depinde de arhitectura proiectului. Pentru aplicații cross-platform, FCM este alegerea optimă. Pentru proiecte doar iOS, este acceptabilă lucrul direct cu APNS prin API HTTP/2.

Când să alegem FCM în locul APNS direct

FCM este justificat când proiectul utilizează simultan Android și iOS, precum și la necesitatea analiticii Firebase, testării A/B a notificărilor sau subiectelor fără logică de server. APNS direct este preferat pentru aplicații doar iOS cu dependențe minime și cerințe stricte privind întârzierea livrării.

Integrare FCM în Android

Pentru conectarea FCM la o aplicație Android, trebuie adăugat Firebase SDK și configurat google-services.json în rădăcina proiectului. După înregistrarea tokenului, aplicația este gata să primească mesaje prin FirebaseMessagingService.

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

După configurare, aplicația primește automat tokenul FCM la prima pornire. Tokenul trebuie trimis la serverul aplicației pentru trimiterea ulterioară a notificărilor pe acest dispozitiv.

Configurarea canalului pentru notificări FCM

Pe Android 8+, înainte de trimiterea unei notificări FCM cu afișare automată, trebuie creat un NotificationChannel. Mesajele notification FCM folosesc canalul cu ID implicit, dar se recomandă crearea propriului canal prin FirebaseMessagingService la primirea primului mesaj. Mesajele data nu necesită canal — aplicația decide singură cum și când să afișeze notificarea.

Integrare FCM în iOS

Pe iOS, FCM acționează ca intermediar între serverul aplicației și APNS. Firebase primește mesajul de la server, îl împachetează în format APNS și îl trimite prin gateway-ul Apple. Dezvoltatorul trebuie să configureze cheia APNS sau certificatul în consola 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")
    }
}

Pe iOS, înregistrarea în APNS are loc asincron. FCM SDK primește automat tokenul APNS și îl transmite serverului Firebase. didReceiveRegistrationToken se declanșează la primirea unui nou token FCM, care combină tokenul APNS cu identificatorul proiectului.

Verificarea stării livrării

FCM oferă consola Firebase pentru monitorizarea livrării: numărul de notificări trimise, primite și afișate. De asemenea, este disponibil un callback de stare prin Firebase Cloud Functions pentru urmărirea erorilor de livrare pe partea serverului. Metrici cheie: impressions (afișări) și opens (deschideri).

Cele mai bune practici FCM

La lucrul cu FCM, este important să alegeți corect tipul de mesaj pentru fiecare scenariu. Pentru notificări simple cu afișare automată, utilizați mesaje notification. Pentru cazurile în care aplicația trebuie să proceseze datele înainte de afișare — mesaje data. Tipul mixt (notification + data) este recomandat doar dacă datele sunt necesare pentru analitică, nu pentru modificarea conținutului notificării.

Gestionați tokenurile centralizat. Stocați tokenurile curente pe server într-un tabel cu legătură la utilizator și platformă. Implementați un mecanism de curățare a tokenurilor învechite: la eroarea NotRegistered sau InvalidRegistration, ștergeți tokenul din bază. Tokenurile se schimbă rar, dar curățarea lor este un element obligatoriu al suportului FCM.

Utilizați chei de colaps (collapseKey) pentru gruparea mesajelor. Dacă trimiteți mai multe notificări de același tip (de exemplu, „actualizare curs valutar”), setați același collapseKey. FCM va livra doar ultimul mesaj din grup, ceea ce reduce încărcarea dispozitivului și nu deranjează utilizatorul cu un val de notificări.

Monitorizați livrarea prin Firebase Console și Cloud Functions. Analitica FCM arată numărul de notificări trimise, primite și afișate. Dacă procentul de afișări este sub 70% — verificați setările canalelor pe Android și permisiunile pe iOS. Livrarea scăzută este adesea legată de canale dezactivate sau interdicția notificărilor. În al cincilea rând: utilizați testarea A/B Firebase pentru optimizarea textului notificărilor și a timpului de trimitere — aceasta crește conversia deschiderilor cu 15–25% conform datelor Firebase.

Întrebări frecvente

Care este diferența dintre FCM și GCM?

FCM este o actualizare evolutivă a GCM (Google Cloud Messaging). FCM oferă configurare simplificată prin Firebase Console, analitică integrată, subiecte și suport pentru Web Push. GCM a fost dezactivat oficial în aprilie 2019, toate proiectele trebuie migrate la FCM.

Câte mesaje pot fi trimise prin FCM gratuit?

Firebase Cloud Messaging este un serviciu gratuit fără limitări privind numărul de mesaje. Plata se percepe doar pentru utilizarea altor servicii Firebase, precum Cloud Functions sau Firestore. FCM nu necesită abonament Spark sau Blaze pentru trimiterea de bază a notificărilor.

De ce se poate schimba tokenul FCM?

Tokenul FCM se schimbă la: restaurarea aplicației din backup, ștergerea datelor aplicației, reinstalare, actualizare la o versiune nouă cu modificarea Sender ID. Procesați întotdeauna onNewToken în FirebaseMessagingService pentru trimiterea noului token la server.

Funcționează FCM în China?

FCM Google este blocat pe teritoriul Chinei. Pentru livrarea notificărilor în China se utilizează servicii alternative: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Pentru livrarea cross-platform se aplică servicii multi-furnizor precum Getui.

Cum verific că FCM este configurat corect?

Utilizați consola Firebase încorporată: selectați „Cloud Messaging” — „Send Test Message”. Introduceți tokenul de test și trimiteți un mesaj notification. Pe dispozitiv ar trebui să apară o notificare. De asemenea, puteți monitoriza logurile FirebaseMessagingService.onMessageReceived.

Rezumat

  • FCM — serviciu cloud cross-platform Google pentru livrarea notificărilor push și a datelor
  • Token — identificator unic al dispozitivului utilizat pentru trimiterea țintită a mesajelor
  • Notification — tip de mesaj cu afișare automată de sistem în modul fundal
  • Data — tip de mesaj cu încărcătură completă procesată doar în aplicație
  • Subiecte — mecanism de trimitere în grup prin abonare la subiecte fără stocarea tokenurilor pe server
  • Gateway APNS — pentru iOS, FCM acționează ca intermediar, transmițând mesajele prin APNS
  • Gratuit — FCM nu percepe taxe pentru numărul de mesaje trimise

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și