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 uruchomienia aplikacji pakiet SDK FCM generuje token rejestracji dla instancji aplikacji klienta. Jeśli chcesz kierować reklamy na pojedyncze urządzenia lub tworzyć grupy urządzeń dla FCM, musisz mieć dostęp do tego tokena.
Dostęp do wartości tokena można 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
Wysłane do aplikacji, gdy serwer FCM usunie 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.
Po otrzymaniu tego wywołania zalecamy pełną synchronizację aplikacji z serwerem aplikacji.