Hi gaes, diantara kalian apakah ada yang lagi bermain-main dengan Firebase Cloud Messaging (FCM)? jika ya, pasti bagi kalian yang merasa belum puas dengan cara menangkap datanya pasti bakal mencari cara paling revolusioner.
Yup bagi saya memang tidak masalah sih jika datanya hanya berupa title dan body, tapi bagaimana jika menggunakan metode payload dari data, dimana data yang dibawa juga BUANYAK SEKALI, tidak repot sih, hanya saja ini berpotensi typo, mengingat key nya harus diketik secara hardstring.
Oya, kebetulan saya lagi develop app Android, dan SDK firebase memberikan fasilitas berupa callback onMessageReceived()
Mengingat hasil output dari onMessageReceived
berupa Map<String, String>
jadi clue kita adalah cara casting data Map ke data Class.
Jadi kita perlu gunakan map delegate, sehingga hasil modifikasi data Class-nya kurang lebih seperti ini,
data class MyData(
var variable1: String? = null,
var variable2: String? = null,
var variable3: String? = null) {
companion object {
fun from(map: Map<String, String>) = object {
var variable1 by map
var variable2 by map
var variable3 by map
val data = MyData(variable1, variable2, variable3)
}.data
}
Cara implementasinya seperti di bawah ini,
override fun onMessageReceived(fcm: RemoteMessage) {
fcm.notification?.let {
Log.d("tes", "title: ${it.title} body: ${it.body}")
}
fcm.data.let {
val payload = MyData.from(it) //--> ini dia hasil implementasinya.. wow bukan..
Log.d("tes_fcm", "payload: $payload")
}
}
Selamat mencoba!