
kali ini kita akan mencoba mengirimkan Push Notification Firebase dari server (PHP) ke aplikasi android
firebase sendiri sudah menyiapkan link/endpoint untuk mengirimkan push notification secara instan dengan mengisi semua parameter headernya dan bodynya yaitu
https://fcm.googleapis.com/fcm/send
kalian bisa membaca detailnya disini
ok pertama buat file php seterah dengan nama apa yang penting berada di dalam folder local server(XAMPP/MAMP/LAMP/LARAGON) untuk merequest ke endpoint FCM-nya kita akan memanfaatkan method curl yang ada di php
<?php
function sendPushNotification($fcm_token, $title, $message, $id = null,$action = null) {
$url = "https://fcm.googleapis.com/fcm/send";
$header = [
'authorization: key=<TOKEN_MU>',
'content-type: application/json'
];
$notification = [
'title' =>$title,
'body' => $message
];
$extraNotificationData = ["message" => $notification,"id" =>$id,'action'=>$action];
$fcmNotification = [
'to' => $fcm_token,
'notification' => $notification,
'data' => $extraNotificationData
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fcmNotification));
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
isi <TOKEN_MU> dengan token firebasemu yang bisa didapatkan lewat halaman console firebase
kemudian kita langsung panggil aja fungsinya
<?php
sendPushNotification("<FCM_TOKEN_DARI_APLIKASI_ANDROID>","Ini Title","Ini Isi",123456,"notif")
kalian bisa mendapatkan fcm token dari generate di aplikasi androidnya menggunakan library firebase-nya
jadi alurnya jika user mendaftar
1.user mendaftar
2.aplikasi android menggenerate fcm token
3.aplikasi mengirim data user dan fcm token yang sudah di generate
4.lalu kedua data tersebut di simpan di database
5.kemudian kita tinggal pake fcm token yang ada di database untuk digunakan mengirimkan notifikasi ke user tersebut
kode untuk menggenerate fcm token contohnya seperti ini menggunakan bahasa kotlin
FirebaseInstanceId.getInstance().instanceId
.addOnCompleteListener(OnCompleteListener { task ->
if (task.isSuccessful) {
val fcm_token = task.result?.token.toString()
} else {
// gagal
}
})
kalian bisa melihat detail lengkapnya disini
lalu untuk menerimanya pesannya gimana?
kamu tinggal membuat class baru dengan FirebaseMessagingService
class MyFirebaseInstanceIdService : FirebaseMessagingService() {
val TAG = "PushNotifService"
lateinit var name: String
private var broadcaster: LocalBroadcastManager? = null
override fun onCreate() {
broadcaster = LocalBroadcastManager.getInstance(this)
}
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
handleMessage(remoteMessage)
}
private fun handleMessage(remoteMessage: RemoteMessage) {
val handler = Handler(Looper.getMainLooper())
handler.post(Runnable {
val intent = Intent("MyData")
remoteMessage.notification?.let {
intent.putExtra("message", it.body)
intent.putExtra("title", it.title)
intent.putExtra("id", remoteMessage.data["id"])
intent.putExtra("action", remoteMessage.data["action"])
broadcaster?.sendBroadcast(intent)
}
}
)
}
}
lalu tinggal mendaftarkan servicenya ke AndroidManifest.xml
<service
android:name=".MyFirebaseInstanceIdService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
kalian bisa melihat detailnya disini
Kalau 1 user punya 2 device bang? ada 2 token gmna?
LikeLike
tokennya user bisa di simpan ke database dulu,baru nanti di pakai saat mau ngirim notif ke user tersebut
LikeLike
Bang, kalau saya ad website, trs saya buat aplikasi android menggunakn webview di android, trs setiap ada postingan terbaru di website saya otomatis notifikasi terkirim ke user yang sudah menginstal aplikasi webview saya, itu gmn ya?? Apakah kita harus buat API di website kita??
LikeLike
iya tetap dari webnya juga di tambahin push notification
LikeLike
Bisa share yang versi javanya Bang??
LikeLike
bang kalau misal saya punya database user dan saya hanya ingin mengirimkan notifikasi ke user tertentu ngambildari database mysql saya gimana caranya ya?
LikeLike
kalau ingin mengirim notifikasi harus punya fcm token dulu,jadi fcm tokennya di simpan dulu di database usernya
LikeLike
Kode generate tokennya yang mana gan?
LikeLike
yang di bagian androidnya menggenarate token fcm
val fcm_token = task.result?.token.toString()
setiap device android tokennya bakal beda-beda
LikeLike
gan mau nanya, saya pake token trus disimpan ke database, trus besoknya saya masuk ulang ke web yang sdh saya allow Notificationnya kok tokennya bisa beda ya? padahal saya pake device yang sama, jadi waktu saya coba kirim ke token yang sudah tersimpan di database tidak ada reaksi, padahal hari sebelumnya notifikasi lancar jaya.
LikeLike
fungsi generate tokennya kalau di panggil berkali2 memang akan menghasilkan token yang berbeda2 makanya proses generate tokennya dilakukan saat proses mendaftar/register dan langsung di simpan di database user
LikeLike
kalau mengirim nofikasi dari web ke beberapa device andoid gimana koding ny gan?
LikeLike
ada beberapa cara yang pertama menggankan sistem subcribe topik tertentu detail bisa lihat disini https://firebase.google.com/docs/cloud-messaging/android/topic-messaging, dengan bagian paramter “to” di beri nilai dari topik tersebut
yang kedua dengan mengganti paramter “to” dengan “registration_ids” dengan fromat array seperti [fcm_token1,fcm_token2,…]
https://stackoverflow.com/questions/51865784/firebase-messaging-multiple-notification-in-single-request
LikeLike