Buat notifikasi yang dapat diperluas

Notifikasi dasar biasanya mencakup judul, satu baris teks, dan tindakan yang dilakukan pengguna sebagai respons. Untuk memberikan informasi lebih lanjut, Anda dapat membuat notifikasi yang dapat diperluas dengan menerapkan salah satu dari beberapa template notifikasi yang dijelaskan dalam dokumen ini.

Untuk memulai, buat notifikasi dengan semua konten dasar seperti yang dijelaskan dalam Buat notifikasi. Lalu: panggilan telepon setStyle() dengan objek gaya dan berikan informasi yang sesuai dengan setiap {i>template<i}, seperti yang ditunjukkan dalam contoh berikut.

Menambahkan gambar berukuran besar

Untuk menambahkan gambar di notifikasi Anda, teruskan instance NotificationCompat.BigPictureStyle ke setStyle().

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setStyle(NotificationCompat.BigPictureStyle()
                .bigPicture(myBitmap))
        .build()

Java

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setStyle(new NotificationCompat.BigPictureStyle()
               .bigPicture(myBitmap))
        .build();

Untuk membuat gambar muncul sebagai thumbnail hanya saat notifikasi muncul diciutkan, seperti yang ditampilkan dalam gambar berikut, panggil setLargeIcon() dan meneruskan gambar ke sini. Kemudian, panggil BigPictureStyle.bigLargeIcon() dan teruskan null sehingga ikon besar hilang saat notifikasi diperluas:

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setLargeIcon(myBitmap)
        .setStyle(NotificationCompat.BigPictureStyle()
                .bigPicture(myBitmap)
                .bigLargeIcon(null))
        .build()

Java

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setLargeIcon(myBitmap)
        .setStyle(new NotificationCompat.BigPictureStyle()
                .bigPicture(myBitmap)
                .bigLargeIcon(null))
        .build();
Gambar yang menampilkan notifikasi yang diciutkan dan notifikasi yang diperluas yang berisi gambar biru
Gambar 1. Notifikasi menggunakan NotificationCompat.BigPictureStyle.

Menambahkan blok teks besar

Lamar Pekerjaan Ini NotificationCompat.BigTextStyle untuk menampilkan teks di area konten yang diperluas pada notifikasi:

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setStyle(NotificationCompat.BigTextStyle()
                .bigText(emailObject.getSubjectAndSnippet()))
        .build()

Java

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setStyle(new NotificationCompat.BigTextStyle()
                .bigText(emailObject.getSubjectAndSnippet()))
        .build();
Gambar yang menampilkan notifikasi yang diciutkan dan notifikasi yang diperluas menggunakan BigTextStyle
Gambar 2. Notifikasi menggunakan NotificationCompat.BigTextStyle.

Membuat notifikasi gaya kotak masuk

Lamar Pekerjaan Ini NotificationCompat.InboxStyle ke notifikasi jika Anda ingin menambahkan beberapa baris ringkasan pendek, seperti cuplikan dari email yang masuk. Hal ini memungkinkan Anda menambahkan beberapa bagian teks konten yang masing-masing terpotong menjadi satu baris, bukan satu baris teks berkelanjutan disediakan oleh NotificationCompat.BigTextStyle.

Untuk menambahkan baris baru, panggil addLine() hingga enam kali, seperti yang ditunjukkan dalam contoh berikut. Jika Anda menambahkan lebih dari enam hanya enam garis pertama yang terlihat.

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.baseline_email_24)
        .setContentTitle("5 New mails from Frank")
        .setContentText("Check them out")
        .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo))
        .setStyle(
                NotificationCompat.InboxStyle()
                .addLine("Re: Planning")
                .addLine("Delivery on its way")
                .addLine("Follow-up")
        )
        .build()

Java

Notification notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.baseline_email_24)
        .setContentTitle("5 New mails from Frank")
        .setContentText("Check them out")
        .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo))
        .setStyle(
                NotificationCompat.InboxStyle()
                .addLine("Re: Planning")
                .addLine("Delivery on its way")
                .addLine("Follow-up")
        )
        .build();

Hasilnya akan terlihat seperti gambar berikut:

Gambar yang menampilkan notifikasi bergaya kotak masuk yang diperluas
Gambar 3. Gaya kotak masuk yang diperluas notifikasi.

Menampilkan percakapan dalam notifikasi

Lamar Pekerjaan Ini NotificationCompat.MessagingStyle untuk menampilkan pesan berurutan di antara sejumlah orang. Ini cocok untuk aplikasi pesan, karena menyediakan tata letak yang konsisten untuk setiap pesan dengan menangani nama pengirim dan teks pesan secara terpisah, dan setiap pesan dapat beberapa baris.

