Una notificación básica generalmente incluye un título, una línea de texto y acciones que usuario puede realizar en respuesta. Para proporcionar más información, puedes crear notificaciones expandibles aplicando una de varias plantillas de notificación, como que se describe en este documento.
Para comenzar, crea una notificación con todo el contenido básico, como se describe en
Crea una notificación. Luego,
llamar
setStyle()
con un objeto de estilo y suministrar la información correspondiente a cada plantilla, como
se muestran en los siguientes ejemplos.
Cómo agregar una imagen grande
Para agregar una imagen en tu notificación, pasa una instancia de
NotificationCompat.BigPictureStyle
a 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();
Para que la imagen aparezca como una miniatura solo mientras se realiza la notificación
contraída, como se muestra en la siguiente figura, llama
setLargeIcon()
y pasarle la imagen. Luego, llama
BigPictureStyle.bigLargeIcon()
y pásale null
para que el ícono grande desaparezca cuando se active la notificación.
expandido:
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();
Cómo agregar un bloque de texto grande
Postularse
NotificationCompat.BigTextStyle
para mostrar texto en el área de contenido expandido de la notificación:
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();
Cómo crear una notificación con estilo de bandeja de entrada
Postularse
NotificationCompat.InboxStyle
a una notificación si deseas agregar varias líneas de resumen breve, como
fragmentos de correos electrónicos entrantes. Esto te permite agregar varios fragmentos de texto de contenido
que se truncan a una línea en lugar de una línea de texto continua
proporcionado por NotificationCompat.BigTextStyle
.
Para agregar una línea nueva, llama a
addLine()
hasta seis veces, como se muestra en el siguiente ejemplo. Si agregas más de seis
solo las seis primeras son visibles.
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();
El resultado se ve como la siguiente figura:
Cómo mostrar una conversación en una notificación
Postularse
NotificationCompat.MessagingStyle
para mostrar mensajes secuenciales entre cualquier cantidad de personas. Esto es ideal para
de mensajería, ya que proporciona un diseño coherente para cada mensaje
manejar el nombre del remitente y el texto del mensaje por separado, y cada mensaje se puede
varias líneas de largo.
Para agregar un mensaje nuevo, llama
addMessage()
:
pasando el texto del mensaje, la hora de recepción y el nombre del remitente. También puedes
pasa esta información como un
NotificationCompat.MessagingStyle.Message
como se muestra en el siguiente ejemplo:
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();
Cuando se usa NotificationCompat.MessagingStyle
, cualquier valor dado a
setContentTitle()
y
setContentText()
se ignoran.
Puedes llamar
setConversationTitle()
para agregar un título que aparezca arriba de la conversación. Esta podría ser la
nombre del grupo creado por el usuario o, si no tiene un nombre específico, una lista de
los participantes de la conversación. No establecer el título de una conversación para
chats individuales, ya que el sistema usa la existencia de este campo como pista
que la conversación es un grupo.
Este estilo se aplica solo en dispositivos con Android 7.0 (nivel de API 24) y versiones posteriores.
Cuando usas la biblioteca de compatibilidad
(NotificationCompat
),
como se demostró anteriormente, las notificaciones con MessagingStyle
revierten
automáticamente a un estilo de notificación expandida compatible.
Cuando crees una notificación como esta para una conversación de chat, agrega un mensaje directo acción de respuesta.
Cómo crear una notificación con controles de contenido multimedia
Postularse
MediaStyleNotificationHelper.MediaStyle
para mostrar los controles de reproducción de contenido multimedia y la información de la pista.
Especifica tus
MediaSession
en
. Esto permite que Android muestre la información correcta sobre tu
medios de comunicación.
Llamada
addAction()
hasta cinco veces para mostrar hasta cinco botones de íconos. Llamar a setLargeIcon()
a
establece la portada del álbum.
A diferencia de otros estilos de notificación, MediaStyle
también te permite modificar el
vista de contenido en tamaño contraído especificando tres botones de acción que también aparecen
en la vista contraída. Para ello, proporciona los índices de botones de acción a
setShowActionsInCompactView()
En el siguiente ejemplo, se muestra cómo crear una notificación con controles multimedia:
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();
Recursos adicionales
Consulta las siguientes referencias para obtener más información sobre MediaStyle
y
notificaciones expandibles.