Aby otrzymywać proste wiadomości wysyłane do klienta, każda aplikacja kliencka musi zaimplementować metody w interfejsie firebase::messaging::Listener
API.
Zainicjuj FCM
Zanim zaczniesz używać FCM do uzyskiwania dostępu do tokena rejestracji lub odbierania wiadomości, musisz 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);
Dostęp do tokena rejestracji
Podczas pierwszego uruchomienia aplikacji pakiet SDK FCM generuje token rejestracyjny dla instancji aplikacji klienta. Jeśli chcesz kierować reklamy na pojedyncze urządzenia lub tworzyć grupy urządzeń na potrzeby 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łędów wysyłania wiadomości i zdarzenia usunięcia wiadomości. Te zdarzenia specjalne można odróżnić od siebie, sprawdzając pole Message::message_type
.
Usunięto wiadomości
Wysyłane do 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 tych powodów:
Na serwerze FCM jest przechowywanych zbyt wiele wiadomości.
Może się to zdarzyć, gdy serwery aplikacji wysyłają do serwerów FCM wiele wiadomości, których nie można zwinąć, gdy urządzenie jest offline.
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.
Zalecamy, aby po otrzymaniu tego wywołania aplikacja przeprowadziła pełną synchronizację z serwerem aplikacji.