Le notifiche Push sono messaggi inviati dal server a un dispositivo mobile anche quando l’app è chiusa. Secondo Google Firebase, 2024, le notifiche Push vengono elaborate tramite servizi specializzati — FCM su Android e APNS su iOS — che supportano la consegna in tempo reale a milioni di dispositivi contemporaneamente. Sono diventate una parte integrante dell’esperienza utente nelle moderne applicazioni mobili.
Punti chiave
Le notifiche Push sono messaggi brevi che il server dell’app invia al dispositivo dell’utente senza una richiesta esplicita. Appaiono come banner, badge sull’icona o segnali acustici, attirando l’attenzione dell’utente verso l’app e informandolo sugli eventi importanti.
Una notifica Push consiste in un titolo, un corpo del messaggio e dati opzionali (payload). A differenza degli SMS, le notifiche Push sono gratuite per l’utente e vengono consegnate tramite l’infrastruttura di servizi cloud — FCM per Android e APNS per iOS. Gli obiettivi principali delle notifiche Push sono: aumentare il coinvolgimento, informare sugli eventi e riportare l’utente nell’app.
Le statistiche di utilizzo mostrano che le notifiche Push configurate correttamente aumentano la fidelizzazione dell’app del 30–60%. Tuttavia, una frequenza eccessiva di notifiche porta a disiscrizioni — oltre il 60% degli utenti disattiva le notifiche se vengono inviate più di tre volte al giorno.
Un sistema Push include tre componenti: il server dell’app, il servizio di piattaforma (FCM/APNS) e l’app client sul dispositivo. Il server invia una richiesta al servizio di piattaforma, che consegna la notifica al dispositivo di destinazione tramite una connessione persistente con il sistema operativo.
Il meccanismo di consegna delle notifiche Push si basa su una connessione persistente tra il dispositivo e il servizio di piattaforma. Il sistema operativo mantiene un canale di comunicazione crittografato attraverso cui passano tutti i messaggi Push.
Al primo avvio, l’app richiede l’autorizzazione per inviare notifiche e riceve un token univoco del dispositivo da FCM o APNS. Questo token è una stringa lunga fino a 4 KB che identifica in modo univoco l’istanza dell’app. Il token cambia quando l’app viene reinstallata o il dispositivo viene ripristinato da un backup.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
Il server dell’app invia una richiesta HTTP all’API FCM o all’API APNS, specificando il token di destinazione, il titolo, il corpo e i dati aggiuntivi. Il servizio di piattaforma risponde con uno stato di consegna: successo, token non valido (il dispositivo ha disinstallato l’app) o limite di velocità superato.
fetch("https://fcm.googleapis.com/fcm/send", {
method: "POST",
headers: {
"Authorization": "key=AIzaSy...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "device_token_here",
notification: {
title: "Nuovo messaggio",
body: "Hai una nuova notifica!"
}
})
})
La scelta tra FCM e APNS dipende dalla piattaforma di destinazione. FCM supporta Android e iOS, mentre APNS supporta solo l’ecosistema Apple. Esaminiamo le principali differenze importanti per lo sviluppo di app mobili multipiattaforma.
FCM è un servizio Google che funziona su Google Play Services. Supporta due schemi di consegna: notifiche con visualizzazione automatica e notifiche di dati che l’app gestisce da sola. FCM è gratuito e non ha limiti sul numero di messaggi inviati.
APNS è il servizio di Apple con supporto per allegati multimediali (immagini, video, audio) fino a 10 MB. L’invio tramite APNS richiede un certificato TLS o una chiave di autenticazione. APNS limita la frequenza di invio a un singolo dispositivo — non più di 150 notifiche al minuto, dopodiché si attiva la limitazione della velocità.
| Caratteristica | FCM | APNS |
|---|---|---|
| Piattaforme | Android, iOS, Web | iOS, macOS, watchOS |
| Requisiti | Google Play Services | Apple Developer Program |
| Multimedia | fino a 4 KB (dati) | fino a 10 MB (allegati) |
| Priorità | normale/alta | immediata/risparmio energetico |
| Costo | gratuito | gratuito (conto necessario) |
Le notifiche Push sono classificate per metodo di visualizzazione e scopo. Comprendere i tipi aiuta a scegliere la strategia giusta per ogni scenario di interazione con l’utente.
Il tipo più comune — una notifica visualizzata con titolo e corpo. Il sistema operativo la mostra automaticamente nel pannello notifiche, sulla schermata di blocco e come banner. Lo sviluppatore può configurare suono, vibrazione, badge dell’icona e pulsanti di azione per azioni dirette (rispondi, apri, ignora).
Le notifiche di dati contengono solo payload senza visualizzazione. L’app le elabora in background: sincronizza i dati, aggiorna la cache o avvia download. Su Android, le notifiche di dati vengono consegnate in modo affidabile; su iOS, solo quando l’app è attiva o attraverso il recupero in background.
I sistemi operativi mobili moderni supportano notifiche rich e multimediali con immagini, GIF, video e audio. Su iOS, questo è implementato tramite UNNotificationAttachment; su Android, tramite BigPictureStyle e InboxStyle per personalizzare l’aspetto della notifica nel pannello di sistema.
Le notifiche silenziose non vengono mostrate all’utente e vengono utilizzate per la sincronizzazione in background. Su iOS, hanno alta priorità per attività come l’aggiornamento dei dati prima di aprire l’app. Android le tratta come notifiche di dati con priorità minima.
La configurazione delle notifiche Push richiede azioni a livello di infrastruttura, server e codice client. Esaminiamo il processo tipico per un progetto mobile multipiattaforma.
Per Android, è necessario creare un progetto nella Firebase Console, aggiungere google-services.json al progetto e configurare FirebaseMessagingService. Il token del dispositivo si ottiene tramite FirebaseInstanceId o FirebaseMessaging.getInstance().token, dopodiché viene inviato al server tramite API al primo avvio o al momento del cambiamento.
Per iOS, sono necessari un abbonamento Apple Developer Program, la creazione di un certificato Push o di una chiave APNS nel Developer Portal e l’attivazione della funzionalità Push Notifications in Xcode. La registrazione delle notifiche avviene tramite UIApplication.shared.registerForRemoteNotifications, ricevendo il deviceToken in AppDelegate.
import UIKit
import UserNotifications
@main
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
let token = deviceToken
.map { String.format("%02x", $0) }
.joined()
// invia token al tuo server
}
}
Lato server, le notifiche Push vengono inviate tramite REST API o Admin SDK. FCM utilizza Firebase Admin SDK (disponibile per Node.js, Java, Python, Go), mentre APNS utilizza librerie pusher (pushy per Java, apn2 per Node.js). Si raccomanda di memorizzare i token in un database con timestamp dell’ultimo aggiornamento.
La sicurezza delle notifiche Push è di fondamentale importanza, poiché dati riservati possono essere trasmessi attraverso di esse. Entrambe le piattaforme forniscono meccanismi di protezione di base, ma lo sviluppatore deve usarli correttamente.
Il payload di una notifica Push può contenere dati personali degli utenti: nomi, importi delle transazioni, link ai messaggi. Anche se il canale di comunicazione tra FCM/APNS e il dispositivo è crittografato, i dati possono essere intercettati a livello di app se un software di terze parti intercetta la notifica. Si raccomanda di crittografare il payload sensibile sul server utilizzando AES-256 e decrittografarlo sul dispositivo utilizzando una chiave memorizzata in Keychain (iOS) o EncryptedSharedPreferences (Android).
Il token del dispositivo è un identificatore di sessione che può essere compromesso in caso di hacking del dispositivo o intercettazione del traffico. Il server dell’app deve validare i token prima dell’invio: verificarli con il database, tracciare i token inattivi e rimuoverli in caso di errori InvalidToken ripetuti. FCM e APNS restituiscono lo stato InvalidRegistration per token non validi — non ignorarlo.
Senza controllo della frequenza, le notifiche Push possono diventare uno strumento di spam che infastidisce gli utenti e riduce la fidelizzazione. Imposta limiti lato server: non più di 5 notifiche all’ora per un singolo utente e non più di 3 messaggi identici. Per le notifiche transazionali (conferma ordine, cambio password), i limiti possono essere più alti — fino a 10 all’ora, poiché contengono informazioni critiche. Utilizza la limitazione della velocità a livello di API di invio in modo che un utente malintenzionato non possa attivare notifiche di massa tramite il tuo server.
Domande frequenti
Sì, ma la connessione diretta ad APNS non è supportata su Android — i dispositivi senza Google Play Services utilizzano alternative come Huawei Mobile Services (HMS) e connessioni WebSocket personalizzate. Tuttavia, FCM rimane lo standard per la maggior parte delle app grazie alla sua gratuità e affidabilità.
FCM e APNS conservano l’ultima notifica sui propri server e la consegnano quando la connessione viene ripristinata. Ogni dispositivo memorizza solo l’ultima notifica di ciascuna app, quindi i messaggi intermedi vengono persi durante l’assenza prolungata di rete.
Le ragioni più comuni sono un certificato Push scaduto (valido 1 anno), un token del dispositivo non valido, notifiche disattivate nelle impostazioni o modalità risparmio energetico attivata. Controlla il certificato nella Apple Developer Console e assicurati che l’app richieda l’autorizzazione tramite UNUserNotificationCenter.
Su Android, utilizza PendingIntent in NotificationCompat.Builder con tracciamento dell’apertura tramite Intent. Su iOS, utilizza il metodo UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). FCM fornisce report di consegna e apertura per ogni notifica inviata.
Minimamente — le notifiche Push non mantengono una connessione costante; il sistema operativo utilizza un unico canale di sistema per tutte le app, riducendo al minimo il consumo energetico complessivo. L’invio frequente (ogni 5 minuti) consuma più energia riattivando il dispositivo dalla modalità sospensione. Le notifiche silenziose su iOS consumano più batteria a causa dell’attivazione dell’app in background per elaborare i dati ricevuti.
Riepilogo
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.
Leggi anche