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 sınıfını başlatmak için ::firebase::messaging::Initialize sınıfını çağırın ve sınıfa ::firebase::App sınıfınızın yanı sıra ::firebase::messaging::Listener sınıfının bir 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, alınan mesaja göre işlemler 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, gönderilen mesaj etkinliklerini, mesaj gönderme hatası etkinliklerini ve silinen mesaj etkinliklerini temsil etmek için de uygulamanıza gönderilir. 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, bir uygulamanın sunucuları cihaz çevrimdışıyken FCM sunucularına bir grup daraltılamaz mesaj gönderdiğinde ortaya çıkabilir.

  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.

    Uygulamanın bu çağrıyı aldıktan sonra uygulama sunucusuyla tam senkronizasyon yapması önerilir.