Firebase Cloud Messaging (FCM): push notifications
Firebase Cloud Messaging e il servizio di Google per inviare notifiche push a iOS, Android e Web. E gratuito, scalabile e supporta topic, segment, dati custom e notifiche di sistema. E lo strumento più usato per il push, anche da team che non usano altri servizi Firebase.
Token e topic
Ogni installazione genera un FCM token, che il backend usa per inviare push individuali. I topic sono canali tematici (es. "news_it", "promo_milano") a cui l'app puo sottoscriversi: un messaggio inviato al topic raggiunge tutti gli iscritti senza dover gestire token singoli.
Payload e priorità
I payload possono includere una notification (titolo, body, icona) e un data dictionary (contenuto custom). Le notification con priority high arrivano subito; quelle con priority normal possono essere ritardate per risparmio batteria. Su iOS serve aps con content-available per il background fetch.
Notification vs data messages
I messaggi notification vengono gestiti automaticamente dal sistema (badge, sound). I messaggi data passano alla tua app per logica custom. I combined (notification + data) sono i più usati. Su iOS in background solo data messages con content-available eseguono codice; le notification messages sono visualizzate dal sistema senza coinvolgere l'app.
Segmentazione
FCM offre tre meccanismi: topic (sub semplici), audience (Analytics-based), token list. Per campagne marketing, le audience Firebase Analytics sono il modo più ricco. Per notifiche transazionali, invia per token individuali. Topic e ottimo per notifiche broadcast (news, sport, meteo).
Deliverability
Tasso di delivery dipende da: priority (high vs normal), comportamento dell'utente (DND, battery saver), versione OS. Su Android la batteria adattiva puo ritardare notifiche di app raramente usate. Monitora le metriche di delivery in Firebase Notifications Composer per ottimizzare.
Privacy e GDPR
Per inviare notifiche marketing serve consenso esplicito. Distinguilo dal consenso a notifiche transazionali (es. ordini, sicurezza). Documenta l'opt-in nel CRM/database. Apple e Google possono rimuovere app che mandano notifiche non richieste o ingannevoli.
HTTP v1 API
FCM legacy API e deprecato. HTTP v1 e l'API moderna: autenticazione OAuth2 invece di server key, payload più flessibile (platform-specific options per Android, iOS, Web). Migra al più presto se hai integrazioni server-side ancora su legacy. La migrazione richiede service account JSON e libreria Admin SDK aggiornata.
Topic vs token
Topic e ottimo per broadcast (notifiche generali, news). Token sono per messaggi personalizzati. Topic ha limite di 2000 sub al secondo, e meno granulare di token list (max 500 token per request). Combina i due: topic per categoria + token per messaggi mirati. Mantieni il database token sempre aggiornato, gestendo onTokenRefresh e disinstallazioni.
Procedura passo-passo
- Configura APNs per iOS in console Firebase (chiave .p8).
- Aggiungi l'SDK FirebaseMessaging in entrambe le piattaforme.
- Richiedi i permessi di notifica all'utente.
- Ottieni il token e invialo al tuo backend.
- Implementa la gestione dei messaggi in foreground e background.
- Crea topic per segmentazione semplice.
- Invia push di test dal Notification Composer della console.
Notification permissions Android 13+
Android 13 introduce POST_NOTIFICATIONS runtime permission. App devono richiederlo esplicitamente. Imposta targetSdkVersion >= 33 per behavior moderno. Strategia: chiedi permesso al momento giusto (dopo onboarding, prima di feature che usa notifiche), non al primo lancio. Tasso di accettazione varia tra 40-70% in base a contesto e messaging.
FCM e WebPush
FCM gestisce anche WebPush per browser. SDK JavaScript con service worker, VAPID key configurate in console. Stesso topic e token system del mobile. Permette campagne unificate su mobile e web. Limite: Safari supporta WebPush solo da macOS 13 e iOS 16.4+, con quirks specifici da gestire.
Errori comuni e come risolverli
- Push non arrivano su iOS: verifica APNs key e capability nel target.
- Notifiche silenziose ignorate: priority high e content-available sono fondamentali.
- Token cambiato non aggiornato: ascolta onTokenRefresh.
- Permessi rifiutati: chiedi nel momento giusto, non al primo avvio.
- Localizzazione mancante: usa fields title_loc_key e body_loc_key.
Domande frequenti
D: FCM e gratuito?
R: Si, anche con volumi alti. Solo limiti su throughput aggregato.
D: Posso inviare push a web?
R: Si, FCM supporta browser via Web Push Protocol e service worker.
D: Posso usare FCM con backend personalizzato?
R: Si, tramite Admin SDK o HTTP v1 API.
D: Posso schedulare push per orari specifici?
R: FCM non supporta schedule nativo. Usa backend con cron o servizi come OneSignal per scheduling.
Strategia notifiche
Definisci tipologie chiare: transazionali (ordini, sicurezza), informative (news), promozionali (marketing). Categorizza per priorità e consenso. Mai abuso di push: utenti disattivano facilmente. Una notifica utile vale più di dieci spam. Misura opt-out rate per release: se sale, rivedi strategia.
La gestione corretta dei token FCM e un'area frequentemente sottovalutata. Implementare onTokenRefresh per aggiornare backend, gestire deletion di token per logout, pulizia di token invalidi su retorno failed. Senza buona token hygiene, il database accumula migliaia di token morti che falsano analytics di delivery e sprecano risorse di invio.
Hai bisogno di aiuto?
Se vuoi sviluppare la tua app con G Tech Group, scrivici tramite il modulo di contatto.