Aby otrzymywać proste wiadomości od klientów, każda aplikacja kliencka musi implementować metody interfejsu API firebase::messaging::Listener
.
Inicjowanie FCM
Zanim będzie można używać FCM do uzyskiwania dostępu do tokena rejestracji lub odbierania wiadomości, musisz go zainicjować.
Aby zainicjować FCM, wywołaj funkcję ::firebase::messaging::Initialize
i prześlij do niej 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 uruchamiania aplikacji pakiet SDK FCM generuje token rejestracji dla instancji aplikacji klienta. Dostęp do tego tokena uzyskasz, jeśli chcesz kierować reklamy na pojedyncze urządzenia lub utworzyć grupy urządzeń dla organizacji FCM.
Dostęp do wartości 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ługa wiadomości
Aby odbierać wiadomości, klasa Listener musi implementować funkcję wirtualną OnMessage
.
Zastąpić OnMessage
Zastępując metodę::firebase::messaging::Listener::OnMessage
, możesz wykonywać czynności na podstawie otrzymanej wiadomości i pobierać jej dane:
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 wejściowych. Najczęściej wiadomości są wysyłane do aplikacji po zainicjowaniu przez dewelopera. Komunikaty są też wysyłane do Twojej aplikacji, aby reprezentować zdarzenia wysłania wiadomości, błędy wysyłania wiadomości i zdarzenia usuwania wiadomości. Te specjalne zdarzenia można odróżnić, sprawdzając pole Message::message_type
.
Wiadomości usunięte
Wysyłane do aplikacji, gdy serwer FCM usuwa oczekujące wiadomości.
Message::message_type
będzie "deleted_messages"
. Wiadomości mogą zostać usunięte z tych powodów:
zbyt wiele wiadomości przechowywanych na serwerze FCM,
Może się tak zdarzyć, gdy serwery aplikacji wysyłają dużą liczbę nieskładanych wiadomości do serwerów FCM, gdy urządzenie jest offline.
Urządzenie nie było połączone przez długi czas, a serwer aplikacji wysłał niedawno (w ciągu ostatnich 4 tygodni) wiadomość do aplikacji na tym urządzeniu.
Zalecamy, aby po otrzymaniu tego wywołania aplikacja wykonała pełną synchronizację z serwerem aplikacji.