Jetpack Compose - Notification

Penting
Pembahasan ini merupakan rentetan dari topik pembahasan tentang Dasar Dasar Jetpack Compose, terdapat hampir 100 pembahasan, untuk melihat daftarnya silahkan klik DAFTAR PEMBAHASAN COMPOSE
Pengertian
Notification pada Jetpack Compose merujuk pada komponen atau fitur yang digunakan untuk menampilkan pemberitahuan kepada pengguna, biasanya dalam bentuk pop-up atau pemberitahuan di layar perangkat. Fitur ini belum secara eksplisit diimplementasikan dalam Jetpack Compose pada saat pengetahuan saya terakhir (Januari 2022).
Namun, umumnya, pemberitahuan (notification) dalam konteks Android, termasuk di dalamnya dalam pengembangan dengan Jetpack Compose, merujuk pada pesan atau informasi yang ditampilkan kepada pengguna di luar aplikasi utama, seperti pemberitahuan yang muncul di bilah status perangkat atau sebagai pop-up yang muncul di atas aplikasi saat berjalan.
Pemberitahuan dapat digunakan untuk:
- Memberikan Informasi Penting: Seperti pembaruan aplikasi, pemberitahuan penting dari server, atau informasi lain yang relevan.
- Interaksi dengan Pengguna: Beberapa pemberitahuan dapat menampilkan aksi yang dapat dilakukan pengguna, seperti mengklik untuk membuka aplikasi, atau menyetujui atau menolak permintaan.
Penggunaan Notification
-
Penggunaan Standar: Pemberitahuan sering digunakan untuk mengkomunikasikan informasi penting atau berita terbaru kepada pengguna.
-
Pengiriman Pesan: Biasanya digunakan sebagai medium utama dalam interaksi dengan pengguna, menginformasikan mereka tentang peristiwa penting atau kebutuhan yang memerlukan perhatian segera.
Pada Jetpack Compose, implementasi pemberitahuan bisa mengacu pada integrasi dengan sistem notifikasi Android atau penggunaan komponen-komponen UI seperti AlertDialog, Snackbar, atau Toast untuk memberi tahu pengguna tentang pesan atau informasi yang relevan.
Contoh
@RequiresApi(Build.VERSION_CODES.O)
@Composable
fun DemoNotification() {
val context = LocalContext.current
Row(modifier = Modifier) {
Button(onClick = {
createNotificationChannel(context)
showNotification(context)
}) {
Text("Show Notification")
}
Button(onClick = { navigateToNotificationSettings(context = context) }) {
Text("Open Notification Settings")
}
}
}
fun createNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val name = "Notification Channel"
val descriptionText = "This is a notification channel for demo purposes"
val importance = NotificationManager.IMPORTANCE_DEFAULT
val channel = NotificationChannel("CHANNEL_ID", name, importance).apply {
description = descriptionText
}
val notificationManager: NotificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
}
fun showNotification(context: Context) {
val builder = NotificationCompat.Builder(context, "CHANNEL_ID")
.setSmallIcon(R.drawable.ic_android_black_24dp)
.setContentTitle("My notification")
.setContentText("Hello, The Ngoding!")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
with(NotificationManagerCompat.from(context)) {
if (ActivityCompat.checkSelfPermission(
context,
Manifest.permission.POST_NOTIFICATIONS
) != PackageManager.PERMISSION_GRANTED
) {
return
}
notify(1, builder.build())
}
}
@RequiresApi(Build.VERSION_CODES.O)
fun navigateToNotificationSettings(context: Context) {
val intent = Intent().apply {
action = Settings.ACTION_APP_NOTIFICATION_SETTINGS
putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName)
}
context.startActivity(intent)
}
✨”Jika Kamu tidak sanggup menahan lelahnya belajar maka kamu harus sanggup menahan perihnya kebodohan” ✨Imam Syafi'i