FCM — cos'è, principi di Firebase Cloud Messaging nello sviluppo

Autore: IT Sectr Pubblicato: 2026-03-19 Tempo di lettura: 8 min

FCM (Firebase Cloud Messaging) è un servizio multipiattaforma di Google per la consegna di notifiche push e il trasferimento di dati tra un server e applicazioni mobili. Supporta Android, iOS e piattaforme web tramite un'unica API. Secondo la Documentazione Firebase, FCM elabora oltre 1 miliardo di messaggi ogni giorno in tutto il mondo.

Punti chiave

  • FCM è un servizio multipiattaforma di Google per l'invio di notifiche push e dati
  • Architettura — il client riceve un token di registrazione, il server invia messaggi tramite Firebase Connection Server
  • Tipi di messaggi — notification (visualizzazione automatica) e data (elaborazione completa nell'app)
  • Consegna — FCM utilizza una connessione persistente o code prioritarie per la consegna garantita
  • Integrazione — configurazione tramite Firebase SDK, impostazione di google-services.json e configurazione del server

Cos'è FCM?

Firebase Cloud Messaging (FCM) è un servizio cloud di Google che garantisce la consegna affidabile di notifiche push e messaggi di dati ai dispositivi mobili. Precedentemente noto come Google Cloud Messaging (GCM), FCM è diventato lo strumento principale per le notifiche multipiattaforma nell'ecosistema Firebase.

FCM seleziona automaticamente il canale di consegna ottimale in base alla piattaforma: su Android utilizza la propria connessione FCM; su iOS utilizza APNS (tramite il gateway FCM). Lo sviluppatore non deve implementare due integrazioni diverse — FCM gestisce il routing.

Il servizio fornisce un'API REST unificata e un Admin SDK per l'invio di messaggi. Ciò consente di inviare notifiche dal lato server senza essere vincolati a una piattaforma di destinatario specifica.

Capacità chiave di FCM

FCM supporta diverse modalità di consegna: un singolo messaggio a un dispositivo specifico, trasmissione di gruppo per argomento e invio segmentato per condizioni. L'invio programmato e il test A/B del contenuto delle notifiche sono anche disponibili.

Come funziona Firebase Cloud Messaging?

L'architettura di FCM si basa su tre componenti: l'applicazione client, il Firebase Connection Server e il server applicativo. Il client si registra a FCM all'avvio e riceve un token di registrazione univoco — una stringa che identifica il dispositivo per l'applicazione data.

Il server applicativo invia una richiesta all'API REST di FCM, specificando il token del destinatario o l'argomento. Il Firebase Connection Server consegna il messaggio utilizzando una connessione XMPP persistente o una richiesta HTTP. Se il dispositivo è offline, il messaggio viene messo in coda e consegnato quando la connessione viene ripristinata.

FCM garantisce la consegna utilizzando code prioritarie e un meccanismo di conferma. Su Android, il messaggio viene memorizzato fino a 28 giorni in coda; su iOS, fino a 4 settimane (tramite APNS). Dopo la data di scadenza, il messaggio viene eliminato senza notifica.

Ciclo di vita del token FCM

Il token di registrazione può cambiare in diversi casi: durante il ripristino dei dati dell'app, durante l'aggiornamento a una nuova versione o durante la pulizia della cache. L'app deve implementare FirebaseMessagingService.onNewToken per gestire gli aggiornamenti del token e sincronizzarsi con il server.

Tipi di messaggi FCM

FCM supporta due tipi di payload: notification e data. Ogni tipo determina come e quando il messaggio viene elaborato sul dispositivo del destinatario.

ParametroNotificationData
Visualizzazione automaticaSì, se l'app è in backgroundNo, solo nell'app
ElaborazioneSistema/NOS — in background; app — in primo pianoSempre nell'app (onMessageReceived)
Dimensione massima4 KB4 KB
Chiavi personalizzateLimitato a campi predefinitiQualsiasi coppia chiave-valore
Richiede CollapseKeyOpzionaleOpzionale per raggruppamento

In pratica, si raccomanda di utilizzare messaggi data quando l'app necessita di elaborazione completa della notifica in onMessageReceived. I messaggi notification sono adatti per scenari semplici dove la visualizzazione di sistema è sufficiente.

FCM e APNS: confronto degli approcci

FCM e APNS sono i due principali servizi di consegna push. FCM funziona come un gateway multipiattaforma, mentre APNS è solo per l'ecosistema Apple. Le loro differenze principali risiedono nell'architettura, nei requisiti dei certificati e nei meccanismi di routing.

  • Multipiattaforma — FCM supporta Android, iOS, Web; APNS solo iOS, macOS, watchOS, tvOS
  • Autenticazione — FCM utilizza Server Key o OAuth 2.0; APNS utilizza un certificato o Token-based (chiave p8)
  • Priorità del messaggio — FCM ha normal/high; APNS ha immediate/power-efficient consideration
  • Argomenti — FCM supporta l'iscrizione agli argomenti nativamente; APNS richiede logica server

La scelta tra FCM e APNS diretto dipende dall'architettura del progetto. Per applicazioni multipiattaforma, FCM è la scelta ottimale. Per progetti solo iOS, il lavoro diretto con APNS tramite API HTTP/2 è accettabile.

Quando scegliere FCM invece di APNS diretto

FCM è giustificato quando il progetto utilizza sia Android che iOS simultaneamente, così come quando sono necessarie analisi Firebase, test A/B delle notifiche o argomenti senza logica server. APNS diretto è preferibile per applicazioni solo iOS con dipendenze minime e requisiti rigorosi di latenza di consegna.

Integrazione di FCM in Android

Per connettere FCM a un'applicazione Android, è necessario aggiungere l'SDK Firebase e configurare google-services.json nella radice del progetto. Dopo la registrazione del token, l'applicazione è pronta per ricevere messaggi tramite 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)
        }
    }
}

