Tampilkan notifikasi sesuai-waktu

Aplikasi Anda mungkin perlu segera mendapatkan perhatian pengguna dalam situasi tertentu, seperti alarm yang sedang berbunyi atau panggilan masuk. Pada perangkat yang menjalankan Android 9 (level API 28) atau yang lebih rendah, Anda dapat menangani hal ini 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) (level API 29) dan yang lebih tinggi.

Menambahkan izin POST_NOTIFICATIONS

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

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

Setelah 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 di metode onCreate dari class Application:

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 saluran 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")
}

Pada perangkat yang menjalankan Android 13 dan yang lebih tinggi, mengetuk tombol Minta izin akan menampilkan dialog sistem yang ditampilkan dalam 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 sangat penting.

Contoh kode berikut mengonfigurasi dan membuat notifikasi prioritas 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 ditampilkan di perangkat.
Gambar 4. Notifikasi prioritas tinggi.

Notifikasi yang sedang berlangsung

Saat Anda menampilkan notifikasi kepada pengguna, mereka dapat mengonfirmasi 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 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 Live Update

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