C++ istemci uygulamasında ileti alma

Basit aşağı akış mesajlarını almak için her istemci uygulamasının bu yöntemleri firebase::messaging::Listener API'de uygulaması gerekir.

FCM'yi başlat

FCM'yi kayıt jetonunuza erişmek veya mesaj almak amacıyla kullanabilmeniz için öncelikle jetonun başlatılması gerekir.

FCM'yi başlatmak için ::firebase::messaging::Initialize yöntemini çağırın ve onu, ::firebase::App nesnenizle birlikte ::firebase::messaging::Listener sınıfının bir uygulamasıyla 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 uygulaması ö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.

Jetonun değerine ::firebase::messaging::Listener::OnTokenReceived sanal işleviyle 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

Mesaj almak için İşleyici sınıfınızın OnMessage sanal işlevini uygulaması gerekir.

OnMessage öğesini geçersiz kıl

::firebase::messaging::Listener::OnMessage yöntemini geçersiz kılarak alınan iletiye dayalı işlemler gerçekleştirebilir 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, farklı türde gelen verileri temsil edebilir. Genellikle, mesajlar 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 mesajları sildiğinde uygulamanıza gönderilir. Message::message_type "deleted_messages" olacak. Mesajlar şu nedenlerle silinebilir:

  1. FCM sunucusunda çok fazla ileti depolandı.

    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ğlanmamış ve uygulama sunucusu kısa süre önce (son 4 hafta içinde) bu cihazdaki uygulamaya bir mesaj göndermiştir.

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