Menerima Pesan di Aplikasi Klien C++

Untuk menerima pesan downstream sederhana, setiap aplikasi klien perlu mengimplementasikan metode pada firebase::messaging::Listener API.

Menginisialisasi FCM

Agar dapat menggunakan FCM untuk mengakses token pendaftaran atau menerima pesan, Anda harus melakukan inisialisasi terlebih dahulu.

Untuk menginisialisasi FCM, panggil ::firebase::messaging::Initialize dan sediakan objek ::firebase::App serta penerapan class ::firebase::messaging::Listener.

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

Mengakses token pendaftaran

Pada saat aplikasi pertama kali dimulai, FCM SDK akan menghasilkan token pendaftaran untuk instance aplikasi klien. Jika ingin menarget satu perangkat atau membuat grup perangkat untuk FCM, Anda membutuhkan akses ke token ini.

Anda dapat mengakses nilai token melalui fungsi virtual ::firebase::messaging::Listener::OnTokenReceived.

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

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

Menerima dan menangani pesan

Untuk menerima pesan, class Pemroses Anda harus mengimplementasikan fungsi virtual OnMessage.

Mengganti OnMessage

Dengan mengganti metode ::firebase::messaging::Listener::OnMessage, Anda dapat melakukan tindakan berdasarkan pesan yang diterima dan mendapatkan data pesan:

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

Pesan dapat mewakili berbagai jenis data yang masuk. Yang paling umum, pesan dikirim ke aplikasi setelah dimulai oleh developer. Berbagai pesan juga dikirim ke aplikasi Anda untuk mewakili peristiwa pesan berhasil dikirim, peristiwa error saat mengirimkan pesan, dan peristiwa pesan dihapus. Peristiwa khusus ini dapat dibedakan dengan memeriksa kolom Message::message_type.

Pesan Dihapus

Pesan ini dikirimkan ke aplikasi Anda saat server FCM menghapus pesan yang tertunda. Message::message_type akan menjadi "deleted_messages". Pesan bisa dihapus karena:

  1. Terlalu banyak pesan yang tersimpan di server FCM.

    Hal ini dapat terjadi jika server aplikasi mengirim sekumpulan pesan yang tidak dapat diciutkan ke server FCM saat perangkat sedang offline.

  2. Perangkat tidak terhubung dalam waktu lama, dan server aplikasi baru-baru ini (dalam 4 minggu terakhir) mengirim pesan ke aplikasi di perangkat tersebut.

    Sebaiknya lakukan sinkronisasi penuh antara aplikasi dan server aplikasi setelah menerima panggilan ini.