Ricevi messaggi su un'app client C++

Per ricevere semplici messaggi downstream, ogni app client deve implementare i metodi sull'API firebase::messaging::Listener .

Inizializza FCM

Prima di poter utilizzare FCM per accedere al token di registrazione o ricevere messaggi, è necessario inizializzarlo.

Per inizializzare FCM, chiama ::firebase::messaging::Initialize e forniscilo con il tuo oggetto ::firebase::App nonché un'implementazione della classe ::firebase::messaging::Listener .

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

Accedi al token di registrazione

All'avvio iniziale della tua app, l'SDK FCM genera un token di registrazione per l'istanza dell'app client. Se desideri 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 messaggi

Per ricevere messaggi, la classe Listener deve implementare la funzione virtuale OnMessage .

Sostituisci OnMessage

Sostituendo il metodo ::firebase::messaging::Listener::OnMessage , puoi eseguire azioni basate sul 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. Nella maggior parte dei casi, i messaggi vengono inviati all'app dopo essere stati avviati dallo sviluppatore. I messaggi vengono inviati anche all'app per rappresentare eventi di invio di messaggi, eventi di errore di invio di messaggi ed eventi di eliminazione di 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 sospeso. Message::message_type sarà "deleted_messages" . I messaggi potrebbero essere eliminati a causa di:

  1. Troppi messaggi archiviati 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.

  2. Il dispositivo non si connette da molto tempo e il server dell'app ha recentemente inviato (nelle ultime 4 settimane) un messaggio all'app su quel dispositivo.

    Si consiglia che l'app esegua una sincronizzazione completa con il server dell'app dopo aver ricevuto questa chiamata.