Podstawowe powiadomienie zawiera zwykle tytuł, wiersz tekstu oraz działania, które użytkownik może wykonać. Aby podać więcej informacji, możesz utworzyć rozwijanych powiadomieniach, stosując jeden z kilku szablonów powiadomień opisane w tym dokumencie.
Na początek utwórz powiadomienie ze wszystkimi podstawowymi treściami, tak jak to opisano w
Utwórz powiadomienie. Następnie:
zadzwoń
setStyle()
z obiektem stylu i podaj informacje odpowiadające poszczególnym szablonom,
co widać w poniższych przykładach.
Dodaj duży obraz
Aby dodać obraz do powiadomienia, przekaż wystąpienie
NotificationCompat.BigPictureStyle
do 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();
Aby obraz był wyświetlany jako miniatura tylko wtedy, gdy powiadomienie jest wyświetlane
jak na ilustracji poniżej, wywołaj
setLargeIcon()
i przekazać mu obraz. Następnie zadzwoń
BigPictureStyle.bigLargeIcon()
i przekaż go null
, aby duża ikona znikała, gdy powiadomienie
rozwinięto:
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();
Dodaj duży blok tekstu
Zastosuj
NotificationCompat.BigTextStyle
aby wyświetlić tekst w rozwiniętym obszarze treści powiadomienia:
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();
Tworzenie powiadomień w stylu skrzynki odbiorczej
Zastosuj
NotificationCompat.InboxStyle
w powiadomieniu, jeśli chcesz dodać kilka krótkich wierszy podsumowania,
fragmenty wiadomości przychodzących. Umożliwia to dodanie wielu fragmentów tekstu zawartości
które są obcięte do 1 wiersza, a nie do jednej ciągłej linii tekstu
źródło: NotificationCompat.BigTextStyle
.
Aby dodać nową linię, zadzwoń pod numer
addLine()
do 6 razy, jak widać w przykładzie poniżej. Jeśli dodasz więcej niż 6
tylko pierwszych 6.
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();
Wynik wygląda tak:
.Pokazywanie rozmowy w powiadomieniu
Zastosuj
NotificationCompat.MessagingStyle
wyświetlanie wiadomości sekwencyjnych między dowolną liczbą osób. Jest to idealne rozwiązanie, gdy:
aplikacje do obsługi wiadomości, ponieważ zapewniają spójny układ każdej wiadomości
z nazwą nadawcy i tekstem wiadomości, a każdą wiadomość można
wiele wierszy.
Aby dodać nową wiadomość, zadzwoń pod numer
addMessage()
przekazując tekst wiadomości, godzinę otrzymania oraz nazwę nadawcy. Możesz też
przekazać tę informację jako
NotificationCompat.MessagingStyle.Message
Jak w tym przykładzie:
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();
Jeśli używasz funkcji NotificationCompat.MessagingStyle
, wszystkie wartości podane dla argumentu
setContentTitle()
.
oraz
setContentText()
są ignorowane.
Możesz zadzwonić do nas,
setConversationTitle()
aby dodać tytuł wyświetlany nad rozmową. Może to być
utworzona przez użytkownika nazwa grupy lub, jeśli nie ma ona konkretnej nazwy, lista
z uczestnikami rozmowy. Nie ustawiaj tytułu rozmowy dla
czatów 1:1, ponieważ system wykorzystuje to pole jako wskazówkę
że rozmowa jest grupą.
Ten styl dotyczy tylko urządzeń z Androidem 7.0 (poziom interfejsu API 24) i nowszym.
Korzystanie z biblioteki zgodności
(NotificationCompat
),
jak wykazaliśmy wcześniej, powiadomienia z MessagingStyle
są zastępcze
automatycznie na obsługiwany rozwinięty styl powiadomień.
Tworząc takie powiadomienie dla rozmowy na czacie, dodaj działania związane z odpowiedzią.
Tworzenie powiadomienia za pomocą opcji sterowania multimediami
Zastosuj
MediaStyleNotificationHelper.MediaStyle
w celu wyświetlania elementów sterujących odtwarzaniem multimediów i informacji o śledzeniu.
Określ powiązane
MediaSession
w
za pomocą konstruktora. Dzięki temu Android może wyświetlać prawidłowe informacje o Twoim urządzeniu
multimediów.
Zadzwoń do nas
addAction()
do pięciu razy. Zadzwoń pod numer setLargeIcon()
do
ustawić okładkę albumu.
W przeciwieństwie do innych stylów powiadomień MediaStyle
pozwala też zmieniać
widoku treści zwiniętym, określając trzy przyciski poleceń, które również pojawiają się
w widoku zwiniętym. Aby to zrobić, przekaż indeksy przycisków polecenia na
setShowActionsInCompactView()
Z przykładu poniżej dowiesz się, jak utworzyć powiadomienie za pomocą opcji sterowania multimediami:
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();
Dodatkowe materiały
Zapoznaj się z tymi materiałami, aby dowiedzieć się więcej na temat MediaStyle
oraz
powiadomienia rozwijane.
- Używanie powiadomień MediaStyle z usługą na pierwszym planie
- Przykładowa aplikacja z informacjami o użytkownikach