Cara Membuat Notifikasi Di Android Studio

Cara Membuat Notifikasi Di Android Studio

Notifikasi memberikan permakluman singkat dan tepat waktu tentang peristiwa di aplikasi Anda saat sedang bukan digunakan. Halaman ini menunjukkan kepada Anda cara membuat notifikasi dengan bermacam-macam fitur kerjakan Android 4.0 (Api level 14) dan versi yang lebih mentah. Untuk pengantar cara notifikasi muncul di Android, tatap Ringkasan Notifikasi. Untuk kode contoh yang menggunakan notifikasi, lihat Contoh Notifikasi Android.

Perhatikan bahwa kode pada halaman ini menggunakan
NotificationCompat
Jago merah dari Android support library. API tersebut memungkinkan Anda untuk menambahkan fitur yang tersaji hanya sreg versi Android yang lebih yunior bertepatan patuh mengasihkan kompatibilitas ke Android 4.0 (API level 14). Namun, bilang fitur baru seperti tindakan balas inline mengakibatkan tidak adanya pengoperasian pada versi yang lebih lama.

Menambahkan support library

Sungguhpun sebagian lautan project yang dibuat dengan Android Studio melibatkan ketergantungan nan diperlukan kerjakan menggunakan
NotificationCompat, Engkau harus memverifikasi bahwa file
build.gradle
level modul mengikutsertakan kecanduan berikut:

        dependencies {     implementation "com.android.support:support-compat:28.0.0" }
        
      

Membuat notifikasi dasar

Notifikasi kerumahtanggaan kerangka yang paling mendasar dan ringkas (juga dikenal perumpamaan rencana yang diciutkan) menampilkan ikon, judul, dan bilang kecil referensi konten. Di bagian ini, Anda akan mempelajari cara membuat notifikasi yang boleh diklik pengguna kerjakan meluncurkan aktivitas di aplikasi Sira.

Cara Membuat Notifikasi Di Android Studio

Gambar 1.
Notifikasi dengan kepala karangan dan teks

Bikin detail sepenuhnya tentang setiap adegan dari notifikasi, baca ilmu urai notifikasi.

Menetapkan konten notifikasi

Buat memulai, Beliau perlu menetapkan konten dan sungai buatan notifikasi memperalat alamat
NotificationCompat.Builder. Contoh berikut menunjukkan cara membuat notifikasi dengan:

  • Ikon mungil, yang ditetapkan
    setSmallIcon()
    Ini adalah satu-satunya konten yang bisa dilihat pengguna nan diperlukan.
  • Tajuk, yang ditetapkan
    setContentTitle()
  • Teks isi, nan ditetapkan
    setContentText().
  • Prioritas notifikasi, yang ditetapkan
    setPriority(). Prioritas menentukan seberapa mengganggu notifikasi lega Android 7.1 dan varian yang lebih lama. (Untuk Android 8.0 dan versi nan bertambah mentah, Beliau harus menetapkan fungsi saluran yang ditunjukkan di bagian selanjutnya.)

Kotlin

var builder = NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle(textTitle)         .setContentText(textContent)         .setPriority(NotificationCompat.PRIORITY_DEFAULT)
          

Java

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle(textTitle)         .setContentText(textContent)         .setPriority(NotificationCompat.PRIORITY_DEFAULT);
          

Perhatikan bahwa konstruktor
NotificationCompat.Builder
mengharuskan Anda menerimakan ID saluran. Ini diperlukan lakukan kompatibilitas dengan Android 8.0 (Api level 26) dan versi yang makin baru, tetapi diabaikan oleh versi yang lebih lama.

Secara default, konten teks notifikasi dipotong seharusnya pas n domestik satu ririt. Jika mencitacitakan notifikasi lebih panjang, Anda boleh mengaktifkan notifikasi nan bisa diperluas dengan menambahkan template kecenderungan menggunakan
setStyle(). Misalnya, kode berikut akan takhlik wilayah teks yang lebih luas:

Kotlin

var builder = NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Much longer text that cannot fit one line...")
            .setStyle(NotificationCompat.BigTextStyle()                 .bigText("Much longer text that cannot fit one line..."))
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
          

Java

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Much longer text that cannot fit one line...")
            .setStyle(new NotificationCompat.BigTextStyle()                 .bigText("Much longer text that cannot sehat one line..."))
            .setPriority(NotificationCompat.PRIORITY_DEFAULT);
          

