Bir bildirim grubu oluşturma

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-postalar için bildirim gösteriyorsa yeni e-posta iletileriyle ilgili tüm bildirimleri aynı gruba yerleştirin. Böylece, bu bildirimler birlikte daraltılır.

Daha eski sürümleri desteklemek için tüm ayrı bildirimleri özetleyen ve tek başına görünen bir özet bildirim ekleyin. Bu işlem genellikle gelen kutusu stili bildirimle yapılır.

Daraltılmış ve genişletilmiş bir bildirim grubu
Şekil 1. Daraltılmış (üstte) ve genişletilmiş (altta) bir bildirim grubu.

Kullanım alanınızda aşağıdaki koşulların tümü geçerliyse bildirim gruplarını kullanın:

  • Çocuk bildirimleri eksiksiz bildirimlerdir ve grup özetine gerek kalmadan ayrı ayrı gösterilebilir.

  • Çocuğa bildirimleri ayrı ayrı göstermenin avantajı vardır. Örneğin:

    • Her bildirime özel işlemler vardır.

    • Her bildirimde kullanıcının görebileceği daha fazla bilgi vardır.

Bildirimleriniz yukarıdaki ölçütleri karşılamıyorsa yeni bilgilerle mevcut bir bildirimi güncellemeyi veya aynı görüşmede birden fazla güncelleme göstermek için mesaj tarzı bir bildirim oluşturmayı düşünün.

Grup oluşturma ve gruba bildirim ekleme

Bildirim grubu oluşturmak için grup için benzersiz bir tanımlayıcı dize tanımlayın. Ardından, grupta olmasını istediğiniz her bildirim için grup adını ileterek setGroup yöntemini çağırın. Örneğin:

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

Varsayılan olarak, bildirimler yayınlanma zamanlarına göre sıralanır ancak setSortKey numaralı telefonu arayarak sıralamayı değiştirebilirsiniz.

Bir bildirim grubunun uyarılarının farklı bir bildirim tarafından işlenmesi gerekiyorsa setGroupAlertBehavior yöntemini çağırın. Örneğin, yalnızca grubunuzun özetinin ses çıkarmasını istiyorsanız gruptaki tüm alt öğelerin grup uyarısı davranışı GROUP_ALERT_SUMMARY olmalıdır. Diğer seçenekler GROUP_ALERT_ALL ve GROUP_ALERT_CHILDREN'dır.

Grup özeti ayarlama

Gruplandırılmış bildirimlerde, grup özeti işlevi gören ek bir bildirim bulunmalıdır. Gruplandırılmış bildirimleri etkinleştirmek için grup özeti ayarlamanız gerekir. Bu grup özeti, kullanıcının grupta ne olduğunu anlamasına yardımcı olmak için gruptaki diğer bildirimlerin her birinden bir miktar metin içermelidir. Grup özetinin nasıl gösterileceği Android sürümüne bağlıdır:

  • Android'in 7.0'dan (API düzeyi 24) önceki sürümlerinde iç içe geçmiş bildirim grupları gösterilemez. Bu nedenle sistem yalnızca grup özeti bildiriminizi gösterir ve diğer tüm bildirimleri gizler. Kullanıcı, grup özeti bildirimine dokunarak uygulamanızı açabilir.

  • Android 7.0 ve sonraki sürümlerde sistem, grup özeti bildiriminizi iç içe yerleştirilmiş bir bildirim grubu olarak gösterir. Bu bildirimler, her bir gruplandırılmış bildirimden alınan metin snippet'leriyle etiketlenir. Grup özeti bildiriminde ayarladığınız metni göstermez. Kullanıcı, Şekil 1'de gösterildiği gibi gruptaki bildirimleri tek tek görmek için iç içe yerleştirilmiş bildirim grubunu genişletebilir.

Android'in daha yeni sürümleri tasarladığınız grup özeti metnini göstermese bile gruplandırılmış bildirimleri etkinleştirmek için manuel olarak bir özet ayarlamanız gerekir. Grup özetinin davranışı, giyilebilir cihazlar gibi bazı cihaz türlerinde farklılık gösterebilir. Grup özetinizde zengin içerik ayarlamak, tüm cihazlarda ve sürümlerde en iyi deneyimi sunmanıza yardımcı olur.

Grup özeti eklemek için aşağıdaki adımları uygulayın:

  1. Grubun açıklamasını içeren yeni bir bildirim oluşturun. Bu işlem genellikle gelen kutusu tarzı bildirimle en iyi şekilde yapılır.

  2. setGroup yöntemini çağırarak özet bildirimi gruba ekleyin.

  3. setGroupSummary(true) işlevini çağırarak grup özeti olarak kullanılması gerektiğini belirtin.

Aşağıdaki kodda grup özeti oluşturma örneği gösterilmektedir:

// 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)
}

Özet bildiriminin yalnızca bir kez yayınlanması ve özet bilgileri değişirse daha sonra güncellenebilmesi için özet bildiriminin kimliği aynı kalmalıdır. Gruba yapılan sonraki eklemeler, mevcut özetin güncellenmesiyle sonuçlanmalıdır.

Otomatik gruplandırma

Android 7.0 (API düzeyi 24) ve sonraki sürümlerde, uygulamanız bildirim gönderiyor ve bir grup anahtarı veya grup özeti belirtmiyorsa sistem bunları otomatik olarak gruplandırabilir. Otomatik olarak gruplandırılan bildirimler, gruplandırılmış bildirimlerden bazılarının metin snippet'leriyle etiketlenmiş bir grup özeti bildirimiyle gösterilir. 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 farklılık gösterebilir. Tüm cihazlarda ve sürümlerde en iyi deneyimi sunmak için bildirimlerin gruplandırılması gerektiğini biliyorsanız gruplandırıldıklarından emin olmak için bir grup anahtarı ve grup özeti belirtin.