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 aplikasi yang menargetkan perangkat yang menjalankan Android 9 (API level 28) atau yang lebih lama, Anda dapat menanganinya dengan meluncurkan aktivitas saat aplikasi berada di latar belakang. Dokumen ini menunjukkan cara mendapatkan perilaku ini di perangkat yang menjalankan Android 10 (API level 29) hingga Android 13 (API level 33).

Menambahkan izin POST_NOTIFICATIONS

Mulai Android 13, tambahkan baris berikut ke file AndroidManifest.xml Anda:

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

Setelah memilikinya, Anda dapat membuat saluran notifikasi.

Membuat saluran notifikasi

Buat saluran notifikasi untuk menampilkan notifikasi dengan benar dan izinkan pengguna mengelola notifikasi di setelan aplikasi. Untuk informasi selengkapnya tentang saluran notifikasi, lihat Membuat dan mengelola saluran notifikasi.

Buat saluran notifikasi di metode onCreate class Application:

Kotlin

class DACapp : 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 Anda untuk pertama kalinya, mereka akan melihat gambar 1 di layar sistem Info aplikasi aplikasi Anda:

Gambar yang menampilkan Info Aplikasi, layar Notifikasi aplikasi Anda.
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.

Implementasi minimum akan terlihat seperti ini:

Kotlin

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

Jika perangkat Anda menjalankan Android 13, mengetuk tombol Request permission akan memicu dialog yang ditampilkan dalam gambar 2:

Gambar yang menampilkan dialog permintaan izin
Gambar 2. Dialog sistem untuk permintaan izin notifikasi.

Jika pengguna menyetujui permintaan izin, bagian Info aplikasi pada aplikasi akan terlihat seperti gambar 3:

Gambar yang menampilkan layar Info Aplikasi setelah permintaan izin notifikasi disetujui
Gambar 3. Izin notifikasi diberikan.

Membuat notifikasi prioritas tinggi

Saat membuat notifikasi, sertakan judul dan pesan yang deskriptif.

Contoh berikut berisi notifikasi:

Kotlin

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(666, notificationBuilder.build())
}

Menampilkan notifikasi kepada pengguna

Memanggil fungsi showNotification() akan memicu notifikasi sebagai berikut:

Kotlin

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

Notifikasi dalam contoh ini terlihat seperti gambar 4:

Gambar yang menampilkan notifikasi prioritas tinggi
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 sedang aktif, seperti panggilan telepon masuk, kaitkan notifikasi tersebut dengan layanan latar depan. Cuplikan kode berikut menunjukkan cara menampilkan notifikasi yang terkait dengan layanan latar depan:

Kotlin

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

Java

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