Firebase Cloud Messaging
Firebase Cloud Messaging biasa disebut FCM, sebelumnya dikenal sebagai Google Cloud Messaging (GCM), merupakan solusi dari cloud lintas platform untuk pesan dan layanan pemberitahuan untuk Android, iOS, dan aplikasi web, yang saat ini dapat digunakan tanpa biaya.
Layanan Firebase Cloud Messaging ini disediakan oleh Firebase, yang merupakan anak perusahaan dari Google. Pada tanggal 21 Oktober 2014, Firebase mengumumkan telah diakuisisi oleh Google untuk jumlah yang tidak diungkapkan. Situs web Google Cloud Messaging resmi menunjuk ke Firebase Cloud Messaging (Firebase Cloud Messaging) sebagai versi baru Google Cloud Messaging (GCM).
Pihak Google menyarankan untuk aplikasi yang masih menggunakan Google Cloud Messaging untuk segera migrasi ke Firebase Cloud Messaging. Fitur-fitur yang diberikan oleh Firebase Cloud Messaging sebenarnya tidak terlalu jauh berbeda dengan Google Cloud Messaging. Dengan Firebase Cloud Messaging kita bisa memberikan pemberitahuan dan membuat komunikasi dua arah antara perangkat. Teknologi yang digunakan terbagi menjadi dua yaitu:
Untuk XMPP harus membangun server XMPP terlebih dahulu, sedangkan untuk HTTP bisa menggunakan console yang disediakan oleh Firebase.Firebase Cloud Messaging (FCM) menawarkan beragam kemampuan dan opsi pengiriman pesan. Informasi ini dimaksudkan untuk membantu dalam memahami berbagai jenis pesan dari Firebase Cloud Messaging, serta apa yang dapat dilakukan dengan jenis pesan tersebut .
Pesan notifikasi, terkadang dianggap sebagai "pesan tampilan". Pesan ini ditangani oleh Firebase Cloud Messaging SDK secara otomatis. Pesan notifikasi memiliki serangkaian kunci bawaan yang terlihat oleh pengguna. Pesan notifikasi bisa berisi data payload opsional untuk pasangan kunci-nilai kustom. Skenario penggunaan dalam pesan notifikasi yaitu Firebase Cloud Messaging secara otomatis menampilkan pesan ke perangkat pengguna akhir atas nama aplikasi klien.
Cara mengirim pesan notifikasi
Pesan data, yang ditangani oleh aplikasi klien. pesan data hanya memuat key-value pair kustom buatan pengguna. Skenario penggunaan dalam pesan data, aplikasi klien bertanggung jawab memproses pesan data.
Cara mengirim pesan notifikasi :
Dalam lingkungan tepercaya, seperti Cloud Functions atau server aplikasi pengguna, gunakan Admin SDK atau Protokol Server Firebase Cloud Messaging: Setel kunci data saja.
Firebase Cloud Messaging menyediakan sekumpulan opsi pengiriman khusus untuk pesan yang dikirim ke perangkat Android, dan memungkinkan opsi serupa di iOS dan web. Perilaku pesan yang "dapat diperkecil" didukung di perangkat Android melalui collapse_key Firebase Cloud Messaging, di iOS melalui apns-collapse-id, dan di JavaScript/Web melalui Topic.
Pesan yang tidak dapat diperkecil menunjukkan bahwa setiap pesan dikirimkan ke perangkat. Pesan yang tidak dapat diperkecil mengirimkan beberapa konten berguna, bukan pesan yang dapat diperkecil seperti "ping" konten bebas , ke aplikasi seluler untuk menghubungi server agar mengambil data. Untuk Android, ada batas 100 pesan yang bisa disimpan tanpa diperkecil. Jika batas ini tercapai, semua pesan yang disimpan akan dihapus. Saat kembali daring , perangkat akan menerima pesan khusus yang memberitahukan bahwa batas telah tercapai. Selanjutnya, aplikasi bisa menangani situasi ini dengan tepat, umumnya dengan meminta sinkronisasi penuh dari server aplikasi. Skenario penggunaan dalam pesan yang tidak dapat diperkecil yaitu setiap pesan penting bagi aplikasi klien dan harus dikirimkan. Kecuali untuk pesan notifikasi, semua pesan tidak dapat diperkecil secara default.
Pesan yang dapat diperkecil adalah pesan yang dapat diganti dengan pesan baru jika pesan tersebut belum dikirimkan ke perangkat. Kasus penggunaan umum dalam pesan yang dapat diperkeciladalah pesan digunakan untuk memberi tahu aplikasi seluler untuk menyinkronkan data dari server karena hanya pesan terbaru yang dianggap relevan.
Untuk menandai pesan sebagai pesan yang dapat diperkecil di Android, pengguna dapat menyertakan parameter collapse_key dalam payload pesan. Firebase Cloud Messaging mendukung maksimal 4 kunci perkecil berbeda dari beberapa perangkat Android yang akan digunakan oleh server aplikasi pada waktu yang ditentukan. Dengan kata lain, server Firebase Cloud Messaging dapat menyimpan 4 pesan berbeda yang bisa diperkecil per perangkat secara bersamaan, masing-masing dengan kunci perkecil yang berbeda. Jika melampaui angka ini, Firebase Cloud Messaging hanya akan menyimpan 4 kunci perkecil, tanpa jaminan kunci mana yang akan disimpan.
Prioritas Pesan Firebase Cloud Messaging memiliki 2 opsi untuk menetapkan prioritas pengiriman ke pesan downstream di Android: prioritas normal dan tinggi. Pengiriman pesan berprioritas normal dan tinggi berfungsi sebagai berikut
Saat menerima pesan berprioritas normal di Android yang meminta sinkronisasi latar belakang data untuk aplikasi, pengguna harus menjadwalkan tugas FJD atau JobIntentService untuk menanganinya saat jaringan tersedia.
Karena sebagian kecil populasi seluler Android menggunakan jaringan latensi tinggi, jangan buka koneksi ke server sebelum menampilkan pemberitahuan. Memanggil kembali server sebelum waktu akhir pemrosesan yang diizinkan dapat berisiko bagi pengguna pada jaringan latensi tinggi. Atau, sertakan konten pemberitahuan dalam pesan Firebase Cloud Messaging yang segera tampilkan. Jika harus menyinkronkan tambahan konten dalam aplikasi di Android, pengguna dapat menjadwalkan tugas FJD atau JobIntentService untuk menanganinya di latar belakang.
Firebase Cloud Messaging biasanya segera mengirimkan pesan setelah pesan dikirim. Namun, hal tersebut terkadang tidak memungkinkan untuk dilakukan. Jika platformnya adalah Android, perangkat akan dimatikan, luring, atau tidak tersedia. Firebase Cloud Messaging sengaja menunda pesan agar aplikasi tidak menggunakan sumber secara berlebihan dan berpengaruh negatif pada masa pakai baterai.
Jika ini terjadi, Firebase Cloud Messaging akan menyimpan pesan dan mengirimkannya segera setelah kondisinya memungkinkan. Meskipun dalam kebanyakan kasus hal ini tidak apa-apa, karena ada beberapa aplikasi yang tidak mengizinkan keterlambatan pengiriman pesan. Misalnya, untuk pemberitahuan panggilan masuk atau video obrolan, pesan hanya berguna untuk periode waktu yang singkat sebelum panggilan tersebut diakhiri.
Di Android dan Web/JavaScript, dapat menentukan masa aktif maksimum suatu pesan. Nilainya harus berupa durasi dari 0 hingga 2.419.200 detik (28 hari), dan sama dengan periode waktu maksimum bagi Firebase Cloud Messaging untuk menyimpan dan mencoba mengirimkan pesan.
Berikut adalah beberapa kemungkinan penggunaan fitur ini:
Keuntungan lain dari penetapan masa aktif pesan adalah Firebase Cloud Messaging tidak akan pernah menahan pesan yang memiliki nilai waktu aktif selama 0 detik. Dengan kata lain, Firebase Cloud Messaging menjamin upaya terbaik untuk pesan yang harus dikirimkan "sekarang atau tidak sama sekali". Perlu diingat bahwa nilai waktu untuk hidup 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.
Jika pengguna memiliki tembok api untuk membatasi lalu lintas dari Internet, pengguna harus mengkonfigurasinya agar perangkat seluler dapat terhubung dengan Firebase Cloud Messaging dan perangkat di jaringan dapat menerima pesan. Firebase Cloud Messaging biasanya menggunakan port 5228, namun terkadang menggunakan 5229 dan 5230.
Untuk koneksi keluar, Firebase Cloud Messaging tidak memberikan IP khusus karena rentang IP terlalu sering berubah dan aturan firewall mungkin sudah tidak berlaku, sehingga memengaruhi pengalaman pengguna. Idealnya, pengguna akan memberikan akses ke port 5228-5230 tanpa pembatasan IP. Namun, jika pengguna harus memiliki pembatasan Protokol Internet, pengguna harus memberikan akses ke semua alamat IP dalam blok IPv4 dan IPv6 yang tercantum di ASN 15169 Google. Pengguna harus memperbarui aturan setiap bulan. Masalah yang disebabkan karena pembatasan IP firewall biasanya menghilang dan timbul lagi serta sulit didiagnosis.
Port yang harus dibuka untuk pesan masuk:
Port untuk mengizinkan koneksi keluar:
Firewall Network Address Translation dan/atau Stateful Packet Inspection:
Jika jaringan pengguna menerapkan Network Address Translation (NAT) atau Stateful Packet Inspection (SPI), waktu penerapan tunggu 30 menit atau lebih untuk koneksi melalui port 5228-5230. Dengan begitu, pengembang dapat menyediakan konektivitas yang andal sekaligus mengurangi konsumsi baterai perangkat seluler pengguna.