Bubble notifications (atau "chat heads") merupakan fitur yang memungkinkan notifikasi muncul dalam bentuk gelembung melayang di atas layar, sehingga pengguna dapat berinteraksi tanpa harus meninggalkan aplikasi yang sedang digunakan. Fitur ini pertama kali diperkenalkan oleh Facebook Messenger, namun sejak Android 11, Google memberikan API resmi untuk mengimplementasikannya.
Pastikan proyek Android Anda menggunakan AndroidX dan menargetkan API level 30 (Android 11) atau yang lebih tinggi.
dependencies { implementation "androidx.core:core:1.9.0" implementation "androidx.appcompat:appcompat:1.6.1" } Bubble membutuhkan izin POST_NOTIFICATIONS (untuk Android 13 ke atas) dan BUBBLE khusus pada manifest:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <uses-permission android:name="android.permission.BUBBLE"/>
Berikut contoh kode Java/Kotlin untuk menampilkan bubble notification.
NotificationManagerCompat manager = NotificationManagerCompat.from(this); // Tentukan channel String channelId = "bubble_channel"; NotificationChannel channel = new NotificationChannel( channelId, "Bubble Channel", NotificationManager.IMPORTANCE_HIGH); channel.setDescription("Channel untuk bubble notification"); channel.setAllowBubbles(true); manager.createNotificationChannel(channel); // Intent untuk activity yang akan dibuka ketika bubble diklik Intent intent = new Intent(this, ChatActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity( this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); // Buat bubble metadata BubbleMetadata bubbleMetadata = new BubbleMetadata.Builder() .setDesiredHeight(600) // tinggi bubble dalam dp .setIcon(Icon.createWithResource(this, R.drawable.ic_chat_head)) .setIntent(pendingIntent) .build(); // Bangun notifikasi Notification notification = new Notification.Builder(this, channelId) .setSmallIcon(R.drawable.ic_notification) .setContentTitle("Pesan Baru") .setContentText("Anda menerima pesan dari Alice") .setBubbleMetadata(bubbleMetadata) // aktifkan bubble .setAutoCancel(true) .build(); manager.notify(1001, notification); val manager = NotificationManagerCompat.from(this) // Channel val channelId = "bubble_channel" val channel = NotificationChannel( channelId, "Bubble Channel", NotificationManager.IMPORTANCE_HIGH ).apply { description = "Channel untuk bubble notification" setAllowBubbles(true) } manager.createNotificationChannel(channel) // Intent untuk activity val intent = Intent(this, ChatActivity::class.java) val pendingIntent = PendingIntent.getActivity( this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) // Bubble metadata val bubbleMetadata = BubbleMetadata.Builder() .setDesiredHeight(600) .setIcon(Icon.createWithResource(this, R.drawable.ic_chat_head)) .setIntent(pendingIntent) .build() // Notifikasi val notification = Notification.Builder(this, channelId) .setSmallIcon(R.drawable.ic_notification) .setContentTitle("Pesan Baru") .setContentText("Anda menerima pesan dari Bob") .setBubbleMetadata(bubbleMetadata) .setAutoCancel(true) .build() manager.notify(1001, notification) Activity yang di launch dari bubble biasanya berupa UI yang ringan (misalnya chat). Pastikan activity tersebut memiliki android:excludeFromRecents="true" agar tidak muncul di daftar aplikasi terbaru:
<activity android:name=".ChatActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"> </activity>
Pengguna dapat menonaktifkan bubble untuk aplikasi tertentu melalui Settings Apps Nama Aplikasi Notifications Bubbles. Oleh karena itu, selalu periksa apakah bubble diizinkan sebelum mengirim:
if (NotificationManagerCompat.from(this).areBubblesAllowed()) { // kirim notifikasi bubble } png dengan latar transparan, ukuran 96 96 dp atau lebih besar.manager.cancel(id).Berikut contoh implementasi sederhana pada aplikasi chat:
FirebaseMessagingService, bangun notifikasi bubble seperti contoh di atas.ChatActivity menampilkan percakapan dengan data yang diterima.manager.cancel(notificationId) agar bubble hilang.setAllowBubbles(true) dan level pentingnya IMPORTANCE_HIGH atau lebih.POST_NOTIFICATIONS pada runtime untuk Android 13+.Berikut tautan resmi yang dapat membantu Anda memperdalam pemahaman:
Dengan mengikuti langkah langkah di atas, Anda dapat menambahkan bubble notifications pada aplikasi Android Anda, meningkatkan interaksi pengguna, dan memberikan pengalaman yang lebih dinamis.