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'yi başlat

Kayıt belirtecinize erişim sağlamak veya mesaj almak için FCM'yi kullanabilmeniz için önce başlatılması gerekir.

FCM'yi başlatmak için ::firebase::messaging::Initialize çağırın ve onu ::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 belirtecine erişme

Uygulamanızın ilk başlangıcında FCM SDK, istemci uygulaması örneği için bir kayıt belirteci oluşturur. Tek cihazları hedeflemek veya FCM için cihaz grupları oluşturmak istiyorsanız bu belirtece erişmeniz gerekir.

Belirtecin değerine ::firebase::messaging::Listener::OnTokenReceived sanal işlevi aracılığıyla 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 yönetme

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

OnMessage geçersiz kıl

::firebase::messaging::Listener::OnMessage yöntemini geçersiz kılarak, alınan mesaja göre eylemler 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. Çoğunlukla mesajlar geliştirici tarafından başlatıldıktan sonra uygulamaya gönderilir. Mesajlar ayrıca gönderilen mesaj olaylarını, mesaj gönderme hatası olaylarını ve mesaj silinen olayları temsil etmek üzere uygulamanıza da gönderilir. Bu özel olaylar, Message::message_type alanı kontrol edilerek ayırt edilebilir.

Silinen Mesajlar

FCM sunucusu bekleyen mesajları sildiğinde uygulamanıza gönderilir. Message::message_type "deleted_messages" olacaktır. Mesajlar aşağıdaki nedenlerden dolayı silinebilir:

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

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

  2. Cihaz uzun süredir bağlanmadı ve uygulama sunucusu yakın zamanda (son 4 hafta içinde) o cihazdaki uygulamaya bir mesaj gönderdi.

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