Tampilkan notifikasi sesuai-waktu

Aplikasi Anda mungkin perlu segera mendapatkan perhatian pengguna dalam situasi tertentu, seperti alarm yang terus-menerus berbunyi atau panggilan masuk. Di perangkat yang menjalankan Android 9 (level API 28) atau yang lebih rendah, Anda dapat menanganinya dengan meluncurkan aktivitas saat aplikasi berada di latar belakang. Dokumen ini menunjukkan cara mencapai perilaku ini di perangkat yang menjalankan Android 10 (level API 29) dan yang lebih tinggi.

Tambahkan izin POST_NOTIFICATIONS

Mulai Android 13 (level API 33), deklarasikan izin POST_NOTIFICATIONS dalam file AndroidManifest.xml Anda:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

Setelah Anda mendeklarasikan izin, buat saluran notifikasi.

Membuat saluran notifikasi

Buat saluran notifikasi untuk menampilkan notifikasi dan memungkinkan pengguna mengelola kategori notifikasi di setelan sistem. Untuk mengetahui informasi selengkapnya tentang saluran notifikasi, lihat Membuat dan mengelola saluran notifikasi.

Buat saluran notifikasi Anda dalam metode onCreate di class Application Anda:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        val channel = NotificationChannel(
            CHANNEL_ID,
            "High priority notifications",
            NotificationManager.IMPORTANCE_HIGH
        )

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}

Saat pengguna menjalankan aplikasi untuk pertama kalinya, sistem akan menampilkan saluran di layar Info aplikasi, seperti yang ditunjukkan pada Gambar 1:

Layar notifikasi Info Aplikasi yang menampilkan channel yang dibuat.
Gambar 1. Bagian Notifikasi di layar Info Aplikasi pada setelan sistem aplikasi.

Mengelola izin notifikasi

Mulai Android 13, minta izin notifikasi sebelum Anda menampilkan notifikasi kepada pengguna.

Contoh kode berikut menunjukkan cara meminta izin notifikasi runtime di Jetpack Compose:

val permissionLauncher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission(),
    onResult = { hasNotificationPermission = it }
)
// ...
Button(
    onClick = {
        if (!hasNotificationPermission) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
            }
        }
    },
) {
    Text(text = "Request permission")
}

Di perangkat yang menjalankan Android 13 dan yang lebih tinggi, mengetuk tombol Minta izin akan menampilkan dialog sistem yang ditunjukkan pada Gambar 2:

Dialog sistem yang meminta pengguna untuk mengizinkan notifikasi.
Gambar 2. Dialog sistem untuk permintaan izin notifikasi.

Saat pengguna memberikan izin, sistem akan memperbarui layar Info aplikasi, seperti yang ditunjukkan pada Gambar 3:

Layar Info Aplikasi yang menampilkan izin notifikasi yang diberikan.
Gambar 3. Izin notifikasi diberikan.

Membuat notifikasi prioritas tinggi

Saat Anda membuat notifikasi prioritas tinggi, berikan judul dan teks pesan yang jelas. Tetapkan juga saluran dan tingkat prioritas yang penting.

Contoh kode berikut mengonfigurasi dan membuat notifikasi berprioritas tinggi:

private fun showNotification() {
    val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

    val notificationBuilder =
        NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.baseline_auto_awesome_24)
            .setContentTitle("HIGH PRIORITY")
            .setContentText("Check this dog puppy video NOW!")
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION)

    notificationManager.notify(0, notificationBuilder.build())
}

Menampilkan notifikasi kepada pengguna

Memanggil fungsi showNotification akan memicu notifikasi sebagai berikut:

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

Gambar 4 menunjukkan notifikasi prioritas tinggi yang ditampilkan oleh sistem:

Notifikasi prioritas tinggi yang ditampilkan di perangkat.
Gambar 4. Notifikasi prioritas tinggi.

Notifikasi yang sedang berlangsung

Saat Anda menampilkan notifikasi kepada pengguna, pengguna dapat menerima atau menutup pemberitahuan atau pengingat aplikasi Anda. Misalnya, pengguna dapat menerima atau menolak panggilan telepon masuk.

Jika notifikasi Anda mewakili tugas latar belakang yang sedang berlangsung, seperti panggilan telepon yang aktif, kaitkan notifikasi dengan layanan latar depan. Cuplikan kode berikut menunjukkan cara menampilkan notifikasi yang terkait dengan layanan latar depan:

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification)

Pertimbangkan untuk menggunakan Info Terbaru Langsung

Notifikasi berkelanjutan yang mendesak dapat memperoleh manfaat dari peningkatan visibilitas. Pertimbangkan untuk mempromosikan notifikasi berkelanjutan sebagai Live Updates untuk menampilkan informasi status di seluruh platform UI sistem.