Ricevi messaggi su un'app client C++

Per ricevere messaggi downstream semplici, 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 differenziati 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 potrebbero essere eliminati a causa di:

  1. Troppi messaggi memorizzati sul server FCM.

    Ciò può verificarsi quando i server di un'app inviano una serie di messaggi non comprimibili ai server di FCM mentre il dispositivo è offline.

  2. 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.