Créer une notification extensible

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();
<ph type="x-smartling-placeholder">
</ph> Image montrant une notification réduite et une notification développée contenant une image bleue <ph type="x-smartling-placeholder">
</ph> Figure 1. Une notification utilisant NotificationCompat.BigPictureStyle

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();
<ph type="x-smartling-placeholder">
</ph> Image montrant une notification réduite et une notification développée à l&#39;aide de BigTextStyle <ph type="x-smartling-placeholder">
</ph> Figure 2. Une notification utilisant NotificationCompat.BigTextStyle

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">
</ph> Image montrant une notification de type boîte de réception développée <ph type="x-smartling-placeholder">
</ph> Figure 3. Une boîte de réception de style boîte de réception développée .

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();
<ph type="x-smartling-placeholder">
</ph> Image montrant une notification avec le style Messages <ph type="x-smartling-placeholder">
</ph> Figure 4 : Une notification utilisant NotificationCompat.MessagingStyle

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();
<ph type="x-smartling-placeholder">
</ph> Image montrant une notification avec un style multimédia <ph type="x-smartling-placeholder">
</ph> Figure 5. Une notification utilisant MediaStyleNotificationHelper.MediaStyle

Ressources supplémentaires

Consultez les références suivantes pour en savoir plus sur MediaStyle et des notifications à développer.