Setup Firebase Cloud Messaging

Setup Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) adalah solusi server push untuk aplikasi Android. Server push maksudnya adalah fitur yang kita gunakan apabila aplikasi server kita ingin mentrigger aplikasi mobile.

Google menyediakan fasilitas FCM yang bisa digunakan untuk aplikasi Android maupun iOS. Contoh skema penggunaannya dapat dilihat pada gambar berikut

Skema Update Tagihan

Untuk bisa menggunakan FCM, ada beberapa langkah yang harus dilakukan:

  1. Login dengan Google account di browser
  2. Masuk ke Firebase Console
  3. Membuat project
  4. Menyambungkan project android kita ke project di Firebase Console
  5. Membuat kode program di aplikasi Android untuk mendapatkan FCM token. FCM Token ini adalah identifier untuk perangkat dimana aplikasi kita berjalan.
  6. Membuat kode program di aplikasi Android untuk menerima dan menangani message yang datang.
  7. Mencatat Server Key (yang nantinya akan digunakan untuk mengirim message)
  8. Membuat kode program di aplikasi server untuk mengirim message

Setup FCM di Aplikasi Android

Bila kita menggunakan Android Studio Versi 2.2 ke atas, langkah 1 - 4 sudah disediakan alat bantunya. Kita bisa akses di menu Tools > Firebase

Menu Tools Firebase

Begitu diklik, maka akan muncul Firebase Assistant. Selanjutnya kita buka menu Cloud Messaging.

Cloud Messaging

Kita akan mendapati langkah-langkah setupnya.

Langkah-langkah setup

Mulai dari langkah pertama, klik Connect your app to firebase. Browser akan dibukakan untuk kita dan kita disuruh login dengan Google Account. Apabila kita punya beberapa Google account, maka kita akan disuruh memilih akun mana yang ingin digunakan.

Pilih akun google

Setelah kita pilih, maka akan ada konfirmasi ijin akses buat Android Studio. Klik saja Accept.

Konfirmasi Ijin Akses

Kita akan mendapatkan pesan sukses.

Sukses otentikasi Android Studio

Berikutnya, kita akan disajikan pilihan apakah akan membuat project Firebase yang baru, atau menggunakan project yang sudah ada.

Membuat project Firebase

Dalam hal ini saya memilih membuat project baru. Nama project sudah diusulkan oleh Android Studio, yaitu disamakan dengan nama project android kita. Begitu kita klik OK, maka Android Studio akan berusaha membuat project di Firebase. Aktivitasnya bisa kita pantau di Event Log

Event Log Create Project

Proses ini akan menghasilkan file google-services.json dalam folder project Android kita.

File JSON Google Services

File ini berisi konfigurasi dan otentikasi agar aplikasi android kita bisa terhubung dengan Firebase. Setelah selesai, maka langkah pertama akan dinyatakan sukses, ditandai dengan icon berwarna hijau.

Sukses connect app

Berikutnya, langkah kedua, kita akan menambahkan library yang dibutuhkan oleh Google services ke dalam project Android kita.

Menambahkan dependensi

Setelah kita OK, maka file build.gradle kita akan diedit oleh Android Studio.

Perubahan file gradle

Langkah kedua selesai, ditandai dengan icon hijau di nomer dua.

Sukses setup project

Selanjutnya, kita perlu membuat kode program untuk menangani proses registrasi. Cara membuatnya sudah dijelaskan oleh Firebase Assistant. Tinggal kita ikut saja.

Service Class Registrasi Token

Class di atas akan melakukan registrasi aplikasi kita ke FCM dan mendapatkan token. Token ini harus kita daftarkan ke aplikasi server kita, agar kita bisa mengirim data ke user tertentu. Nantinya kita kirim token berpasangan dengan user id, agar bisa diidentifikasi device mana milik user mana.

Class tadi juga harus didaftarkan ke AndroidManifest.xml

RegistrasiService di Manifest

Langkah terakhir di sisi Android adalah membuat service untuk menerima FCM message. Cara membuatnya juga sudah ditunjukkan oleh Firebase Assistant. Tinggal kita ikuti saja.

Service Terima Message

Sama seperti sebelumnya, service inipun harus kita daftarkan ke AndroidManifest.xml.

Manifest Terima Message

Setup di Aplikasi Server

Untuk bisa mengirim message, kita harus memiliki API Key server. Masuk ke Firebase Console.

Firebase Console

Kita akan melihat bahwa project kita sudah terbentuk. Klik project tersebut.

Detail Project

Untuk melihat API key, klik tombol roda gigi, kemudian klik Project Settings.

Tombol Project Settings

Kita akan mendapati layar setting project. Klik tab Cloud Messaging

Layar Project Setting

Nah, kita bisa mengcopy server key yang tampil di layar.

Server API Key

Mengirim Message

Untuk mengirim message, kita bisa gunakan aplikasi yang bisa mengirim HTTP Request. Saya biasanya menggunakan Rest Console.

Pertama, kita isikan target URLnya.

Target URL

Kemudian, kita isi body request

Body Request

Pastikan content type yang digunakan adalah application/json.

Body messagenya sebagai berikut

{ "data": {
    "nama": "endy",
    "no_peserta": "123"
  },
  "to" : "ethAjHSkZac:APA91bHatrwLuNuGOWvRvaINJc3S2hIHczl2dU73kk2O9Dhf4CEJO99zINWgSENaBPy_6mm6L74TlF3IeqlZtd1HLy6Zf-RPxWuetwdQsPETw--Nq4o_nGOwjffhv42JegG8F8HvkVBu"
}

Isi field to adalah registration token yang didapat aplikasi android kita pada saat dijalankan. Untuk aplikasi saya, nilai token ini saya tampilkan di log

    public void onTokenRefresh() {
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();

        // TODO: Implement this method to send any registration to your app's servers.
        sendRegistrationToServer(refreshedToken);
    }

    private void sendRegistrationToServer(String token) {
        Log.d(TAG, "Refreshed token: " + token);
    }

Sehingga token yang didapat bisa dilihat di Android Monitor.

Android Monitor Token

Kemudian, kita isikan Authorization dengan key yang didapat dari Firebase Console tadi.

Authorization Header

Jangan lupa untuk memberikan prefix key: sebelum nilai keynya.

Lakukan HTTP Post, dan FCM akan memberikan response seperti ini

Response

Selanjutnya, kita bisa lihat messagenya diterima aplikasi Android kita dengan melihat ke Android Monitor.

Android Monitor Message

Penutup

Demikianlah cara setup Firebase Cloud Messaging agar bisa digunakan di aplikasi Android. Selamat mencoba, semoga bermanfaat.