Dopo la configurazione, l'applicazione riceve automaticamente un token FCM al primo avvio. Il token deve essere inviato al server dell'applicazione per l'invio successivo di notifiche a questo dispositivo.

Configurazione di un canale per le notifiche FCM

Su Android 8+, prima di inviare una notifica FCM con visualizzazione automatica, è necessario creare un NotificationChannel. I messaggi notification FCM utilizzano l'ID canale predefinito, ma si consiglia di creare un canale personalizzato tramite FirebaseMessagingService al ricevimento del primo messaggio. I messaggi data non richiedono un canale — l'app decide da sola come e quando mostrare la notifica.

Integrazione di FCM in iOS

Su iOS, FCM funge da intermediario tra il server dell'applicazione e APNS. Firebase riceve il messaggio dal server, lo avvolge in formato APNS e lo invia tramite il gateway Apple. Lo sviluppatore deve configurare una chiave o un certificato APNS nella console 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")
    }
}

Su iOS, la registrazione APNS avviene in modo asincrono. L'SDK FCM ottiene automaticamente il token APNS e lo passa al server Firebase. didReceiveRegistrationToken si attiva al ricevimento di un nuovo token FCM, che combina il token APNS con l'identificatore del progetto.

Verifica dello stato di consegna

FCM fornisce una console Firebase per monitorare la consegna: il numero di notifiche inviate, ricevute e visualizzate. Un callback di stato è anche disponibile tramite Firebase Cloud Functions per tracciare gli errori di consegna sul lato server. Metriche chiave: impressioni e aperture delle notifiche.

Migliori pratiche FCM

Quando si lavora con FCM, è importante scegliere il tipo di messaggio corretto per ogni scenario. Per notifiche semplici con visualizzazione automatica, utilizzare messaggi notification. Per i casi in cui l'app deve elaborare i dati prima della visualizzazione, utilizzare messaggi data. Un tipo misto (notification + data) è consigliato solo se i dati sono necessari per l'analisi e non per modificare il contenuto della notifica.

Gestisci i token in modo centralizzato. Memorizza i token correnti sul server in una tabella collegata all'utente e alla piattaforma. Implementa un meccanismo di pulizia dei token obsoleti: quando incontri un errore NotRegistered o InvalidRegistration, elimina il token dal database. I token cambiano raramente, ma la loro pulizia è un elemento obbligatorio del supporto FCM.

Utilizza chiavi di collasso (collapseKey) per raggruppare i messaggi. Se stai inviando più notifiche dello stesso tipo (ad esempio, "aggiornamento del tasso di cambio"), imposta lo stesso collapseKey. FCM consegnerà solo l'ultimo messaggio del gruppo, riducendo il carico sul dispositivo ed evitando di sovraccaricare l'utente con notifiche.

Monitora la consegna tramite la Firebase Console e Cloud Functions. Le analisi FCM mostrano il numero di notifiche inviate, ricevute e visualizzate. Se il tasso di visualizzazione è inferiore al 70%, controlla le impostazioni dei canali su Android e le autorizzazioni su iOS. Una consegna bassa è spesso correlata a canali disabilitati o divieti di notifica. Quinto: utilizza i test A/B di Firebase per ottimizzare il testo delle notifiche e l'orario di invio — questo aumenta il tasso di apertura del 15–25% secondo i dati Firebase.

Domande frequenti

Qual è la differenza tra FCM e GCM?

FCM è l'aggiornamento evolutivo di GCM (Google Cloud Messaging). FCM offre configurazione semplificata tramite Firebase Console, analisi integrate, argomenti e supporto Web Push. GCM è stato ufficialmente dismesso nell'aprile 2019, tutti i progetti devono essere migrati a FCM.

Quanti messaggi possono essere inviati tramite FCM gratuitamente?

Firebase Cloud Messaging è un servizio gratuito senza limiti sul numero di messaggi. Il pagamento è addebitato solo per l'utilizzo di altri servizi Firebase come Cloud Functions o Firestore. FCM non richiede un abbonamento Spark o Blaze per l'invio di base delle notifiche.

Perché il token FCM può cambiare?

Il token FCM cambia quando: si ripristina l'app da un backup, si cancellano i dati dell'app, si re-installa, si aggiorna a una nuova versione con un Sender ID modificato. Gestisci sempre onNewToken in FirebaseMessagingService per inviare il nuovo token al server.

FCM funziona in Cina?

FCM di Google è bloccato in Cina. Per la consegna di notifiche in Cina, vengono utilizzati servizi alternativi: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Per la consegna multipiattaforma, vengono utilizzati servizi multi-provider come Getui.

Come verificare che FCM sia configurato correttamente?

Utilizza la console Firebase integrata: seleziona "Cloud Messaging" — "Send Test Message". Inserisci un token di test e invia un messaggio notification. La notifica dovrebbe apparire sul dispositivo. Puoi anche monitorare i log di FirebaseMessagingService.onMessageReceived.

Riepilogo

  • FCM è un servizio cloud multipiattaforma di Google per la consegna di notifiche push e dati
  • Token è un identificatore univoco del dispositivo utilizzato per l'invio mirato di messaggi
  • Notification è un tipo di messaggio con visualizzazione automatica da parte del sistema in modalità background
  • Data è un tipo di messaggio con payload completo elaborato solo all'interno dell'app
  • Argomenti è un meccanismo di trasmissione di gruppo basato sull'iscrizione agli argomenti senza memorizzare i token sul server
  • Gateway APNS — per iOS, FCM funge da intermediario, inoltrando i messaggi tramite APNS
  • Gratuito — FCM non addebita il numero di messaggi inviati

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche