Temel bildirimler genellikle bir başlık, metin satırı ve kullanıcının yanıt olarak gerçekleştirebileceği işlemleri içerir. Daha fazla bilgi sağlamak için bu dokümanda açıklandığı gibi çeşitli bildirim şablonlarından birini uygulayarak büyük, genişletilebilir bildirimler oluşturabilirsiniz.
Başlamak için, Bildirim oluşturma konusunda açıklandığı gibi tüm temel içeriğe sahip bir bildirim oluşturun. Ardından, bir stil nesnesiyle setStyle()
çağrısı yapın ve aşağıdaki örneklerde gösterildiği gibi her bir şablona karşılık gelen bilgileri sağlayın.
Büyük resim ekleyin
Bildiriminize resim eklemek için setStyle()
adlı alıcıya bir NotificationCompat.BigPictureStyle
örneği iletin.
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 daraltılmış durumdayken (aşağıdaki şekilde gösterildiği gibi) küçük resim olarak görünmesi için setLargeIcon()
yöntemini çağırın ve resmi iletin. Ardından, BigPictureStyle.bigLargeIcon()
numaralı telefonu arayıp null
ileterek bildirim genişletildiğinde büyük simgenin kaybolmasını sağlayın:
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();
Büyük bir metin bloğu ekleyin
Metnin, bildirimin genişletilmiş içerik alanında görüntülenmesi için NotificationCompat.BigTextStyle
uygulayı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();
Gelen kutusu tarzı bildirim oluşturma
Birden fazla kısa özet satırı (ör. gelen e-postalardan snippet'ler) eklemek istiyorsanız bildirime NotificationCompat.InboxStyle
uygulayın. Bu, NotificationCompat.BigTextStyle
tarafından sağlanan bir kesintisiz metin satırı yerine her biri bir satıra kısaltılan birden fazla içerik metni parçası eklemenize olanak tanır.
Yeni bir satır eklemek için aşağıdaki örnekte gösterildiği gibi addLine()
numarasını en fazla altı kez çağırın. Altıdan fazla satır eklerseniz yalnızca
ilk altı tanesi 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:
Bildirimde bir görüşmeyi gösterme
İstediğiniz sayıda kişi arasında sıralı mesajlar görüntülemek için NotificationCompat.MessagingStyle
uygula. Bu, gönderen adı ve mesaj metnini ayrı olarak işleyerek her mesaj için tutarlı bir düzen sağladığından ve her mesaj birden fazla satır uzunluğunda olabileceğinden mesajlaşma uygulamaları için idealdir.
Yeni bir mesaj eklemek için mesaj metnini, alma zamanını ve gönderenin adını ileterek addMessage()
numaralı telefonu arayın. Bu bilgileri aşağıdaki örnekte gösterildiği gibi NotificationCompat.MessagingStyle.Message
nesnesi olarak da aktarabilirsiniz:
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();
NotificationCompat.MessagingStyle
kullanılırken setContentTitle()
ve setContentText()
için verilen tüm değerler göz ardı edilir.
Görüşmenin üzerinde görünecek bir başlık eklemek için setConversationTitle()
numaralı telefonu arayabilirsiniz. Bu, grubun kullanıcı tarafından oluşturulan adı veya belirli bir adı yoksa sohbetteki katılımcıların listesi olabilir. Bire bir sohbetler için görüşme başlığı ayarlamayın. Sistem, görüşmenin bir grup olduğuna dair ipucu olarak bu alanın varlığını kullanır.
Bu stil yalnızca Android 7.0 (API düzeyi 24) ve sonraki sürümleri çalıştıran cihazlarda geçerlidir.
Daha önce gösterildiği gibi uyumluluk kitaplığı (NotificationCompat
) kullanılırken MessagingStyle
içeren bildirimler otomatik olarak desteklenen bir genişletilmiş bildirim stiline yedeklenir.
Bir sohbet görüşmesi için buna benzer bir bildirim oluştururken doğrudan yanıtlama işlemi ekleyin.
Medya denetimleriyle bildirim oluşturma
Medya oynatma kontrollerini ve parça bilgilerini görüntülemek için MediaStyleNotificationHelper.MediaStyle
uygulayın.
Oluşturucuda ilişkili MediaSession
öğenizi belirtin. Bu, Android'in medyanızla ilgili doğru bilgileri göstermesine olanak tanır.
Beş simge düğmesini görüntülemek için
addAction()
simgesini 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örünecek üç işlem düğmesi belirterek daraltılmış boyutlu içerik görünümünü değiştirmenize olanak tanır. Bunu yapmak için işlem düğmesi dizinlerini setShowActionsInCompactView()
hizmetine sağlayın.
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();
Ek kaynaklar
MediaStyle
ve genişletilebilir bildirimler hakkında daha fazla bilgi için aşağıdaki referanslara bakın.