Untuk menambahkan pesan baru, telepon addMessage(), meneruskan teks pesan, waktu penerimaan, dan nama pengirim. Anda juga dapat meneruskan informasi ini sebagai NotificationCompat.MessagingStyle.Message seperti yang ditunjukkan dalam contoh berikut:

Kotlin

val message1 = NotificationCompat.MessagingStyle.Message(
        messages[0].getText(),
        messages[0].getTime(),
        messages[0].getSender())
val message2 = NotificationCompat.MessagingStyle.Message(
        messages[1].getText(),
        messages[1].getTime(),
        messages[1].getSender())
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_message)
        .setStyle(
                NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name))
                .addMessage(message1)
                .addMessage(message2))
        .build()

Java

NotificationCompat.MessagingStyle.Message message1 =
        new NotificationCompat.MessagingStyle.Message(messages[0].getText(),
                                                      messages[0].getTime(),
                                                      messages[0].getSender());
NotificationCompat.MessagingStyle.Message message2 =
        new NotificationCompat.MessagingStyle.Message(messages[1].getText(),
                                                      messages[1].getTime(),
                                                      messages[1].getSender());

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_message)
        .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name))
                .addMessage(message1)
                .addMessage(message2))
        .build();
Gambar yang menampilkan notifikasi dalam gaya pesan
Gambar 4. Notifikasi menggunakan NotificationCompat.MessagingStyle.

Saat menggunakan NotificationCompat.MessagingStyle, nilai apa pun yang diberikan ke setContentTitle() dan setContentText() akan diabaikan.

Anda dapat memanggil setConversationTitle() untuk menambahkan judul yang muncul di atas percakapan. Mungkin ini adalah nama grup yang dibuat pengguna atau, jika tidak memiliki nama tertentu, daftar peserta dalam percakapan. Jangan tetapkan judul percakapan untuk chat pribadi, karena sistem menggunakan keberadaan kolom ini sebagai petunjuk bahwa percakapan merupakan sebuah grup.

Gaya ini hanya berlaku pada perangkat yang menjalankan Android 7.0 (level API 24) dan yang lebih baru. Saat menggunakan library kompatibilitas (NotificationCompat), seperti yang ditunjukkan sebelumnya, notifikasi dengan MessagingStyle akan beralih secara otomatis ke gaya notifikasi yang diperluas yang didukung.

Saat membuat notifikasi seperti ini untuk percakapan chat, tambahkan tindakan balasan.

Membuat notifikasi dengan kontrol media

Lamar Pekerjaan Ini MediaStyleNotificationHelper.MediaStyle untuk menampilkan kontrol pemutaran media dan melacak informasi.

Tentukan properti MediaSession di . Hal ini memungkinkan Android menampilkan informasi yang tepat tentang lainnya.

Telepon addAction() hingga lima kali untuk menampilkan hingga lima tombol ikon. Telepon setLargeIcon() ke mengatur poster album.

Tidak seperti gaya notifikasi lainnya, MediaStyle juga memungkinkan Anda memodifikasi tampilan konten ukuran diciutkan dengan menentukan tiga tombol tindakan yang juga muncul dalam tampilan yang diciutkan. Untuk melakukannya, sediakan indeks tombol tindakan untuk setShowActionsInCompactView()

Contoh berikut menunjukkan cara membuat notifikasi dengan kontrol media:

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        // Show controls on lock screen even when user hides sensitive content.
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
        .setSmallIcon(R.drawable.ic_stat_player)
        // Add media control buttons that invoke intents in your media service
        .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
        .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1
        .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2
        // Apply the media style template.
        .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession)
                .setShowActionsInCompactView(1 /* #1: pause button \*/))
        .setContentTitle("Wonderful music")
        .setContentText("My Awesome Band")
        .setLargeIcon(albumArtBitmap)
        .build()

Java

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        // Show controls on lock screen even when user hides sensitive content.
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
        .setSmallIcon(R.drawable.ic_stat_player)
        // Add media control buttons that invoke intents in your media service
        .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
        .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
        .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
        // Apply the media style template.
        .setStyle(new MediaStyleNotificationHelper.MediaStyle(mediaSession)
                .setShowActionsInCompactView(1 /* #1: pause button */))
        .setContentTitle("Wonderful music")
        .setContentText("My Awesome Band")
        .setLargeIcon(albumArtBitmap)
        .build();
Gambar yang menampilkan notifikasi dengan gaya media
Gambar 5. Notifikasi menggunakan MediaStyleNotificationHelper.MediaStyle.

Referensi lainnya

Lihat referensi berikut untuk mengetahui informasi selengkapnya tentang MediaStyle dan notifikasi yang dapat diperluas.