Ricevi messaggi su un'app client C++

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:

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

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