Genişletilebilir bildirim oluşturma

Temel bir bildirim genellikle bir başlık, bir metin satırı ve gerçekleşebilecek başka bir değişikliktir. Daha fazla bilgi sağlamak için büyük boyutlu, birden fazla bildirim şablonundan birini uygulayarak genişletilebilir bildirimleri bu belgede açıklanmıştı.

Başlamak için şurada açıklandığı gibi tüm temel içerikle birlikte bir bildirim oluşturun: Bildirim oluşturun. Ardından, telefon etmek setStyle() her şablona karşılık gelen bir stil nesnesi ve tedarik bilgileri ile, aşağıda gösterilmiştir.

Büyük resim ekleyin

Bildiriminize resim eklemek için şunun bir örneğini iletin: NotificationCompat.BigPictureStyle Hedef: 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();

Resmin yalnızca bildirim açıkken küçük resim olarak görünmesini sağlamak için aşağıda gösterildiği gibi daraltılmış kod, setLargeIcon() ve resmi ileteceğim. Ardından şu numarayı arayın: BigPictureStyle.bigLargeIcon() ve bildirim gönderildiğinde büyük simgenin kaybolması için null iletir genişletildi:

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();
Daraltılmış bir bildirimi ve mavi resim içeren genişletilmiş bir bildirimi gösteren resim
Şekil 1. Şunu kullanan bir bildirim: NotificationCompat.BigPictureStyle

Büyük bir metin bloğu ekleme

Uygula NotificationCompat.BigTextStyle metni, bildirimin genişletilmiş içerik alanında görüntülemek için:

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();
Daraltılmış bildirimi ve BigTextStyle kullanan genişletilmiş bildirimi gösteren resim
Şekil 2. Şunu kullanan bir bildirim: NotificationCompat.BigTextStyle
ziyaret edin.
'nı inceleyin.

Gelen kutusu tarzında bildirim oluşturma

Uygula NotificationCompat.InboxStyle Birden fazla kısa özet satırı eklemek isterseniz bir bildirime snippet'leri ekleyin. Bu, birden fazla içerik metni parçası eklemenize olanak tanır Kesintisiz tek bir metin satırı yerine her biri tek satıra kısaltılmış sağlayan: NotificationCompat.BigTextStyle.

Yeni bir hat eklemek için şu numarayı arayın: addLine() aşağıda gösterildiği gibi en fazla altı kat olabilir. Altıdan fazla eklerseniz yalnızca ilk altı satır görünür.

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();

Sonuç aşağıdaki şekilde görünür:

Gelen kutusu stilinde genişletilmiş bir bildirim gösteren resim
Şekil 3. Genişletilmiş gelen kutusu stili bildirimi görürsünüz.
ziyaret edin.
'nı inceleyin.

Bir görüşmeyi bildirimde gösterme

Uygula NotificationCompat.MessagingStyle kullanabilirsiniz. Bu yöntem, Böylece her mesaj için ayrı ayrı tutarlı bir düzen sunduğundan ile ayrı ayrı işlem yapmanız gerekir ve her ileti özel birkaç satır uzunluğunda olmalıdır.

Yeni bir mesaj eklemek için şu numarayı arayın: addMessage() ileti metnini, alınan zamanı ve gönderenin adını iletmelidir. Ayrıca transkriptinizi bu bilgileri NotificationCompat.MessagingStyle.Message nesnesini tanımlayın:

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();
Mesajlaşma stilinde bir bildirim gösteren resim
Şekil 4. Şunu kullanan bir bildirim: NotificationCompat.MessagingStyle

NotificationCompat.MessagingStyle kullanılırken setContentTitle() ve setContentText() yok sayılır.

Şu numarayı arayabilirsiniz: setConversationTitle() sohbetin üzerinde görünen bir başlık ekleyin. Bu, grubun kullanıcı tarafından oluşturulan adını veya belirli bir adı yoksa daha fazla bilgi edindiniz. Şu etkinlik için görüşme başlığı belirleme: bire bir sohbetler, çünkü sistem bir ipucu olarak bu alanın varlığını kullanır grup olduğunu düşünelim.

Bu stil yalnızca Android 7.0 (API düzeyi 24) ve sonraki sürümleri çalıştıran cihazlarda geçerlidir. Uyumluluk kitaplığını kullanırken (NotificationCompat), Daha önce gösterildiği gibi, MessagingStyle içeren bildirimler yedeklenir desteklenen bir genişletilmiş bildirim stiline otomatik olarak dönüşmesini sağlar.

Bir sohbet görüşmesi için buna benzer bir bildirim oluştururken doğrudan bir yanıt işlemi olarak adlandırılır.

Medya denetimleriyle bildirim oluşturma

Uygula MediaStyleNotificationHelper.MediaStyle medya oynatma kontrollerini ve parça bilgilerini görüntüleyin.

İlişkili olduklarınızı belirtin MediaSession kurucusu. Bu, Android'in hesabınızla ilgili doğru bilgileri göstermesini sağlar. medya

Telefonla arama addAction() beş taneye kadar simge düğmesi görüntüleyebilir. setLargeIcon() numaralı telefonu arayın: ve albüm kapağını ayarlayın.

Diğer bildirim stillerinden farklı olarak MediaStyle, daraltılmış boyutlu içerik görünümü gibi görünen üç işlem düğmesi bunu daraltabilirsiniz. Bunu yapmak için işlem düğmesi dizinlerini setShowActionsInCompactView().

Aşağıdaki örnekte, medya denetimleriyle nasıl bildirim oluşturulacağı gösterilmektedir:

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();
Medya stiliyle bildirimi gösteren resim
Şekil 5. Şunu kullanan bir bildirim: MediaStyleNotificationHelper.MediaStyle
ziyaret edin.
'nı inceleyin.

Ek kaynaklar

MediaStyle ve genişletilebilir bildirimlerden yararlanabilirsiniz.