Odbieraj wiadomości w aplikacji klienckiej C++

Aby odbierać proste komunikaty, każda aplikacja kliencka musi zaimplementować metody w interfejsie API firebase::messaging::Listener .

Zainicjuj FCM

Zanim będzie można używać FCM do uzyskiwania dostępu do tokena rejestracyjnego lub odbierania wiadomości, należy go zainicjować.

Aby zainicjować FCM, wywołaj ::firebase::messaging::Initialize i podaj do niego swój obiekt ::firebase::App oraz implementację klasy ::firebase::messaging::Listener .

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

Uzyskaj dostęp do tokena rejestracyjnego

Podczas pierwszego uruchomienia aplikacji zestaw FCM SDK generuje token rejestracji dla instancji aplikacji klienckiej. Jeśli chcesz kierować reklamy na pojedyncze urządzenia lub tworzyć grupy urządzeń dla FCM, musisz uzyskać dostęp do tego tokena.

Dostęp do wartości tokena można uzyskać poprzez funkcję wirtualną ::firebase::messaging::Listener::OnTokenReceived .

void OnTokenReceived(const char* token) {
  LogMessage("The registration token is `%s`", token);

  // TODO: If necessary send token to application server.
}

Odbieraj i obsługuj wiadomości

Aby odbierać wiadomości, klasa Listener musi implementować funkcję wirtualną OnMessage .

Zastąp OnMessage

Zastępując metodę ::firebase::messaging::Listener::OnMessage , możesz wykonywać akcje na podstawie otrzymanej wiadomości i uzyskać dane wiadomości:

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());
}

Wiadomości mogą reprezentować różne rodzaje danych przychodzących. Najczęściej wiadomości są wysyłane do aplikacji po zainicjowaniu przez programistę. Wiadomości są również wysyłane do aplikacji w celu reprezentowania zdarzeń wysłania wiadomości, zdarzeń błędów wysłania wiadomości i zdarzeń usunięcia wiadomości. Te specjalne zdarzenia można rozróżnić zaznaczając pole Message::message_type .

Wiadomości usunięte

Wysyłane do Twojej aplikacji, gdy serwer FCM usuwa oczekujące wiadomości. Message::message_type będzie mieć wartość "deleted_messages" . Wiadomości mogą zostać usunięte z następujących powodów:

  1. Zbyt wiele wiadomości przechowywanych na serwerze FCM.

    Taka sytuacja może wystąpić, gdy serwery aplikacji wysyłają kilka niezwijalnych wiadomości do serwerów FCM, gdy urządzenie jest w trybie offline.

  2. Urządzenie nie było połączone od dłuższego czasu, a serwer aplikacji niedawno (w ciągu ostatnich 4 tygodni) wysłał wiadomość do aplikacji na tym urządzeniu.

    Zaleca się, aby po odebraniu tego połączenia aplikacja przeprowadziła pełną synchronizację z serwerem aplikacji.