C++ istemci uygulamasında ileti alma

Basit yayın mesajları almak için her istemci uygulamasının firebase::messaging::Listener API'sindeki yöntemleri uygulaması gerekir.

FCM başlatılıyor

Kayıt jetonunuza erişmek veya mesaj almak için FCM'ü kullanabilmeniz gerekir.

FCM öğesini ilk kullanıma hazırlamak için ::firebase::messaging::Initialize yöntemini çağırıp ::firebase::App nesnenizle birlikte ::firebase::messaging::Listener sınıfının uygulamasını sağlayın.

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

Kayıt jetonuna erişme

Uygulamanız ilk kez başlatıldığında FCM SDK'sı, istemci uygulama örneği için bir kayıt jetonu oluşturur. Tek cihazları hedeflemek veya FCM için cihaz grupları oluşturmak istiyorsanız bu jetona erişmeniz gerekir.

::firebase::messaging::Listener::OnTokenReceived sanal işlevi aracılığıyla jetonun değerine erişebilirsiniz.

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

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

Mesajları alma ve işleme

Dinleyici sınıfınızın, mesaj almak için OnMessage sanal işlevini uygulaması gerekir.

OnMessage öğesini geçersiz kılma

::firebase::messaging::Listener::OnMessage yöntemini geçersiz kılarak, gelen mesaja göre işlem yapabilir ve mesaj verilerini alabilirsiniz:

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

Mesajlar, gelen farklı veri türlerini temsil edebilir. Genellikle, iletiler geliştirici tarafından başlatıldıktan sonra uygulamaya gönderilir. Mesajlar ayrıca uygulamanıza gönderilen mesajlarla ilişkili etkinlikleri, mesaj gönderme hata etkinliklerini ve silinen mesajları temsil eder. Bu özel etkinlikler, Message::message_type alanı kontrol edilerek ayırt edilebilir.

Mesajlar Silindi

FCM sunucusu bekleyen iletileri sildiğinde uygulamanıza gönderilir. Message::message_type, "deleted_messages" olacak. İletiler aşağıdaki nedenlerle silinebilir:

  1. FCM sunucusunda çok fazla ileti depolanıyor.

    Bu durum, cihaz çevrimdışıyken uygulamanın sunucuları FCM sunucularına daraltılamayan bir dizi mesaj gönderdiğinde gerçekleşebilir.

  2. Cihaz uzun süredir bağlı değilse ve uygulama sunucusu kısa süre önce (son 4 hafta içinde) söz konusu cihazdaki uygulamaya mesaj gönderdiyse.

    Bu çağrıyı aldıktan sonra uygulamanın, uygulama sunucusuyla tam senkronizasyon yapması önerilir.