FCM ( Firebase Cloud Messaging ) milik Google. FCM merupakan salah satu fitur yang ada pada Firebase. Selain FCM, di firebase juga terdapat fitur-fitur antara lain : Realtime Database, Storage, Authentication, Analytics dll. FCM merupakan pengganti dari GCM (Google Cloud Messaging). Mengapa disebut pengganti? Karena pada Google I/O 2016, Google menyarankan pengguna yang sebelumnya menggunakan GCM untuk beralih menggunakan FCM. Lalu bagaimana membuat push notification dengan menggunakan FCM? Di bawah ini akan sedikit saya jelaskan bagiamana membuat aplikasi simple push notification menggunakan FCM.
Langkah 1 :
Buatlah sebuah projek android menggunakan Android Studio 1.5 keatas. Bagi yang belum membuat projek android bisa ikuti caranya
disini.
Langkah 2 :
Buka build.gradle (Project), tambahkan dependency ke dalam pojek kita
|
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
|
Langkah 3 :
Buka build.gradle (Module), dan tambahkan dependency di bawah ini
|
dependencies {
// ...
compile 'com.google.firebase:firebase-core:9.0.1'
}
// Tambahkan ini dipaling bawah
apply plugin: 'com.google.gms.google-services'
|
Langkah 4 :
Buka console.firebase.google.com. Buatlah sebuah projek firebase
Langkah 4 :
Buka console.firebase.google.com. Buatlah sebuah projek firebase
Langkah 6 :
Setelah membuat projek, kita dialihkan ke halaman dashboard firebase. Berikut tampilannya
Langkah 7 :
Pilih tambahakan firebase ke aplikasi Android anda. Pertama, isikan nama package aplikasi teman-teman. Kedua, isikan debug SHA-1 (untuk pengguna windows dapat melalui command prompt).
Langkah 8 :
Kita akan mendapatkan file google-service.json. Simapan file tersebut untuk kebutuhan di Android Studio nantinya.
Langkah 9 :
Tambahkan build.gradle (sudah kita konfigurasikan di awal tadi). Klik selesai
Langkah 10 :
Kembali ke Android Studio. Tambahkan file google-service.json ke dalam root projek kita. Setelah kita tambahkan kemudian kita pilih Sync now.
Langkah 11 :
Buat class bernama MyFirebaseInstanceIDService.class. Class ini berjalan ketika ada request token.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
/**
* Created by Ridwan_Akbar on 07/06/2016.
*/
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
// fungsi untuk kirim token ke server kita ( opsional )
private void sendRegistrationToServer(String token) {
// Add custom implementation, as needed.
}
}
|
Langkah 12 :
Buat satu class lagi bernama MyFirebaseMessagingService.class. Class ini berfungsi untuk menerima respon jika ada message dari server.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
/**
* Created by Ridwan_Akbar on 07/06/2016.
*/
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
sendNotification(remoteMessage.getNotification().getBody());
}
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, FcmActivity.class);
intent.putExtra("message",messageBody);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("FCM Message")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}
|
Langkah 13 :
Buat layout untuk menampilkan regId GCM kita dan respon jikalau ada message dari server.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"/>
<Button
android:id="@+id/logTokenButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Log Token"
android:layout_gravity="center_horizontal" />
<TextView
android:id="@+id/response"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
</LinearLayout>
|
Langkah 14 :
Buka file utama activity kita. Kemudian isikan sesuai kode di bawah ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.firebase.iid.FirebaseInstanceId;
public class FcmActivity extends AppCompatActivity {
String TAG = "FormActivity";
String response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fcm);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final TextView tvResponse = (TextView) findViewById(R.id.response);
// [START handle_data_extras]
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
String value = getIntent().getExtras().getString(key);
Log.d(TAG, "Key: " + key + " Value: " + value);
response = value;
}
}
Button logTokenButton = (Button) findViewById(R.id.logTokenButton);
if (logTokenButton != null) {
logTokenButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (FirebaseInstanceId.getInstance().getToken() == null) {
response = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());
} else {
Log.d(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());
response = FirebaseInstanceId.getInstance().getToken();
}
tvResponse.setText(response);
}
});
}
}
}
|
Langkah 15 :
Buka file AndroidManifest.xml. tambahkan kode dibawah ini ke dalam manifest.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!—Tambahkan uses-permission internet -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- [START firebase_service] -->
<service android:name="MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- [END firebase_service] -->
<!-- [START firebase_iid_service] -->
<service android:name="MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
|
Sehingga hasilnya akan terlihat seperti ini
Setelah itu coba kita run project, setelah berhasil di jalankan coba klik Button LOG TOKEN dan lihat hasilnya. Kita sudah berhasil mendapatkan regId / tokennya. Sekarang coba kita kirim message dari server ke aplikasi kita. Di firebase sudah disediakan menu untuk mengirim message kita ke aplikasi yang kita buat.
Langkah 16 :
Pada dashboard firebase, pilih menu notifications. Kemudian isilah form-form yang tersedia.
Setelah selesai mengisi form kemudian pilih kirim pesan.
Langkah 17 :
Tampilan setelah teman-teman menekan kirim pesan
Langkah 18 :
Lihat pada smartphone teman-teman, apakah sudah menerima message dari server firebase? Jika sudah menerima message push notification dari server maka anda telah berhasil 🙂
Catatan :
Jika teman-teman ingin menggunakan server sendiri untuk mengirim message ke aplikasi yang dikembangkan, Langkahnya sama seperti dengan GCM hanya saja kita perlu mengubah url yang sebelumnya https://android.googleapis.com/gcm/send menjadi https://fcm.googleapis.com/fcm/send. Kemudian untuk kodingan appsnya pada MyFirebaseMessagingService.class lebih baik menggunakan remoteMessage.getData();daripada remoteMessage.getNotification().getBody();
Sekian sedikit penjelasan saya mengenai bagaimana cara membuat FCM (Firebase Cloud Messaging). Tetap ikuti postingan saya dan Let’s coding!
EmoticonEmoticon