Notification Action — tombol interaktif dan kolom input yang ditampilkan langsung di notifikasi push dan memungkinkan pengguna melakukan tindakan tanpa membuka aplikasi. Ini adalah elemen kunci pengalaman pengguna yang mempersingkat jalan menuju layar target. Menurut Android Developers, 2025, Notification Action meningkatkan keterlibatan pengguna hingga 40% dengan mengurangi gesekan saat interaksi.
Poin utama
Notification Action — adalah elemen antarmuka interaktif yang ditambahkan ke notifikasi push untuk melakukan tindakan tertentu. Pengguna dapat membalas pesan, mengonfirmasi tugas, atau membuka layar tertentu tanpa masuk ke aplikasi. Tindakan ditampilkan sebagai tombol di bawah teks notifikasi atau dalam tampilan diperluas saat digeser.
Tujuan utama Notification Action adalah mengurangi jumlah langkah yang diperlukan pengguna untuk mencapai tujuannya. Alih-alih membuka aplikasi dan menavigasi ke layar yang diinginkan, pengguna cukup mengeklik satu tombol. Penelitian menunjukkan bahwa aplikasi dengan notifikasi interaktif memiliki tingkat keterlibatan 25–40% lebih tinggi dibandingkan notifikasi biasa.
Di Android, Notification Action ditampilkan sebagai tombol ikon dalam tampilan ringkas dan sebagai tombol teks dalam mode diperluas. Di iOS, tindakan muncul saat menekan lama notifikasi atau menggeser ke kiri. Setiap platform memiliki rekomendasi tersendiri mengenai jumlah tindakan — Android merekomendasikan maksimal 3, iOS maksimal 4.
| Platform | Maks. tindakan | Cara tampilan | Jenis tindakan |
|---|---|---|---|
| Android | 3 | Ikon + teks | Tombol, input teks |
| iOS | 4 | Tekan lama / geser | Tombol, input teks |
Di Android, Notification Action dibuat melalui NotificationCompat.Builder menggunakan metode addAction(). Setiap tindakan berisi ikon, teks, dan PendingIntent yang dipicu saat diklik. Mulai Android 7.0 (API 24), input teks langsung melalui RemoteInput didukung.
Untuk membuat tombol dalam notifikasi, perlu ditentukan PendingIntent yang akan dijalankan saat diklik. PendingIntent dapat membuka Activity, menjalankan Service, atau BroadcastReceiver. Ikon tindakan harus monokrom dan sesuai dengan Material Design.
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)
val acceptPendingIntent = PendingIntent.getBroadcast(
context, requestCode,
acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Permintaan konfirmasi")
.setContentText("Konfirmasi penyelesaian tugas")
.addAction(R.drawable.ic_accept, "Konfirmasi", acceptPendingIntent)
.build()
Untuk skenario yang memerlukan input teks (misalnya membalas pesan), Android menyediakan RemoteInput. Pengguna memasukkan teks langsung di notifikasi, dan aplikasi menerimanya tanpa membuka Activity. RemoteInput didukung di Android 7.0+ dan memerlukan penanganan eksplisit di BroadcastReceiver atau Service.
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("Masukkan jawaban")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "Balas", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
Saat tindakan diklik, sistem menjalankan PendingIntent yang ditentukan. Untuk mendapatkan teks yang dimasukkan dari RemoteInput, panggil RemoteInput.getResultsFromIntent(intent). Disarankan untuk menangani tindakan di IntentService atau WorkManager agar tidak memblokir thread UI.
Di iOS, Notification Action diimplementasikan melalui framework UserNotifications. Pengembang membuat kategori tindakan (UNNotificationCategory) dan mendaftarkannya saat aplikasi dimulai. Setiap tindakan didefinisikan oleh objek UNNotificationAction dengan pengidentifikasi unik.
Untuk menambahkan tindakan ke notifikasi push di iOS, perlu dibuat kategori yang mengelompokkan tindakan terkait. Kategori ditentukan dalam muatan notifikasi melalui bidang category. Setelah menerima notifikasi, sistem menampilkan tindakan yang tersedia dari kategori yang ditentukan.
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "Konfirmasi",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "Tolak",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
Ketika pengguna mengeklik tindakan, sistem memanggil metode userNotificationCenter:didReceiveNotificationResponse di delegat UNUserNotificationCenter. response.actionIdentifier berisi pengidentifikasi tindakan yang dilakukan. Untuk input teks, digunakan UNTextInputNotificationAction yang menyediakan teks yang dimasukkan pengguna.
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
switch response.actionIdentifier {
case "APPROVE_ACTION":
Log.d("Action: approved")
case "DECLINE_ACTION":
Log.d("Action: declined")
case UNNotificationDefaultActionIdentifier:
Log.d("Action: opened app")
default:
break
}
completionHandler()
}
}
Notification Action diklasifikasikan berdasarkan jenis interaksi dan skenario penggunaan. Pemilihan jenis tindakan yang tepat secara langsung memengaruhi pengalaman pengguna dan konversi ke tindakan target.
Jenis paling umum — tombol yang membuka aplikasi di layar tertentu. Di Android digunakan PendingIntent.getActivity(), di iOS — opsi .foreground untuk UNNotificationAction. Diterapkan untuk tindakan yang memerlukan antarmuka lengkap, misalnya melihat detail pesanan.
Tindakan yang dijalankan tanpa membuka aplikasi. Di Android digunakan PendingIntent.getBroadcast() atau PendingIntent.getService(). Di iOS — opsi .authenticationRequired atau tanpa .foreground. Contoh: menandai tugas sebagai selesai, menyukai postingan, menambahkan ke favorit.
Memungkinkan pengguna memasukkan teks langsung di notifikasi. Di Android diimplementasikan melalui RemoteInput, di iOS melalui UNTextInputNotificationAction. Digunakan untuk membalas pesan, komentar, memasukkan kode konfirmasi satu kali.
Tindakan yang mengubah data secara tidak dapat dibatalkan — hapus, tolak, blokir. Di Android ditandai secara visual (warna merah di beberapa sistem), di iOS memerlukan opsi .destructive. Disarankan meminta konfirmasi untuk tindakan destruktif, misalnya melalui dialog tambahan atau klik kedua.
Kelas tindakan terpisah — input teks langsung dari notifikasi. Di Android diimplementasikan melalui RemoteInput dalam kombinasi dengan PendingIntent. Di iOS digunakan UNTextInputNotificationAction yang mewarisi UNNotificationAction. Tindakan semacam itu digunakan untuk balasan cepat di aplikasi pesan, memasukkan kode promo, mengisi formulir umpan balik, atau mengevaluasi kualitas layanan. Teks yang dimasukkan dikirimkan ke aplikasi bersama dengan pengidentifikasi tindakan. Untuk penanganan input teks yang benar di kedua platform, perlu diimplementasikan penguraian data yang dimasukkan dan validasi sebelum menjalankan tindakan target.
Penanganan Notification Action yang benar sangat penting untuk analitik dan pengalaman pengguna. Setiap klik harus dicatat, dan tindakan harus dijalankan dengan andal, bahkan jika aplikasi ditutup.
Lacak setiap klik pada Notification Action melalui sistem analitik. Firebase Analytics, Mixpanel, atau Yandex.Metrica memungkinkan pencatatan pengidentifikasi tindakan, waktu klik, dan konteks notifikasi. Data ini membantu mengoptimalkan strategi notifikasi dan meningkatkan keterlibatan. Pengujian A/B dengan kumpulan tindakan yang berbeda membantu menentukan skenario interaksi pengguna yang paling efektif.
Jika aplikasi ditutup, sistem tetap mengirimkan Intent atau UNNotificationResponse saat tindakan diklik. Di Android, gunakan BroadcastReceiver untuk penanganan terjamin. Di iOS, sistem meluncurkan aplikasi di latar belakang dan mengirimkan respons ke delegat. Untuk tindakan kritis (konfirmasi pembayaran, otorisasi), tambahkan mekanisme percobaan ulang dan pemberitahuan kepada pengguna tentang keberhasilan eksekusi.
Mulai Android 7.0, pengembang dapat memengaruhi tampilan Notification Action melalui ikon dan warna. Ikon harus monokrom (saluran alfa), berukuran 24x24 dp. Di iOS, kustomisasi tombol terbatas — menggunakan warna dan font sistem. Material Design merekomendasikan pengelompokan tindakan berdasarkan prioritas: tindakan terpenting pertama, tindakan destruktif terakhir.
Pertanyaan yang sering diajukan
Di Android disarankan maksimal 3 tindakan, di iOS hingga 4. Melebihi batas menyebabkan beberapa tindakan tidak ditampilkan atau disembunyikan di submenu.
Ikon diteruskan ke NotificationCompat.Action.Builder sebagai sumber daya drawable. Ikon harus monokrom (saluran alfa), berukuran 24x24 dp, dan sesuai dengan panduan Material Design.
Ya, jika notifikasi ditampilkan di layar terkunci dan bendera visibility diatur ke VISIBILITY_PUBLIC. Di iOS, opsi .authenticationRequired diperlukan untuk tindakan yang memerlukan otorisasi.
Di Android, sistem membuat ulang proses dan mengirimkan Intent. Di iOS, sistem meluncurkan aplikasi di latar belakang. Pengiriman dapat dijamin dengan BroadcastReceiver di Android dan UNNotificationServiceExtension di iOS.
Di Android, tindakan langsung terlihat di bawah notifikasi sebagai ikon. Di iOS, tindakan tersembunyi di balik tekan lama atau geser. Desain UX notifikasi harus mempertimbangkan perbedaan platform ini.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga