Jetpack Compose - Notification

The Ngoding

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

  1. Penggunaan Standar: Pemberitahuan sering digunakan untuk mengkomunikasikan informasi penting atau berita terbaru kepada pengguna.

  2. 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)
}

Snackbar


✨”Jika Kamu tidak sanggup menahan lelahnya belajar maka kamu harus sanggup menahan perihnya kebodohan” ✨Imam Syafi'i

Video

The Ngoding

13 Alasan Jetpack Compose Lebih Baik untuk Pengembangan Aplikasi Android

Cong Fandi

Jetpack Compose - Surface

Cong Fandi

Jetpack Compose - CutCornerShape

Cong Fandi

Jetpack Compose - RoundedCornerShape

Cong Fandi

Jetpack Compose - CircleShape

Cong Fandi

Jetpack Compose - ConstraintSet

Cong Fandi

Jetpack Compose - BadgeBox

Cong Fandi

Video

The Ngoding

Tags