Une notification de base comprend généralement un titre, une ligne de texte et les actions que que l'utilisateur peut exécuter en réponse. Pour fournir davantage d'informations, vous pouvez créer les notifications à développer en appliquant l'un des modèles de notification proposés, décrites dans ce document.
Pour commencer, créez une notification avec tout le contenu de base décrit dans
Créez une notification. Ensuite,
appel
setStyle()
avec un objet de style et de fournir des informations correspondant à chaque modèle, comme
comme indiqué dans les exemples suivants.
Ajoutez une grande image
Pour ajouter une image à votre notification, transmettez une instance de
NotificationCompat.BigPictureStyle
à 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();
Pour que l'image n'apparaisse sous forme de miniature que lorsque la notification est
réduit, comme illustré dans la figure suivante,
setLargeIcon()
et lui transmettre l'image. Appelez ensuite
BigPictureStyle.bigLargeIcon()
et transmettez-lui null
pour que la grande icône disparaisse lorsque la notification est
développé:
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();
Ajouter un grand bloc de texte
Postuler
NotificationCompat.BigTextStyle
pour afficher le texte dans la zone de contenu développée de la notification:
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();
Créer une notification de type boîte de réception
Postuler
NotificationCompat.InboxStyle
à une notification si vous souhaitez ajouter plusieurs lignes de résumé courtes, telles que
extraits des e-mails entrants. Cela vous permet d'ajouter
plusieurs éléments de texte
qui sont tronquées à une seule ligne, au lieu d'une seule ligne de texte continue
fourni par NotificationCompat.BigTextStyle
.
Pour ajouter une ligne, appelez
addLine()
jusqu'à six fois, comme illustré dans l'exemple suivant. Si vous ajoutez plus de six
seules les six premières sont 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();
Le résultat se présente comme suit:
<ph type="x-smartling-placeholder">Afficher une conversation dans une notification
Postuler
NotificationCompat.MessagingStyle
pour afficher des messages séquentiels entre n'importe quel nombre de personnes. C'est la solution idéale
de messagerie, car elles offrent une mise en page cohérente pour chaque message
le nom de l'expéditeur et le texte du message séparément. Chaque message peut être
sur plusieurs lignes.
Pour ajouter un message, appelez
addMessage()
,
en transmettant le texte du message,
l'heure de réception et le nom de l'expéditeur. Vous pouvez également
transmettre ces informations
NotificationCompat.MessagingStyle.Message
, comme illustré dans l'exemple suivant:
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();
Lorsque vous utilisez NotificationCompat.MessagingStyle
, les valeurs fournies à
setContentTitle()
et
setContentText()
sont ignorés.
Vous pouvez appeler
setConversationTitle()
pour ajouter un titre qui apparaît au-dessus de la conversation. Il peut s'agir
nom créé par l'utilisateur ou, s'il n'a pas de nom spécifique, une liste de
les participants à la conversation. Ne pas définir de titre de conversation pour
les chats en tête-à-tête, car le système utilise l'existence de ce champ comme indice ;
que la conversation
est un groupe.
Ce style ne s'applique qu'aux appareils équipés d'Android 7.0 (niveau d'API 24) ou version ultérieure.
Lorsque vous utilisez la bibliothèque de compatibilité
(NotificationCompat
),
comme indiqué précédemment, les notifications avec MessagingStyle
automatiquement dans un style
de notification développé compatible.
Lorsque vous créez une notification de ce type pour une conversation de chat, ajoutez un lien direct l'action "Répondre".
Créer une notification avec les commandes multimédias
Postuler
MediaStyleNotificationHelper.MediaStyle
pour afficher les commandes de lecture
multimédia et les informations sur les titres.
Spécifiez vos comptes
MediaSession
dans
d'un constructeur. Cela permet à Android d'afficher les bonnes informations
médias.
Appeler
addAction()
jusqu'à cinq fois pour afficher jusqu'à cinq boutons d'icône. Appeler setLargeIcon()
au
définir la pochette de l'album.
Contrairement aux autres styles de notification, MediaStyle
vous permet également de modifier le
de contenu réduit en spécifiant trois boutons d'action qui s'affichent également
dans la vue réduite. Pour ce faire, fournissez les index du bouton d'action au
setShowActionsInCompactView()
L'exemple suivant montre comment créer une notification avec des commandes multimédias:
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();
Ressources supplémentaires
Consultez les références suivantes pour en savoir plus sur MediaStyle
et
des notifications à développer.