Android 7.0 (API düzeyi 24) sürümünden itibaren, ilgili bildirimleri bir grupta görüntüleyebilirsiniz. Örneğin, uygulamanız alınan e-postalarla ilgili bildirimler gösteriyorsa yeni e-posta iletileriyle ilgili tüm bildirimleri aynı gruba koyun. Böylece, bildirimler birlikte daraltılır.
Eski sürümleri desteklemek için tüm ayrı bildirimleri özetleyen ve tek başına görünen bir özet bildirimi ekleyin. Bu işlem genellikle gelen kutusu tarzı bildirim ile en iyi şekilde yapılır.
Kullanım alanınız için aşağıdaki koşulların tamamı geçerliyse bildirim gruplarını kullanın:
Alt bildirimler eksiksiz bildirimler olup grup özeti gerekmeden tek tek görüntülenebilir.
Alt bildirimlerinin ayrı ayrı gösterilmesinin avantajları vardır. Örneğin:
Her bildirime özel işlemler içeren, işlem yapılabilir bildirimlerdir.
Her bildirimde kullanıcının görebileceği daha fazla bilgi bulunur.
Bildirimleriniz yukarıdaki ölçütleri karşılamıyorsa mevcut bir bildirimi yeni bilgilerle güncellemeyi veya aynı görüşmedeki birden fazla güncellemeyi göstermek için mesaj tarzında bir bildirim oluşturmayı düşünebilirsiniz.
Grup oluşturma ve gruba bildirim ekleme
Bildirim grubu oluşturmak için grup için benzersiz bir tanımlayıcı dizesi tanımlayın.
Ardından, grupta olmasını istediğiniz her bildirim için grup adını ileterek setGroup()
numaralı telefonu arayın. Örnek:
Kotlin
val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL" val newMessageNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setGroup(GROUP_KEY_WORK_EMAIL) .build()
Java
String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"; Notification newMessageNotification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setGroup(GROUP_KEY_WORK_EMAIL) .build();
Varsayılan olarak bildirimler yayınlanma zamanlarına göre sıralanır ancak setSortKey()
işlevini çağırarak sıralamayı değiştirebilirsiniz.
Bir bildirim grubuna ilişkin uyarıların farklı bir bildirimle işlenmesi gerekiyorsa setGroupAlertBehavior()
numaralı telefonu arayın.
Örneğin, yalnızca grubunuzun özetinin gürültü çıkarmasını istiyorsanız gruptaki tüm alt gruplar için grup uyarısı davranışı GROUP_ALERT_SUMMARY
olmalıdır.
Diğer seçenekler GROUP_ALERT_ALL
ve GROUP_ALERT_CHILDREN
'tir.
Grup özeti ayarlama
Gruplandırılmış bildirimlerin, grup özeti işlevi gören fazladan bir bildirimi olmalıdır. Gruplandırılmış bildirimleri etkinleştirmek için bir grup özeti ayarlamanız gerekir. Bu grup özeti, kullanıcının grupta neler olduğunu anlamasına yardımcı olmak için gruptaki diğer bildirimlerin metinlerinden bazılarını içermelidir. Grup özetinin nasıl görüntüleneceği Android sürümüne bağlıdır:
İç içe yerleştirilmiş bir bildirim grubunu gösteremediğiniz 7.0'dan (API düzeyi 24) düşük Android sürümlerinde sistem yalnızca grup özeti bildiriminizi gösterir, diğerlerini de gizler. Kullanıcı, uygulamanızı açmak için grup özeti bildirimine dokunabilir.
Android 7.0 ve sonraki sürümlerde sistem, grup özeti bildiriminizi, her bir gruplandırılmış bildirimdeki metin snippet'leriyle etiketlenmiş, iç içe yerleştirilmiş bir bildirim grubu olarak gösterir. Grup özeti bildirimde ayarladığınız metni göstermez. Kullanıcı, gruptaki bildirimleri tek tek görmek için iç içe yerleştirilmiş bildirim grubunu genişletebilir (Şekil 1).
Android'in daha yeni sürümlerinde tasarladığınız grup özeti metni gösterilmese bile gruplandırılmış bildirimleri etkinleştirmek için her zaman özeti manuel olarak ayarlamanız gerekir. Grup özetinin davranışı, giyilebilir cihazlar gibi bazı cihaz türlerinde değişiklik gösterebilir. Grup özetinizde zengin içerik ayarlamak, tüm cihazlarda ve sürümlerde en iyi deneyimin sağlanmasına yardımcı olur.
Grup özeti eklemek için aşağıdaki adımları uygulayın:
Grubun açıklamasını içeren yeni bir bildirim oluşturun. Bu işlem genellikle gelen kutusu tarzı bildirim ile yapılır.
setGroup()
işlevini çağırarak özet bildirimini gruba ekleyin.setGroupSummary(true)
numaralı telefonu arayarak bu özetin grup özeti olarak kullanılması gerektiğini belirtin.
Aşağıdaki kodda, grup özeti oluşturma örneği gösterilmektedir:
Kotlin
// Use constant ID for notifications used as group summary. val SUMMARY_ID = 0 val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL" val newMessageNotification1 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject1.getSummary()) .setContentText("You will not believe...") .setGroup(GROUP_KEY_WORK_EMAIL) .build() val newMessageNotification2 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject2.getSummary()) .setContentText("Please join us to celebrate the...") .setGroup(GROUP_KEY_WORK_EMAIL) .build() val summaryNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle(emailObject.getSummary()) // Set content text to support devices running API level < 24. .setContentText("Two new messages") .setSmallIcon(R.drawable.ic_notify_summary_status) // Build summary info into InboxStyle template. .setStyle(NotificationCompat.InboxStyle() .addLine("Alex Faarborg Check this out") .addLine("Jeff Chang Launch Party") .setBigContentTitle("2 new messages") .setSummaryText("janedoe@example.com")) // Specify which group this notification belongs to. .setGroup(GROUP_KEY_WORK_EMAIL) // Set this notification as the summary for the group. .setGroupSummary(true) .build() NotificationManagerCompat.from(this).apply { notify(emailNotificationId1, newMessageNotification1) notify(emailNotificationId2, newMessageNotification2) notify(SUMMARY_ID, summaryNotification) }
Java
// Use constant ID for notifications used as group summary. int SUMMARY_ID = 0; String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"; Notification newMessageNotification1 = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject1.getSummary()) .setContentText("You will not believe...") .setGroup(GROUP_KEY_WORK_EMAIL) .build(); Notification newMessageNotification2 = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject2.getSummary()) .setContentText("Please join us to celebrate the...") .setGroup(GROUP_KEY_WORK_EMAIL) .build(); Notification summaryNotification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle(emailObject.getSummary()) // Set content text to support devices running API level < 24. .setContentText("Two new messages") .setSmallIcon(R.drawable.ic_notify_summary_status) // Build summary info into InboxStyle template. .setStyle(new NotificationCompat.InboxStyle() .addLine("Alex Faarborg Check this out") .addLine("Jeff Chang Launch Party") .setBigContentTitle("2 new messages") .setSummaryText("janedoe@example.com")) // Specify which group this notification belongs to. .setGroup(GROUP_KEY_WORK_EMAIL) // Set this notification as the summary for the group. .setGroupSummary(true) .build(); NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(emailNotificationId1, newMessageNotification1); notificationManager.notify(emailNotificationId2, newMessageNotification2); notificationManager.notify(SUMMARY_ID, summaryNotification);
Özet bildirim kimliğinin yalnızca bir kez yayınlanması için aynı kalması gerekir. Böylece, özet bilgileri değişirse daha sonra güncelleyebilirsiniz. Grupa daha sonra eklenen öğeler mevcut özetin güncellenmesine neden olmalıdır.
Bildirim kullanan örnek kod için Android Bildirimleri Örneği'ne bakın.
Otomatik gruplandırma
Android 7.0 (API düzeyi 24) ve sonraki sürümlerde, uygulamanız bildirim gönderiyorsa ve bir grup anahtarı veya grup özeti belirtmiyorsa sistem bunları otomatik olarak birlikte gruplandırabilir. Otomatik olarak gruplandırılan bildirimler, gruplandırılan bildirimlerin bazılarından alınan metin snippet'leriyle etiketlenmiş bir grup özeti bildirimiyle birlikte görünür. Kullanıcı, manuel olarak gruplandırılmış bildirimlerde olduğu gibi her bir bildirimi görmek için bu özet bildirimi genişletebilir.
Otomatik gruplandırma davranışı bazı cihaz türlerinde değişiklik gösterebilir. Tüm cihazlarda ve sürümlerde en iyi deneyimi sağlamak için bildirimlerin gruplandırılması gerektiğini biliyorsanız grup anahtarı ve grup özeti belirterek bunların gruplandırıldığından emin olun.