Metode onMessageReceived (RemoteMessage remoteMessage) dipanggil berdasarkan kasus-kasus berikut.
- Tanggapan FCM Dengan pemberitahuan dan blok data :
{
"to": "device token list",
"notification": {
"body": "Body of Your Notification",
"title": "Title of Your Notification"
},
"data": {
"body": "Body of Your Notification in Data",
"title": "Title of Your Notification in Title",
"key_1": "Value for key_1",
"image_url": "www.abc.com/xyz.jpeg",
"key_2": "Value for key_2"
}
}
- Aplikasi di Latar Depan:
onMessageReceived (RemoteMessage remoteMessage) disebut, menampilkan LargeIcon dan BigPicture di bilah notifikasi. Kita dapat membaca konten dari notifikasi dan blok data
- Aplikasi di Latar Belakang:
onMessageReceived (RemoteMessage remoteMessage) tidak dipanggil, system tray akan menerima pesan dan membaca isi dan judul dari blok notifikasi dan menampilkan pesan dan judul default di bilah notifikasi.
- Tanggapan FCM Dengan hanya blok data :
Dalam hal ini, menghapus blok notifikasi dari json
{
"to": "device token list",
"data": {
"body": "Body of Your Notification in Data",
"title": "Title of Your Notification in Title",
"key_1": "Value for key_1",
"image_url": "www.abc.com/xyz.jpeg",
"key_2": "Value for key_2"
}
}
Solusi untuk memanggil onMessageReceived ()
- Aplikasi di Latar Depan:
onMessageReceived (RemoteMessage remoteMessage) disebut, menampilkan LargeIcon dan BigPicture di bilah notifikasi. Kita dapat membaca konten dari notifikasi dan blok data
- Aplikasi di Latar Belakang:
onMessageReceived (RemoteMessage remoteMessage) disebut, system tray tidak akan menerima pesan karena kunci notifikasi tidak ada dalam respons. Memperlihatkan LargeIcon dan BigPicture di bilah notifikasi
Kode
private void sendNotification(Bitmap bitmap, String title, String
message, PendingIntent resultPendingIntent) {
NotificationCompat.BigPictureStyle style = new NotificationCompat.BigPictureStyle();
style.bigPicture(bitmap);
Uri defaultSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
String NOTIFICATION_CHANNEL_ID = mContext.getString(R.string.default_notification_channel_id);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "channel_name", NotificationManager.IMPORTANCE_HIGH);
notificationManager.createNotificationChannel(notificationChannel);
}
Bitmap iconLarge = BitmapFactory.decodeResource(mContext.getResources(),
R.drawable.mdmlogo);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(mContext, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.mdmlogo)
.setContentTitle(title)
.setAutoCancel(true)
.setSound(defaultSound)
.setContentText(message)
.setContentIntent(resultPendingIntent)
.setStyle(style)
.setLargeIcon(iconLarge)
.setWhen(System.currentTimeMillis())
.setPriority(Notification.PRIORITY_MAX)
.setChannelId(NOTIFICATION_CHANNEL_ID);
notificationManager.notify(1, notificationBuilder.build());
}
Tautan Referensi:
https://firebase.google.com/docs/cloud-messaging/android/receive