
Diterjemahkan untuk Anda
sebuah artikel oleh Brandon Weaver tentang bekerja dengan notifikasi di Android OS. Programmer menjelaskan cara cepat menambahkan fungsi ini ke aplikasi Anda. Artikel ini, pertama-tama, akan bermanfaat bagi pengembang Android pemula.
Pemberitahuan adalah salah satu cara termudah dan tercepat untuk membuat aplikasi Anda lebih interaktif, yang akan menarik lebih banyak pengguna. Pemberitahuan memberi pengguna informasi singkat tentang apa yang mungkin mereka butuhkan saat ini. Ini juga merupakan cara untuk menginformasikan tentang acara mendatang. Mari kita coba dengan cepat menambahkan fitur ini ke aplikasi.
Skillbox merekomendasikan: Kursus Data Online Terapan Analis Data Python .
Kami mengingatkan Anda: untuk semua pembaca "Habr" - diskon 10.000 rubel saat mendaftar untuk kursus Skillbox apa pun menggunakan kode promo "Habr".
Buat Notifikasi
Langkah pertama adalah membuat objek "Pemberitahuan". Untuk melakukan ini, gunakan NotificationCompat.Builder. Konten pemberitahuan minimum yang diizinkan oleh pengembang Android adalah ikon kecil. Ini bagus, tetapi tidak terlalu berguna bagi pengguna. Di bawah ini adalah diagram pemberitahuan standar yang diterima dengan baik.

Ikon kecil akan ditampilkan terus-menerus, dan penting untuk membuatnya transparan. Tanpa ini, alih-alih ikon, Anda mendapatkan kotak putih.
Judul notifikasi juga penting. Ini harus menjadi deskripsi singkat untuk memahami mengapa pengguna umumnya khawatir.
Badan pemberitahuan berisi teks panjang dengan semua informasi yang diperlukan.
Ikon besar dapat berupa logo perusahaan atau yang lainnya.
Di bawah ini adalah dua opsi untuk pengguna.
Untuk menampilkan semua ini, Anda memerlukan kode pendek:
.setSmallIcon(R.drawable.ic_announcement) .setContentTitle(title) .setContentText(body) .build()
Tampilkan pemberitahuan
Kami telah membuat pemberitahuan kami, sekarang tugasnya adalah menunjukkannya. Android memungkinkan untuk melakukan ini menggunakan NotificationManagerCompat. Untuk mengirim pemberitahuan, Anda harus menggunakan notificationID dan pemberitahuan itu sendiri.
with(NotificationManagerCompat.from(context)) { if (getNotificationChannel(CHANNEL_ID) == null) { createNotificationChannel(context) } notify(notificationId, builder.build()) }
Kode tambahan diperlukan untuk memverifikasi keberadaan saluran pemberitahuan.
Saluran dan Pentingnya
Untuk pertama kalinya, pengguna mendapat kesempatan untuk memilih jenis pemberitahuan dari aplikasi mereka di Oreo. Membuat banyak saluran adalah penting, karena jika semuanya berjalan pada satu saluran, pengguna tidak akan dapat memilih jenis pemberitahuan yang ia butuhkan dan akan memblokir semuanya.
teNotificationChannel(context: Context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val name = context.getString(R.string.channel_name) val descriptionText = context.getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_HIGH val channel = NotificationChannel(CHANNEL_ID, name, importance).apply { description = descriptionText } NotificationManagerCompat.from(context).createNotificationChannel(channel) } }
Saluran harus mencakup informasi berikut:
- Pengidentifikasi saluran - ID;
- nama - harus pendek, misalnya, "Pesan";
- pentingnya - itu bisa tinggi, standar, rendah atau minimal;
- deskripsi - itu akan ditampilkan dalam pengaturan Android. Pengembang harus menjaga kualitas deskripsi.
Interaksi pengguna
Ada beberapa cara pengguna dapat berinteraksi dengan notifikasi. Untungnya, API yang memungkinkan Anda untuk mengontrol prosesnya sangat mirip. Maksud dan PendingIntents digunakan untuk memberikan umpan balik ke aplikasi, memberikan logika pemrosesan spesifik.
Cara termudah untuk menangani sejumlah besar notifikasi adalah dengan menggunakan BroadcastReceiver. Ketika pengguna mulai berinteraksi dengan notifikasi, Intent akan menyala dan metode onReceive BroadcastReceiver akan dipanggil.
val builder = NotificationCompat.Builder(context, CHANNEL_ID) ... .setContentIntent(onContentTapped ) .setDeleteIntent(onSwipedAway ) .addAction( R.drawable.ic_announcement, actionTitle, onActionTapped )
ContentIntent akan diluncurkan dengan mengklik notifikasi. Perlu diingat bahwa notifikasi tidak akan ditolak jika Anda tidak memanggil setAutoCancel (true) di dalamnya.
DeleteIntent akan mulai setelah pengguna menghapus pemberitahuan.
Tindakan adalah tombol di bagian bawah notifikasi. Mereka juga memiliki lencana dan nama.
Untuk membuat BroadcastReceiver, Anda perlu memperluas kelas BroadcastReceiver, menimpa metode onReceive dan ingat untuk mendeklarasikan Receiver di AndroidManifest.xml.
class NotificationBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val action = intent.action when (action) { ACTION_ONE -> { Toast.makeText(context, "Action One hit!", Toast.LENGTH_SHORT).show() } ACTION_TWO -> { Toast.makeText(context, "Action Two hit!", Toast.LENGTH_SHORT).show() } } } } object NotificationController { fun pendingIntent(context: Context, name: String, extras: Bundle?): PendingIntent { val intent = Intent(context, NotificationBroadcastReceiver::class.java).apply { action = name putExtra(EXTRA_NOTIFICATION_ID, extras) } return PendingIntent.getBroadcast(context, 0, intent, 0) } }
NotificationController adalah alat cepat untuk membuat PendingIntents untuk pemberitahuan. Yang paling penting adalah memberikan tindakan pada nama yang berbeda untuk menangani reaksi pengguna terhadap pemberitahuan dengan benar. Juga, jika Anda bermaksud untuk memulai suatu Kegiatan dari BroadcastReceiver, Anda harus menggunakan IntentFlag NEW_TASK.
Ini diperlukan untuk memproses semua notifikasi di satu tempat. Maksud juga dapat didaftarkan untuk BroadcastReceivers yang berbeda, sehingga Anda dapat membatasi ruang lingkup untuk satu BroadcastReceiver untuk setiap jenis pemberitahuan.
Semua ini hanyalah awal dari pekerjaan. Dokumentasi ini memiliki banyak contoh bagus, jadi pastikan untuk mempelajarinya jika Anda memiliki pertanyaan atau ingin melakukan sesuatu yang lebih maju.
Skillbox merekomendasikan: