Panduan Lengkap Integrasi Firebase Cloud Messaging di Android
Artikel ini membahas konsep dasar FCM, cara setup di Firebase Console, konfigurasi Gradle, serta implementasi kode Java untuk menerima dan menampilkan notifikasi push di aplikasi Android.
Apa Itu FCM (Firebase Cloud Messaging)?
Firebase Cloud Messaging (FCM) adalah layanan notifikasi gratis dari Google yang memungkinkan pengembang Android mengirimkan pesan push ke perangkat pengguna. Dengan FCM, Anda bisa mengirim:
- Pesan notifikasi (ditampilkan langsung di tray notifikasi),
- Pesan data (diproses di background oleh aplikasi),
- Atau kombinasi keduanya.
Contohnya:
- Memberitahu pengguna bahwa ada pesan baru,
- Mengirim pembaruan status order,
- Mengirimkan promosi atau pengumuman penting.
Persiapan Proyek di Firebase Console
- Masuk ke Firebase Console.
- Klik Add project, lalu buat proyek baru.
- Tambahkan aplikasi Android dengan menekan Add App → Android.
- Masukkan Application ID (sesuai di
app/build.gradle). - Unduh file
google-services.jsondan simpan di folder:app/ └── google-services.json - Ikuti instruksi Firebase untuk menyelesaikan setup awal.
Konfigurasi Gradle (Groovy)
Tambahkan dependency Firebase Cloud Messaging di build.gradle berikut ini:
project-level build.gradle
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.4.2'
}
}
app-level build.gradle
plugins {
id 'com.android.application'
id 'com.google.gms.google-services'
}
android {
namespace "com.example.fcmapp"
compileSdkVersion 34
defaultConfig {
applicationId "com.example.fcmapp"
minSdkVersion 24
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation 'com.google.firebase:firebase-messaging:24.0.0'
}
💡 Tips: Selalu gunakan versi terbaru dari plugin
google-servicesdanfirebase-messaginguntuk memastikan kompatibilitas SDK terbaru.
Mendapatkan Token FCM di Android (Java)
Setiap perangkat akan mendapatkan token unik untuk menerima pesan.
Tambahkan kode berikut di MainActivity.java:
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessaging;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "FCMApp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Mendapatkan token FCM
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
Log.w(TAG, "Gagal mendapatkan token FCM", task.getException());
return;
}
// Token FCM perangkat
String token = task.getResult();
Log.d(TAG, "Token FCM: " + token);
});
}
}
Token ini bisa Anda kirim ke server untuk menyimpan dan mengirimkan pesan ke perangkat tertentu.
📩 Menerima Pesan FCM di Background dan Foreground
Buat class yang extends FirebaseMessagingService untuk menangani pesan masuk.
MyFirebaseMessagingService.java
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFCMService";
private static final String CHANNEL_ID = "fcm_channel";
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
Log.d(TAG, "Pesan diterima: " + remoteMessage.getData());
String title = remoteMessage.getNotification() != null ?
remoteMessage.getNotification().getTitle() : "Notifikasi Baru";
String body = remoteMessage.getNotification() != null ?
remoteMessage.getNotification().getBody() : "Pesan kosong";
showNotification(title, body);
}
private void showNotification(String title, String message) {
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Buat channel untuk Android 8.0+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
CHANNEL_ID, "FCM Channel", NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(channel);
}
// Intent untuk membuka aplikasi saat notifikasi diklik
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentTitle(title)
.setContentText(message)
.setContentIntent(pendingIntent)
.setAutoCancel(true);
manager.notify(1, builder.build());
}
}
Jenis Pesan FCM: Notification vs Data
| Jenis Pesan | Deskripsi | Contoh JSON |
|---|---|---|
| Notification Message | Ditampilkan otomatis di tray (bahkan jika app ditutup). | json { "to": "<FCM_TOKEN>", "notification": { "title": "Halo!", "body": "Ada pesan baru!" } } |
| Data Message | Dikirim ke onMessageReceived(), cocok untuk logika kustom. | json { "to": "<FCM_TOKEN>", "data": { "type": "chat", "message": "Hai dari server!" } } |
Mengirim Notifikasi Menggunakan Postman atau Curl
Gunakan Server Key dari Firebase Console > Project Settings > Cloud Messaging, lalu kirim request:
curl -X POST https://fcm.googleapis.com/fcm/send \
-H "Authorization: key=SERVER_KEY_KAMU" \
-H "Content-Type: application/json" \
-d '{
"to": "TOKEN_FCM_PERANGKAT",
"notification": {
"title": "Pesan dari Server",
"body": "Ini contoh notifikasi!"
}
}'
Kesimpulan
Dengan integrasi FCM di Android, Anda dapat:
- Mengirim notifikasi real-time ke pengguna,
- Mengelola pesan berbasis data untuk logika aplikasi,
- Mengoptimalkan interaksi pengguna tanpa biaya tambahan.