C++ uygulamalarında ileti alma

Platform seçin: iOS+ Android Web Flutter Unity C++


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'yı kullanabilmeniz için önce başlatmanız 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 ilk kez başlatıldığı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.

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.
}

Mesaj alma ve işleme

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

Geçersiz kılma OnMessage

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

İletiler, farklı türlerdeki gelen verileri temsil edebilir. En yaygın olarak, geliştirici tarafından başlatıldıktan sonra uygulamaya mesaj gönderilir. Ayrıca, gönderilen ileti etkinliklerini, ileti gönderme hatası etkinliklerini ve silinen ileti etkinliklerini temsil etmek için uygulamanıza iletiler 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. Mesajlar aşağıdakiler nedeniyle silinebilir:

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

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

  2. Cihaz uzun süredir bağlanmıyor ve uygulama sunucusu, son zamanlarda (son 4 hafta içinde) bu cihazdaki uygulamaya mesaj gönderdi.

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