Mengirim Push Notification Dari PHP ke Android

firebase cloud messaging

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

13 thoughts on “Mengirim Push Notification Dari PHP ke Android

  1. 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??

    Like

  2. bang kalau misal saya punya database user dan saya hanya ingin mengirimkan notifikasi ke user tertentu ngambildari database mysql saya gimana caranya ya?

    Like

  3. 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.

    Like

    1. 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

      Like

    1. 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

      Like

Leave a reply to irfan Cancel reply