Ricevi messaggi su un'app client C++

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:

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

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