Temel bir bildirim genellikle başlık, bir satırlık metin ve kullanıcının yanıt olarak gerçekleştirebileceği işlemler içerir. Daha fazla bilgi sağlamak için bu belgede açıklandığı gibi çeşitli bildirim şablonlarından birini uygulayarak büyük ve genişletilebilir bildirimler oluşturabilirsiniz.
Başlamak için Bildirim oluşturma bölümünde açıklandığı gibi tüm temel içeriklerle bir bildirim oluşturun. Ardından, bir stil nesnesiyle setStyle() işlevini çağırın ve aşağıdaki örneklerde gösterildiği gibi her şablona karşılık gelen bilgileri sağlayın.
Büyük bir resim ekleyin
Bildiriminize resim eklemek için setStyle() öğesine NotificationCompat.BigPictureStyle örneği iletin.
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.new_post)
.setContentTitle(imageTitle)
.setContentText(imageDescription)
.setStyle(NotificationCompat.BigPictureStyle()
.bigPicture(myBitmap))
.build()
Aşağıdaki şekilde gösterildiği gibi, resmin yalnızca bildirim daraltılmış durumdayken küçük resim olarak görünmesini sağlamak için setLargeIcon() işlevini çağırın ve resmi bu işleve iletin. Ardından, BigPictureStyle.bigLargeIcon() yöntemini çağırın ve null öğesini iletin. Böylece, bildirim genişletildiğinde büyük simge kaybolur:
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()
NotificationCompat.BigPictureStyle kullanılarak
bildirim gönderilir.
Büyük bir metin bloğu ekleme
Bildirimin genişletilmiş içerik alanında metin görüntülemek için NotificationCompat.BigTextStyle uygulayın:
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()
NotificationCompat.BigTextStyle kullanılarak
bildirim gönderilir.
Gelen kutusu tarzında bildirim oluşturma
Gelen e-postalardan alınan snippet'ler gibi birden fazla kısa özet satırı eklemek istiyorsanız bildirime NotificationCompat.InboxStyle uygulayın. Bu sayede, NotificationCompat.BigTextStyle tarafından sağlanan tek bir aralıksız metin satırı yerine, her biri tek satırda kısaltılmış birden fazla içerik metni ekleyebilirsiniz.
Yeni bir satır eklemek için aşağıdaki örnekte gösterildiği gibi addLine() işlevini en fazla altı kez çağırın. Altı satırdan fazla ekleme yaparsanız yalnızca ilk altı satır görünür.
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()
Sonuç aşağıdaki şekilde görünür:
Bildirimde ileti dizisini gösterme
Herhangi bir sayıda kullanıcı arasında sıralı mesajlar göstermek için NotificationCompat.MessagingStyle uygulayın. Bu, gönderen adını ve mesaj metnini ayrı ayrı işleyerek her mesaj için tutarlı bir düzen sağladığından ve her mesaj birden fazla satır uzunluğunda olabildiğinden mesajlaşma uygulamaları için idealdir.
Yeni bir mesaj eklemek için addMessage() işlevini çağırarak mesaj metnini, alınma zamanını ve gönderenin adını iletin. Bu bilgileri aşağıdaki örnekte gösterildiği gibi bir NotificationCompat.MessagingStyle.Message nesnesi olarak da iletebilirsiniz:
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()
NotificationCompat.MessagingStyle kullanılarak
bildirim gönderilir.
NotificationCompat.MessagingStyle kullanılırken setContentTitle() ve setContentText() için verilen tüm değerler yoksayılır.
İleti dizisinin üzerinde görünen bir başlık eklemek için setConversationTitle()'ı arayabilirsiniz. Bu, grubun kullanıcı tarafından oluşturulan adı veya belirli bir adı yoksa görüşmedeki katılımcıların listesi olabilir.
Sistem, bu alanın varlığını görüşmenin grup görüşmesi olduğuna dair bir ipucu olarak kullandığı için bire bir sohbetlerde görüşme başlığı ayarlamayın.
Bu stil yalnızca Android 7.0 (API düzeyi 24) ve sonraki sürümleri çalıştıran cihazlarda geçerlidir.
Uyumluluk kitaplığı (NotificationCompat) kullanılırken daha önce gösterildiği gibi MessagingStyle içeren bildirimler otomatik olarak desteklenen genişletilmiş bildirim stiline geri döner.
Sohbet görüşmesi için bu tür bir bildirim oluştururken doğrudan yanıt verme işlemi ekleyin.
Medya kontrolleri içeren bir bildirim oluşturma
Medya oynatma kontrollerini ve parça bilgilerini göstermek için MediaStyleNotificationHelper.MediaStyle simgesini kullanın.
Oluşturucuda ilişkili MediaSession öğenizi belirtin. Bu sayede Android, medyanızla ilgili doğru bilgileri gösterebilir.
En fazla beş simge düğmesi görüntülemek için addAction()'ı en fazla beş kez arayın.
Albüm kapağını ayarlamak için setLargeIcon() numaralı telefonu arayın.
Diğer bildirim stillerinden farklı olarak MediaStyle, daraltılmış görünümde de gösterilen üç işlem düğmesi belirterek daraltılmış boyutlu içerik görünümünü değiştirmenize de olanak tanır. Bunu yapmak için işlem düğmesi dizinlerini setShowActionsInCompactView() öğesine sağlayın.
Aşağıdaki örnekte, medya kontrolleri içeren bir bildirimin nasıl oluşturulacağı gösterilmektedir:
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()
MediaStyleNotificationHelper.MediaStyle kullanılarak
bildirim gönderilir.
Ek kaynaklar
MediaStyle ve genişletilebilir bildirimler hakkında daha fazla bilgi için aşağıdaki referanslara bakın.