Menetapkan masa aktif pesan

FCM biasanya mengantarkan pesan segera setelah pesan dikirim. Namun, hal tersebut terkadang tidak dapat dilakukan. Misalnya, perangkat mungkin saja tidak tersedia atau FCM mungkin memang sengaja menunda pesan agar aplikasi tidak menggunakan resource secara berlebihan dan berdampak negatif pada masa pakai baterai.

Dalam kasus ini, FCM akan menyimpan pesan dan mengirimkannya segera setelah kondisinya memungkinkan. Meskipun dalam kebanyakan kasus hal ini tidak menjadi masalah, ada beberapa aplikasi yang memerlukan pengiriman notifikasi tanpa penundaan. Misalnya, notifikasi untuk panggilan masuk atau undangan ke suatu acara.

Di Android dan Web, Anda dapat menentukan masa aktif maksimum suatu pesan. Nilainya harus berupa durasi dari 0 hingga 2.419.200 detik (28 hari), yaitu sama dengan periode waktu maksimum FCM menyimpan dan mencoba mengirimkan pesan. Secara default, permintaan yang tidak berisi kolom ini memiliki masa aktif maksimum empat minggu.

Di iOS, Anda dapat menetapkan header apns-expiration di objek ApnsConfig. Untuk mengetahui detail selengkapnya, lihat dokumentasi Apple tentang Mengirim permintaan notifikasi ke APNS.

Berikut adalah beberapa kemungkinan penggunaan fitur ini:

  • Panggilan masuk video chat
  • Acara undangan yang akan segera kedaluwarsa
  • Acara kalender

Keuntungan lain dari penetapan masa aktif pesan adalah FCM tidak menerapkan throttle pesan yang dapat diciutkan pada pesan yang memiliki nilai time to live 0 detik. Perlu diingat bahwa jika nilai ttl 0, berarti pesan yang tidak dapat segera dikirimkan akan dihapus. Namun, karena pesan seperti itu tidak pernah disimpan, hal ini memberikan latensi terbaik untuk mengirim pesan notifikasi.

Berikut contoh permintaan yang berisi TTL:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    },
    "apns":{
      "headers":{
        "apns-expiration":"1604750400"
      }
    },
    "android":{
      "ttl":"4500s"
    },
    "webpush":{
      "headers":{
        "TTL":"4500"
      }
    }
  }
}

Masa aktif pesan

Saat server aplikasi memposting pesan ke FCM dan menerima kembali ID pesan, ini bukan berarti bahwa pesan tersebut sudah dikirim ke perangkat. Hal itu hanya berarti bahwa pesan telah diterima dan dapat dikirim. Sedangkan waktu pengiriman pesan itu sendiri bergantung pada banyak faktor.

Jika perangkat terhubung tetapi berada dalam mode Istirahatkan, pesan berprioritas rendah akan disimpan oleh FCM hingga perangkat keluar dari mode Istirahatkan. Jika collapse_key ditetapkan, dan sudah ada pesan yang memiliki kunci penciutan dan token pendaftaran sama yang menunggu pengiriman, pesan lama tersebut akan dihapus dan pesan baru akan menggantikannya. Namun, jika kunci penciutan tidak ditetapkan, baik pesan lama maupun pesan baru akan disimpan untuk dikirimkan kemudian.

Jika perangkat tidak terhubung ke FCM, pesan akan disimpan hingga perangkat terhubung. Saat terhubung, FCM akan mengirimkan semua pesan yang tertunda ke perangkat. Jika perangkat tidak pernah terhubung kembali, waktu tunggu pesan akan habis dan pesan tersebut akan dihapus dari penyimpanan FCM. Waktu tunggu default-nya adalah empat minggu, kecuali jika tanda ttl ditetapkan. Jika aplikasi telah di-uninstal saat FCM mencoba mengirimkan pesan ke perangkat, FCM akan langsung menghapus pesan tersebut dan membatalkan validasi token pendaftaran. Setelah itu, semua upaya pengiriman pesan ke perangkat tersebut akan menghasilkan error NotRegistered.

Untuk perangkat Android, jika perangkat tidak terhubung ke FCM selama lebih dari satu bulan, FCM akan tetap menerima pesan, tetapi pesan tersebut akan langsung dihapus. Jika perangkat terhubung dalam waktu empat minggu sejak terakhir dikirimi pesan data, aplikasi klien Anda akan menerima callback onDeletedMessages().

Untuk mendapatkan insight selengkapnya tentang pengiriman pesan di platform Android atau Apple, Anda dapat menggunakan dasbor pelaporan FCM, yang mencatat jumlah pesan yang terkirim dan dibuka di perangkat Android dan Apple, beserta data terkait tayangan untuk aplikasi Android.