Per ricevere messaggi downstream semplici, ogni app client deve implementare i
metodi nell'API
firebase::messaging::Listener
.
Inizializza FCM
Prima di poter utilizzare FCM per accedere al token di registrazione o ricevere messaggi, questo deve essere inizializzato.
Per inizializzare FCM, chiama
::firebase::messaging::Initialize
e fornisci l'oggetto
::firebase::App
e un'implementazione della classe
::firebase::messaging::Listener
.
MyListener my_listener_implementation; ::firebase::messaging::Initialize(app, &my_listener_implementation);
Accedere al token di registrazione
All'avvio iniziale dell'app, l'SDK FCM genera un token di registrazione per l'istanza dell'app client. Se vuoi scegliere come target singoli dispositivi o creare gruppi di dispositivi per FCM, dovrai accedere a questo token.
Puoi accedere al valore del token tramite la funzione virtuale ::firebase::messaging::Listener::OnTokenReceived
.
void OnTokenReceived(const char* token) { LogMessage("The registration token is `%s`", token); // TODO: If necessary send token to application server. }
Ricevere e gestire i messaggi
Per ricevere messaggi, la classe Listener deve implementare la funzione virtuale
OnMessage
Esegui l'override di OnMessage
Sostituendo il metodo
::firebase::messaging::Listener::OnMessage
,
puoi eseguire azioni in base al messaggio ricevuto e ottenere i dati del messaggio:
void OnMessage(const ::firebase::messaging::Message& message) { LogMessage(TAG, "From: %s", message.from.c_str()); LogMessage(TAG, "Message ID: %s", message.message_id.c_str()); }
I messaggi possono rappresentare diversi tipi di dati in arrivo. In genere, i messaggi vengono inviati all'app dopo essere stati avviati dallo sviluppatore. I messaggi
vengono inviati anche alla tua app per rappresentare gli eventi di invio di messaggi, gli eventi di invio
di messaggi e gli eventi di messaggi eliminati. Questi eventi speciali possono essere differenziati controllando il campo Message::message_type
.
Messaggi eliminati
Inviata alla tua app quando il server FCM elimina i messaggi in attesa.
Il valore di Message::message_type
sarà "deleted_messages"
. I messaggi potrebbero essere eliminati per:
Troppi messaggi archiviati sul server FCM.
Questo può accadere quando i server di un'app inviano una serie di messaggi non comprimibili ai server FCM mentre il dispositivo è offline.
Il dispositivo non si è connesso da molto tempo e il server dell'app ha recentemente (nelle ultime 4 settimane) inviato un messaggio all'app sul dispositivo.
È consigliabile che l'app esegua una sincronizzazione completa con il server delle app dopo aver ricevuto questa chiamata.