Bagi keterangan gaya notifikasi besar enggak seutuhnya, terdaftar cara menambahkan rangka dan yuridiksi pemutaran media, lihat Membuat Notifikasi dengan Detail yang Dapat Diperluas.

Menciptakan menjadikan terusan dan menetapkan kepentingannya

Sebelum dapat menayangkan notifikasi di Android 8.0 dan versi yang bertambah plonco, Anda harus mendaftarkan parit notifikasi aplikasi Anda ke sistem dengan menyinambungkan instance
NotificationChannel
ke
createNotificationChannel(). Dengan begitu, kode berikut akan diblokir maka dari itu suatu kondisi pada versi
SDK_INT:

Kotlin

private fun createNotificationChannel() {     // Create the NotificationChannel, but only on API 26+ because     // the NotificationChannel class is new and not in the support library     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {         val name = getString(R.string.channel_name)         val descriptionText = getString(R.string.channel_description)         val importance = NotificationManager.IMPORTANCE_DEFAULT         val channel = NotificationChannel(CHANNEL_ID, name, importance).apply {             description = descriptionText         }         // Register the channel with the system         val notificationManager: NotificationManager =             getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager         notificationManager.createNotificationChannel(channel)     } }
          

Java

private void createNotificationChannel() {     // Create the NotificationChannel, but only on Jago merah 26+ because     // the NotificationChannel class is new and not in the support library     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {         CharSequence name = getString(R.string.channel_name);         String description = getString(R.string.channel_description);         int importance = NotificationManager.IMPORTANCE_DEFAULT;         NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);         channel.setDescription(description);         // Register the channel with the system; you can't change the importance         // or other notification behaviors after this         NotificationManager notificationManager = getSystemService(NotificationManager.class);         notificationManager.createNotificationChannel(channel);     } }
          

Karena harus membuat susukan notifikasi sebelum memposting notifikasi apa pula di Android 8.0 dan versi nan kian mentah, Dia harus menjalankan kode ini segera setelah aplikasi Anda dimulai. Aman bagi memanggilnya iteratif kali karena membuat saluran notifikasi yang terserah tidak akan menjalankan operasi barang apa pun.

Perhatikan bahwa konstruktor
NotificationChannel
memerlukan
importance, menunggangi salah satu konstanta dari class
NotificationManager. Parameter ini menentukan cara menginterupsi pengguna kerjakan setiap notifikasi yang terdaftar dalam terusan ini—meskipun Anda sekali lagi harus menetapkan
prioritas
dengan
setPriority()
untuk kontributif Android 7.1 dan yang lebih lama (seperti nan ditunjukkan di atas).

Meskipun Anda harus menjadwalkan kepentingan/prerogatif notifikasi sebagaimana yang ditunjukkan di sini, sistem enggak menjamin perilaku pemberitahuan yang akan Engkau dapatkan. Kerumahtanggaan bilang kasus, sistem mungkin mengubah tingkat kepentingan berdasarkan faktor-faktor lain, dan pemakai bisa menentukan ulang tingkat faedah untuk saluran tertentu bilamana saja.

Untuk informasi perbedaan tingkat selengkapnya, baca tingkat arti notifikasi.

Menetapkan tindakan ketuk notifikasi

Setiap notifikasi harus merespons pukulan, lazimnya lakukan mendedahkan aktivitas intern aplikasi Anda yang sesuai dengan notifikasi tersebut. Untuk melakukannya, Anda harus menentukan intent konten nan ditentukan dengan objek
PendingIntent
dan meneruskannya ke
setContentIntent().

Cuplikan berikut ini menunjukkan kaidah membuat intent sumber akar untuk membuka aktivitas detik pengguna mengetuk notifikasi:

Kotlin

// Create an explicit intent for an Activity in your app
            val intent = Intent(this, AlertDetails::class.java).apply {     flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK }
            val pendingIntent: PendingIntent = PendingIntent.getActivity(this, 0, intent, 0)  val builder = NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Hello World!")         .setPriority(NotificationCompat.PRIORITY_DEFAULT)         // Set the intent that will fire when the user taps the notification
            .setContentIntent(pendingIntent)
            .setAutoCancel(true)
          

Java

// Create an explicit intent for an Activity in your app
            Intent intent = new Intent(this, AlertDetails.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
            NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Hello World!")         .setPriority(NotificationCompat.PRIORITY_DEFAULT)         // Set the intent that will fire when the user taps the notification
            .setContentIntent(pendingIntent)
            .setAutoCancel(true);
          

Perhatikan kode ini memanggil
setAutoCancel()
yang otomatis menghapus notifikasi saat pemakai mengetuknya.

Read:  Cara Memasukkan Subtitle Film Di Laptop

Metode
setFlags()
nan ditunjukkan di atas kontributif menjaga camar duka navigasi yang diharapkan pengguna setelah membuka aplikasi Anda melalui notifikasi. Sekadar, keputusan bikin menggunakannya ataupun bukan gelimbir puas jenis aktivitas segala apa yang Ia mulai, yang mungkin yaitu salah satu dari:

  • Aktivitas yang ada unik buat merespons notifikasi. Tak ada alasan buat pengguna untuk mengarah ke aktivitas ini selama eksploitasi aplikasi stereotip. Bintang sartan aktivitas tersebut akan memulai tugas baru dan bukannya ditambahkan ke tugas dan data sebelumnya yang sudah ada plong aplikasi Anda. Ini adalah variasi intent yang dibuat kerumahtanggaan contoh di atas.
  • Aktivitas yang ada dalam alur tuntutan reguler aplikasi Anda. N domestik hal ini, memulai aktivitas harus membuat data sebelumnya sehingga pamrih konsumen bikin pentol Kembali dan Panjat tetap dipertahankan.

Kerjakan plural cara internal mengonfigurasi intent notifikasi Kamu seutuhnya, baca Memulai Aktivitas dari Notifikasi.

Menyodorkan notifikasi

Untuk mewujudkan notifikasi muncul, panggil
NotificationManagerCompat.notify(), dahulu teruskan ID eksklusif untuk notifikasi tersebut dan hasil bersumber
NotificationCompat.Builder.build(). Paradigma:

Kotlin

with(NotificationManagerCompat.from(this)) {     // notificationId is a unique int for each notification that you must define     notify(notificationId, builder.build()) }
          

Java

NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);  // notificationId is a unique int for each notification that you must define notificationManager.notify(notificationId, builder.build());
          

Ingatlah untuk menyimpan ID notifikasi yang diteruskan ke
NotificationManagerCompat.notify()
karena Anda akan memerlukannya nanti jika kepingin memperbarui maupun menghapus notifikasi.

Menambahkan tombol tindakan

Notifikasi bisa menawarkan sebatas tiga tombol tindakan nan memungkinkan pengguna merespons dengan cepat, sebagaimana menunda pengingat alias tambahan pula menyaingi pesan pustaka. Doang, kenop tindakan tersebut seharusnya bukan menduplikasi tindakan yang dijalankan ketika pengguna mengetuk notifikasi.

Gambar 2.
Notifikasi dengan satu tombol tindakan

Untuk menambahkan tombol tindakan, teruskan
PendingIntent
ke metode
addAction(). Cara ini mirip dengan menyiagakan tindakan ketuk default notifikasi, cuma tidak meluncurkan aktivitas, melainkan melakukan kejadian tidak seperti memulai
BroadcastReceiver
yang akan menjalankan tugas di latar bokong sehingga tindakan tersebut tidak mengganggu permohonan yang mutakadim terbuka.

Misalnya, kode berikut ini menunjukkan pendirian mengirim embaran ke penyambut tertentu:

Kotlin

            val snoozeIntent = Intent(this, MyBroadcastReceiver::class.java).apply {     action = ACTION_SNOOZE     putExtra(EXTRA_NOTIFICATION_ID, 0) } val snoozePendingIntent: PendingIntent =     PendingIntent.getBroadcast(this, 0, snoozeIntent, 0)
            val builder = NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Hello World!")         .setPriority(NotificationCompat.PRIORITY_DEFAULT)         .setContentIntent(pendingIntent)
            .addAction(R.drawable.ic_snooze, getString(R.string.snooze),                 snoozePendingIntent)
          

Java

            Intent snoozeIntent = new Intent(this, MyBroadcastReceiver.class); snoozeIntent.setAction(ACTION_SNOOZE); snoozeIntent.putExtra(EXTRA_NOTIFICATION_ID, 0); PendingIntent snoozePendingIntent =         PendingIntent.getBroadcast(this, 0, snoozeIntent, 0);
            NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Hello World!")         .setPriority(NotificationCompat.PRIORITY_DEFAULT)         .setContentIntent(pendingIntent)
            .addAction(R.drawable.ic_snooze, getString(R.string.snooze),                 snoozePendingIntent);
          

Untuk kabar selengkapnya adapun membentuk
BroadcastReceiver
buat menjalankan tugas meres pinggul, lihat Panduan siaran.

Jika Anda mengepas membuat notifikasi dengan cembul pemutaran media (seperti mana untuk menjeda dan menerobos lagu), tatap kaidah membuat notifikasi dengan dominasi media.

Menambahkan tindakan balasan simultan

Tindakan persangkalan refleks nan diperkenalkan di Android 7.0 (API level 24) memungkinkan pengguna mengegolkan teks langsung ke notifikasi yang dikirimkan ke aplikasi Anda tanpa menyingkapkan aktivitas. Misalnya, Anda boleh menggunakan tindakan pertempuran langsung kerjakan memungkinkan pengguna melawan pesan teks atau memperbarui daftar tugas dari dalam notifikasi.

Kerangka 3.
Mengetuk tombol “Balas” akan membuka input teks

Tindakan balasan langsung muncul misal tombol lampiran dalam notifikasi yang membuka input teks. Detik pengguna radu mengetik, sistem akan melampirkan respons teks ke intent nan mutakadim Anda tentukan untuk tindakan notifikasi dan mengirimkan intent tersebut ke tuntutan Anda.

Menambahkan kenop balas

Kerjakan membuat tindakan notifikasi yang mendukung tentangan sambil:

  1. Cak bagi instance
    RemoteInput.Builder
    yang bisa Beliau tambahkan ke tindakan notifikasi. Konstruktor class ini menerima string yang digunakan sistem misal kunci bakal input referensi. Kemudian, aplikasi perangkat kepal Anda akan memperalat daya tersebut cak bagi mengambil teks berpokok input tersebut.

    Kotlin

    // Key for the string that's delivered in the action's intent. private val KEY_TEXT_REPLY = "key_text_reply" var replyLabel: String = resources.getString(R.string.reply_label) var remoteInput: RemoteInput = RemoteInput.Builder(KEY_TEXT_REPLY).run {     setLabel(replyLabel)     build() }
                  

    Java

    // Key for the string that's delivered in the action's intent. private static final String KEY_TEXT_REPLY = "key_text_reply";  String replyLabel = getResources().getString(R.string.reply_label); RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)         .setLabel(replyLabel)         .build();
                  
  2. Buat
    PendingIntent
    bagi tindakan balasan.

    Kotlin

    // Build a PendingIntent for the reply action to trigger. var replyPendingIntent: PendingIntent =     PendingIntent.getBroadcast(applicationContext,         conversation.getConversationId(),         getMessageReplyIntent(conversation.getConversationId()),         PendingIntent.FLAG_UPDATE_CURRENT)
                  

    Java

    // Build a PendingIntent for the reply action to trigger. PendingIntent replyPendingIntent =         PendingIntent.getBroadcast(getApplicationContext(),                 conversation.getConversationId(),                 getMessageReplyIntent(conversation.getConversationId()),                 PendingIntent.FLAG_UPDATE_CURRENT);
                  

    Perhatian:
    Jika Anda memperalat ulang
    PendingIntent, konsumen mungkin salah membalas ke percakapan lain karena mereka mengira itu merupakan percakapan yang sama. Ia harus memberikan kode tuntutan nan berlainan untuk setiap percakapan ataupun menyerahkan intent yang tidak menampilkan
    true
    saat memanggil
    equals()
    pada intent balasan dari percakapan lainnya. ID percakapan demap kali diteruskan bak penggalan berpangkal paket suplemen intent, tetapi diabaikan ketika Kamu menjuluki
    equals().

  3. Lampirkan korban
    RemoteInput
    ke suatu tindakan memperalat
    addRemoteInput().

    Kotlin

    // Create the reply action and add the remote input. var action: NotificationCompat.Action =     NotificationCompat.Action.Builder(R.drawable.ic_reply_icon,         getString(R.string.tera), replyPendingIntent)         .addRemoteInput(remoteInput)         .build()
                  

    Java

    // Create the reply action and add the remote input. NotificationCompat.Action action =         new NotificationCompat.Action.Builder(R.drawable.ic_reply_icon,                 getString(R.string.label), replyPendingIntent)                 .addRemoteInput(remoteInput)                 .build();
                  
  4. Terapkan tindakan tersebut sreg notifikasi dan keluarkan notifikasinya.

    Kotlin

    // Build the notification and add the action. val newMessageNotification = Notification.Builder(context, CHANNEL_ID)         .setSmallIcon(R.drawable.ic_message)         .setContentTitle(getString(R.string.title))         .setContentText(getString(R.string.content))         .addAction(action)         .build()  // Issue the notification. with(NotificationManagerCompat.from(this)) {     notificationManager.notify(notificationId, newMessageNotification) }
                  

    Java

    // Build the notification and add the action. Notification newMessageNotification = new Notification.Builder(context, CHANNEL_ID)         .setSmallIcon(R.drawable.ic_message)         .setContentTitle(getString(R.string.title))         .setContentText(getString(R.string.content))         .addAction(action)         .build();  // Issue the notification. NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(notificationId, newMessageNotification);
                  

Sistem akan meminang pengguna bagi memasukkan respons ketika mereka menembakkan tindakan notifikasi, seperti nan ditunjukkan plong lembaga 3.

Mengambil input pengguna terbit balasan

Bikin mengamini masukan pengguna dari UI sambutan notifikasi, panggil
RemoteInput.getResultsFromIntent(), yang akan meneruskan
Intent
nan diterima makanya
BroadcastReceiver
Anda:

Kotlin

private fun getMessageText(intent: Intent): CharSequence? {     return RemoteInput.getResultsFromIntent(intent)?.getCharSequence(KEY_TEXT_REPLY) }
          

Java

private CharSequence getMessageText(Intent intent) {     Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);     if (remoteInput != null) {         return remoteInput.getCharSequence(KEY_TEXT_REPLY);     }     return null;  }
          

Setelah memproses bacaan tersebut, Kamu harus memperbarui notifikasi dengan memanggil
NotificationManagerCompat.notify()
menggunakan ID dan tag yang sama (jikalau digunakan). Langkah ini diperlukan bakal menyembunyikan UI balasan sedarun dan mengonfirmasi kepada pengguna bahwa pertampikan mereka sudah lalu dituruti dan diproses dengan etis.

Kotlin

// Build a new notification, which informs the user that the system // handled their interaction with the previous notification. val repliedNotification = Notification.Builder(context, CHANNEL_ID)         .setSmallIcon(R.drawable.ic_message)         .setContentText(getString(R.string.replied))         .build()  // Issue the new notification. NotificationManagerCompat.from(this).apply {     notificationManager.notify(notificationId, repliedNotification) }
          

Java

// Build a new notification, which informs the user that the system // handled their interaction with the previous notification. Notification repliedNotification = new Notification.Builder(context, CHANNEL_ID)         .setSmallIcon(R.drawable.ic_message)         .setContentText(getString(R.string.replied))         .build();  // Issue the new notification. NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(notificationId, repliedNotification);
          

Saat menangani notifikasi baru ini, gunakan konteks yang diteruskan ke metode
onReceive()
penerima.

Beliau juga harus menambahkan penolakan ke bagian bawah notifikasi dengan menjuluki
setRemoteInputHistory(). Namun, sekiranya ingin menciptakan aplikasi wanti-wanti, Anda harus membuat notifikasi gaya wanti-wanti dan menambahkan wanti-wanti baru ke percakapan.

Cak bagi saran notifikasi mulai sejak aplikasi wanti-wanti selengkapnya, tatap praktik terbaik kerjakan aplikasi wanti-wanti.

Menambahkan harga diri progres

Notifikasi dapat mengikutsertakan penunjuk progres beranimasi yang mengutarakan status operasi nan sedang berjalan kepada pengguna.

Gambar 4.
Harga diri progres sepanjang dan setelah operasi.

Jikalau Dia dapat memperkirakan besaran propaganda yang diolah setiap saat, gunakan bentuk indikator “pasti” (seperti yang ditunjukkan lega rancangan 4) dengan menjuluki
setProgress(max, progress, false). Indeks purwa adalah berapa skor “keseluruhan” (begitu juga 100); yang kedua adalah berapa biji yang ketika ini selesai, dan yang bungsu menunjukkan ini adalah pamor progres pasti.

Selagi manuver Anda berlangsung, panggil terus
setProgress(max, progress, false)
dengan poin yang diperbarui buat
progress
dan keluarkan ulang notifikasi.

Kotlin

val builder = NotificationCompat.Builder(this, CHANNEL_ID).apply {     setContentTitle("Picture Download")     setContentText("Download in progress")     setSmallIcon(R.drawable.ic_notification)     setPriority(NotificationCompat.PRIORITY_LOW } val PROGRESS_MAX = 100 val PROGRESS_CURRENT = 0 NotificationManagerCompat.from(this).apply {     // Issue the initial notification with zero progress     builder.setProgress(PROGRESS_MAX, PROGRESS_CURRENT, false)     notify(notificationId, builder.build())      // Do the job here that tracks the progress.     // Usually, this should be in a     // worker thread     // To show progress, update PROGRESS_CURRENT and update the notification with:     // builder.setProgress(PROGRESS_MAX, PROGRESS_CURRENT, false);     // notificationManager.notify(notificationId, builder.build());      // When done, update the notification one more time to remove the progress kafe     builder.setContentText("Download complete")             .setProgress(0, 0, false)     notify(notificationId, builder.build()) }
          

Java

... NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID); builder.setContentTitle("Picture Download")         .setContentText("Download in progress")         .setSmallIcon(R.drawable.ic_notification)         .setPriority(NotificationCompat.PRIORITY_LOW);  // Issue the initial notification with zero progress int PROGRESS_MAX = 100; int PROGRESS_CURRENT = 0; builder.setProgress(PROGRESS_MAX, PROGRESS_CURRENT, false); notificationManager.notify(notificationId, builder.build());  // Do the job here that tracks the progress. // Usually, this should be in a // worker thread // To show progress, update PROGRESS_CURRENT and update the notification with: // builder.setProgress(PROGRESS_MAX, PROGRESS_CURRENT, false); // notificationManager.notify(notificationId, builder.build());  // When done, update the notification one more time to remove the progress warung kopi builder.setContentText("Download complete")         .setProgress(0,0,false); notificationManager.notify(notificationId, builder.build());
          

Di akhir operasi,
progress
harus seperti
max. Beliau dapat membiarkan harga diri progres ditampilkan saat gerakan selesai, maupun menghapusnya. Dalam kasus apa pun, ingatlah untuk memperbarui teks notifikasi kekuatan menyodorkan bahwa persuasi telah selesai. Cak bagi menghapus pamor progres, panggil
setProgress(0, 0, false).

Kerjakan menampilkan prestise progres yang tidak tentu (prestise yang tidak menunjukkan persentase radu), panggil
setProgress(0, 0, true). Kesudahannya yaitu sebuah penanda bersikap setimbang dengan status progres di atas, kecuali prestise progresnya berupa kartun berkelanjutan yang tidak menunjukkan penuntasan prosesnya. Animasi progres akan terus berjalan hingga Anda memanggil
setProgress(0, 0, false), kemudian perbarui notifikasi tersebut untuk menghapus penanda aktivitas.

Ingatlah bakal mengingkari teks notifikasi semoga menunjukkan bahwa aksi radu.

Menetapkan kategori untuk seluruh sistem

Android menggunakan bilang kategori seluruh sistem yang ditentukan sebelumnya bagi menentukan apakah akan mengganggu pengguna dengan notifikasi yang diberikan atau tak ketika pemakai telah mengaktifkan tendensi Jangan Ganggu.

Jika notifikasi Engkau timbrung dalam keseleo satu kategori notifikasi nan sebelumnya ditentukan dalam
NotificationCompat—seperti
CATEGORY_ALARM,
CATEGORY_REMINDER,
CATEGORY_EVENT, maupun
CATEGORY_CALL—Ia harus mendeklarasikannya serupa itu dengan meneruskan kategori yang sesuai ke
setCategory().

Kotlin

var builder = NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Hello World!")         .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setCategory(NotificationCompat.CATEGORY_MESSAGE)
          

Java

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Hello World!")         .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setCategory(NotificationCompat.CATEGORY_MESSAGE);
          

Informasi mengenai kategori notifikasi Anda ini digunakan oleh sistem untuk takhlik keputusan akan halnya mengedepankan notifikasi ketika perangkat n domestik kecondongan Jangan Usik.

Semata-mata, Kamu tidak diharuskan untuk menetapkan kategori seluruh sistem dan sebaiknya hanya berbuat ini seandainya notifikasi Ia cocok dengan pelecok satu kategori yang ditentukan dalam
NotificationCompat.

Menampilkan pesan penting

Petisi Anda mungkin perlu mencadangkan pesan penting dan yang sensitif periode, sama dengan panggilan telepon masuk atau alarm yang berdering. N domestik situasi ini, Anda bisa mengaitkan intent layar penuh dengan notifikasi Kamu. Saat notifikasi tersebut dipanggil, konsumen mengawasi riuk suatu dari yang berikut, mengelepai pada pamor kunci perangkat:

  • Jika perangkat pengguna terkunci, aktivitas jib penuh muncul, menghampari layar kunci.
  • Jika organ pengguna tidak dikunci, notifikasi muncul dalam bentuk diperluas nan mencengam opsi untuk menangani atau melengahkan notifikasi.

Cuplikan kode berikut menunjukkan cara mengaitkan notifikasi Anda dengan intent jib munjung:

Kotlin

val fullScreenIntent = Intent(this, ImportantActivity::class.java) val fullScreenPendingIntent = PendingIntent.getActivity(this, 0,     fullScreenIntent, PendingIntent.FLAG_UPDATE_CURRENT)  var builder = NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Hello World!")         .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setFullScreenIntent(fullScreenPendingIntent, true)
          

Java

Intent fullScreenIntent = new Intent(this, ImportantActivity.class); PendingIntent fullScreenPendingIntent = PendingIntent.getActivity(this, 0,         fullScreenIntent, PendingIntent.FLAG_UPDATE_CURRENT);  NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("My notification")         .setContentText("Hello World!")         .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setFullScreenIntent(fullScreenPendingIntent, true);
          

Menetapkan visibilitas layar muslihat

Bagi mengontrol tingkat detail nan terlihat privat notifikasi dari layar kunci, panggil
setVisibility()
dan tentukan salah suatu pecah kredit berikut:

  • VISIBILITY_PUBLIC
    menunjukkan konten teoretis notifikasi.
  • VISIBILITY_SECRET
    lain menampilkan bagian segala sekali lagi semenjak notifikasi ini di jib kunci.
  • VISIBILITY_PRIVATE
    menunjukkan informasi sumber akar, seperti ikon notifikasi dan kop konten, tetapi ondok konten eksemplar notifikasi.

Ketika
VISIBILITY_PRIVATE
ditetapkan, Anda pula dapat memberikan versi alternatif konten notifikasi yang ondok detail tertentu. Misalnya, aplikasi SMS dapat menyodorkan notifikasi yang menunjukkan
Sira memiliki 3 pesan teks mentah, tetapi menyembunyikan isi dan pengirim pesan. Untuk mengasihkan notifikasi alternatif ini, mula-mula-tama untuk notifikasi alternatif dengan
NotificationCompat.Builder
begitu juga biasa. Kemudian, lampirkan notifikasi alternatif tersebut ke notifikasi normal dengan
setPublicVersion().

Namun, pengguna selalu memiliki pengaturan penutup atas apakah notifikasi mereka tampak di layar trik dan lebih lagi boleh mengontrolnya beralaskan susukan notifikasi aplikasi Dia.

Mengupdate notifikasi

Bakal mengupdate notifikasi ini setelah Kamu mengeluarkannya, panggil
NotificationManagerCompat.notify()
lagi, terlampau teruskan notifikasi bersama ID yang seperti mana yang Sira gunakan sebelumnya. Kalau notifikasi sebelumnya sudah ditutup, sebuah notifikasi baru akan dibuat sebagai gantinya.

Anda memiliki sortiran bagi menegur
setOnlyAlertOnce()
sehingga notifikasi Anda menginterupsi pemakai (dengan suara, getaran, maupun petunjuk visual) hanya saat purwa kali notifikasi unjuk dan tidak lakukan pembaruan lain setelahnya.

Menghapus notifikasi

Notifikasi akan tetap terlihat hingga keseleo satu kejadian berikut terjadi:

  • Pengguna menutup notifikasi.
  • Pengguna mengklik notifikasi, dan Anda memanggil
    setAutoCancel()
    saat selesai membuat notifikasi tersebut.
  • Ia memanggil
    cancel()
    bagi ID notifikasi tertentu. Metode ini juga menyetip notifikasi yang sedang berjalan.
  • Beliau menyebut
    cancelAll(), yang menghapus semua notifikasi nan dikeluarkan sebelumnya.
  • Jika Dia menetapkan waktu tunggu ketika takhlik notifikasi menggunakan
    setTimeoutAfter(), sistem akan membatalkan notifikasi tersebut setelah durasi nan ditentukan berlalu. Jika diperlukan, Anda dapat membatalkan notifikasi sebelum durasi waktu tunggu nan ditetapkan berpulang.

Praktik terbaik untuk petisi wanti-wanti

Gunakan praktik terbaik yang terjadwal di sini sebagai wacana cepat tentang apa yang harus dipertimbangkan ketika membuat notifikasi buat aplikasi pesan dan chat Kamu.

Menggunakan MessagingStyle

Menginjak Android 7.0 (Jago merah level 24), Android menyenggangkan template tendensi notifikasi individual untuk konten aplikasi pesan. Dengan menggunakan class
NotificationCompat.MessagingStyle, Anda dapat memungkiri beberapa segel yang ditampilkan pada notifikasi, tercantum judul percakapan, pesan apendiks, dan tampilan isi notifikasinya.

Cuplikan kode berikut menunjukkan cara menyesuaikan kecondongan notifikasi menggunakan class
MessagingStyle.

Kotlin

var notification = NotificationCompat.Builder(this, CHANNEL_ID)         .setStyle(NotificationCompat.MessagingStyle("Derita")                 .setConversationTitle("Team lunch")                 .addMessage("Hi", timestamp1, null) // Pass in null for user.                 .addMessage("What's up?", timestamp2, "Coworker")                 .addMessage("Not much", timestamp3, null)                 .addMessage("How about lunch?", timestamp4, "Coworker"))         .build()
          

Java

Notification notification = new Notification.Builder(this, CHANNEL_ID)         .setStyle(new NotificationCompat.MessagingStyle("Me")                 .setConversationTitle("Team lunch")                 .addMessage("Hi", timestamp1, null) // Pass in null for user.                 .addMessage("What's up?", timestamp2, "Coworker")                 .addMessage("Not much", timestamp3, null)                 .addMessage("How about lunch?", timestamp4, "Coworker"))         .build();
          

Berangkat Android 8.0 (API level 26), notifikasi yang menggunakan class
NotificationCompat.MessagingStyle
akan menampilkan lebih banyak konten dalam rangka yang diciutkan. Anda juga dapat menggunakan metode
addHistoricMessage()
untuk memberikan konteks pada konversasi dengan menambahkan pesan historis bakal notifikasi tersapu pesan.

Detik menunggangi
NotificationCompat.MessagingStyle:

  • Panggil
    MessagingStyle.setConversationTitle()
    kerjakan menjadwalkan titel chat grup dengan lebih dari dua sosok. Judul percakapan nan baik dapat berwujud cap chat grup ataupun daftar peserta internal percakapan sekiranya chat grup tidak memiliki nama tertentu. Tanpa judul tadi, pesan mana tahu salah diartikan sebagai interlokusi pribadi dengan pengirim pesan terbaru dalam percakapan tersebut.
  • Gunakan metode
    MessagingStyle.setData()
    kerjakan mengikutsertakan pesan media seperti rangka. Saat ini, spesies MIME, gambar hipotetis/* didukung.

Menggunakan balasan langsung

Balasan Langsung memungkinkan pengguna kerjakan menandingi simultan satu wanti-wanti.

  • Sesudah pengguna mengimbangi dengan tindakan balasan inline, gunakan
    MessagingStyle.addMessage()
    untuk mengupdate notifikasi
    MessagingStyle
    dan jangan menarik kembali alias membatalkan notifikasi tersebut. Tidak membatalkan notifikasi memungkinkan pemakai untuk utus beberapa tentangan dari notifikasi.
  • Untuk membuat tindakan peperangan inline yang kompatibel dengan Wear OS, panggil
    Action.WearableExtender.setHintDisplayInlineAction(true).
  • Gunakan metode
    addHistoricMessage()
    bagi menyerahkan konteks ke konversasi perbangkangan sambil dengan menambahkan pesan historis ke notifikasi.

Mengaktifkan smart reply

  • Buat mengaktifkan Smart Reply, panggil
    setAllowGeneratedResponses(true)
    pada tindakan balas. Ini akan membuat respons Smart Reply tersedia untuk pengguna saat notifikasi dihubungkan ke perangkat Wear OS. Respons Smart Reply dihasilkan sepenuhnya oleh lengkap machine learning nan ada di arloji, memperalat konteks yang diberikan notifikasi
    NotificationCompat.MessagingStyle, dan tidak ada data yang diupload ke Internet buat menghasilkan respons.

Menambahkan metadata notifikasi

  • Tetapkan metadata notifikasi kerjakan memberi senggang sistem prinsip menangani notifikasi aplikasi Anda ketika perangkat privat mode Jangan Ganggu. Misalnya, gunakan metode
    addPerson()
    atau
    setCategory(Notification.CATEGORY_MESSAGE)
    untuk menukar mode Jangan Usik.

Cara Membuat Notifikasi Di Android Studio

Source: https://developer.android.com/training/notify-user/build-notification?hl=id

Check Also

Ikon Yang Dapat Digunakan Untuk Memasukkan Gambar Adalah

Ikon Yang Dapat Digunakan Untuk Memasukkan Gambar Adalah

Ikon Yang Dapat Digunakan Untuk Memasukkan Gambar Adalah Microsoft Word merupakan perangkat panjang hati pengolah …