Questa guida descrive come configurare Firebase Cloud Messaging nelle tue app client web e mobile in modo da poter ricevere messaggi in modo affidabile.
Per ricevere messaggi downstream, ogni app client deve implementare i metodi dell'API firebase::messaging::Listener
.
Inizializza FCM
Prima di poter utilizzare FCM per accedere al token di registrazione o ricevere messaggi, 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
.
Override OnMessage
Eseguendo l'override del 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 entrata. Più comunemente,
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 dei messaggi, gli eventi di errore di invio dei messaggi
e gli eventi di eliminazione dei messaggi. Questi eventi speciali possono essere
distinti controllando il campo Message::message_type
.
Messaggi eliminati
Inviato alla tua app quando il server FCM elimina i messaggi in attesa.
Message::message_type
sarà "deleted_messages"
. I messaggi possono essere eliminati
per i seguenti motivi:
Troppi messaggi memorizzati sul server FCM.
Ciò può verificarsi quando i server di un'app inviano una serie di messaggi non comprimibili ai server FCM mentre il dispositivo è offline.
Il dispositivo non si connette da molto tempo e il server dell'app ha inviato di recente (nelle ultime 4 settimane) un messaggio all'app su quel dispositivo.
Ti consigliamo di eseguire una sincronizzazione completa con il server dell'app dopo aver ricevuto questa chiamata.