Odbieranie wiadomości w aplikacjach w C++

Wybierz platformę: iOS+ Android Web Flutter Unity C++


Aby otrzymywać wiadomości downstream, każda aplikacja kliencka musi implementować metody interfejsu API firebase::messaging::Listener.

Zainicjuj FCM

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

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

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

Uzyskiwanie dostępu do tokena rejestracji

Przy pierwszym uruchomieniu aplikacji pakiet SDK FCM 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.

Wartość tokena możesz uzyskać za pomocą funkcji wirtualnej ::firebase::messaging::Listener::OnTokenReceived.

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

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

Odbieranie i obsługiwanie wiadomości

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

Zastąp: OnMessage

Zastępując metodę ::firebase::messaging::Listener::OnMessage, możesz wykonywać działania na podstawie otrzymanej wiadomości i pobierać 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 dewelopera. Wiadomości są też wysyłane do aplikacji, aby reprezentować zdarzenia wysłania wiadomości, zdarzenia błędu wysyłania wiadomości i zdarzenia usunięcia wiadomości. Te zdarzenia specjalne można rozróżnić, sprawdzając pole Message::message_type.

Wiadomości zostały usunięte

Wysyłany do aplikacji, gdy serwer FCM usuwa oczekujące wiadomości. Message::message_type będzie kosztować "deleted_messages". Wiadomości mogą zostać usunięte z powodu:

  1. Na serwerze FCM jest przechowywanych zbyt wiele wiadomości.

    Może się tak zdarzyć, gdy serwery aplikacji wysyłają wiele wiadomości, których nie można zwinąć, do serwerów FCM, gdy urządzenie jest offline.

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

    Zalecamy, aby po otrzymaniu tego wywołania aplikacja przeprowadziła pełną synchronizację z serwerem aplikacji.