Per ricevere semplici messaggi a valle, ogni app client deve implementare i metodi nell'API firebase::messaging::Listener
.
Inizializza FCM
Prima di poter utilizzare FCM per accedere al tuo token di registrazione o ricevere messaggi, è necessario che sia 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 una registrazione per l'istanza dell'app client. Se vuoi scegliere come target singoli dispositivi oppure crea gruppi di dispositivi per FCM, dovrai accedere a questo token.
Puoi accedere al valore del token tramite
::firebase::messaging::Listener::OnTokenReceived
funzione virtuale.
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 tua classe Listener deve implementare il metodo
OnMessage
funzione virtuale.
Esegui l'override di OnMessage
Eseguendo l'override del metodo
::firebase::messaging::Listener::OnMessage
,
puoi eseguire azioni in base al messaggio ricevuto e recuperare 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. Più comunemente,
i messaggi vengono inviati all'app dopo essere stati avviati dallo sviluppatore. Messaggi
vengono inviati anche all'app per rappresentare gli eventi di invio dei messaggi, l'errore di invio dei messaggi
eventi e messaggi eliminati, eventi. Questi eventi speciali possono essere
controllando il campo Message::message_type
.
Messaggi eliminati
Inviato 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 in scadenza
a:
Troppi messaggi archiviati sul server FCM.
Questo può verificarsi quando i server di un'app inviano una serie di messaggi ai server FCM quando il dispositivo è offline.
Il dispositivo non si connette da molto tempo e il server delle app ha di recente (nelle ultime 4 settimane) ha inviato un messaggio all'app dispositivo.
È consigliabile che l'app esegua una sincronizzazione completa con l'app server dopo aver ricevuto la chiamata.