C++ istemci uygulamasında ileti alma

Basit aşağı akış 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 özelliğini kullanabilmeniz için bu özelliğin başlatılması gerekir.

FCM öğesini başlatmak için ::firebase::messaging::Initialize öğesini çağırın ve ::firebase::App nesnenizin 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ın ilk başlatılmasında FCM SDK, 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.

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

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

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

İleti alma ve işleme

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

Geçersiz kıl: OnMessage

Yöntemi geçersiz kılarak ::firebase::messaging::Listener::OnMessage, 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());
}

İletiler, farklı türlerdeki gelen verileri temsil edebilir. En yaygın olarak, iletiler geliştirici tarafından başlatıldıktan sonra uygulamaya gönderilir. Mesaj gönderme etkinliklerini, mesaj gönderme hatası etkinliklerini ve silinen mesaj etkinliklerini temsil etmek için uygulamanıza da mesajlar 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 depolanmış.

    Bu durum, bir uygulamanın sunucuları cihaz çevrimdışıyken FCM sunucularına daraltılamayan bir grup mesaj gönderdiğinde ortaya çıkabilir.

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

    Uygulamanın bu aramayı aldıktan sonra uygulama sunucusuyla tam senkronizasyon yapması önerilir.