Bir bildirim grubu oluşturma

Android 7.0 (API düzeyi 24) sürümünden itibaren, ilgili bildirimleri şurada görüntüleyebilirsiniz: gelmektir. Örneğin, uygulamanızda alınan e-postalar için bildirimler gösteriliyorsa aynı gruptaki yeni e-posta iletileri için tüm bildirimler daraltılır. birlikte.

Eski sürümleri desteklemek için ayrı ayrı bildirimleri özetlemenizi sağlar. Bunun için genellikle bildiriminizi bir yere kadar ekleyebilirsiniz.

Şekil 1. Daraltılmış (üst) ve genişletilmiş (alt) bildirim grubuna bakın.

Aşağıdaki koşulların tamamı kullanımınız için geçerliyse bildirim gruplarını kullanın vaka:

  • Alt bildirimler tam bildirimlerdir ve gösterilebilir. ve grup özetine gerek kalmadan tek tek paylaşılır.

  • Alt bildirimleri tek tek göstermenin bir faydası vardır. Örneğin, örnek:

    • Her bildirime özgü işlemler sayesinde bu bildirimler üzerinde işlem yapılabilir.

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

Bildirimleriniz yukarıdaki ölçütleri karşılamıyorsa bunun yerine aşağıdakileri yapabilirsiniz: mevcut bir bildirimi güncellemelerini ya da mesaj stilinde bir mesaj stili bildirimi görebilirsiniz aynı ileti dizisinde birden çok güncellemeyin.

Grup oluşturma ve gruba bildirim ekleme

Bildirim grubu oluşturmak amacıyla grup için benzersiz bir tanımlayıcı dizesi tanımlayın. Ardından, grupta olmasını istediğiniz her bildirim için şu numarayı arayın: setGroup() grup adını geçmelisiniz. Ö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, gönderildikleri zamana göre sıralanır, ancak telefon ederek sıralamayı değiştirebilir setSortKey().

Bir bildirim grubuna ilişkin uyarılar farklı bir grup tarafından ele alınması gerekiyorsa bildirim, çağrı setGroupAlertBehavior() Örneğin, yalnızca grubunuzun özetinin gürültü çıkarmasını istiyorsanız gruptaki alt yayıncılar, grup uyarısı davranışına sahip olmalıdır GROUP_ALERT_SUMMARY. Diğer seçenekler GROUP_ALERT_ALL ve GROUP_ALERT_CHILDREN.

Grup özeti ayarlama

Gruplandırılmış bildirimlerin, grup işlevi gören ek bir bildirimi olmalıdır özet. Gruplandırılmış bildirimleri etkinleştirmek için bir grup özeti ayarlamanız gerekir. Bu grup özeti, diğer bildirimlerin her birinden gelen metinlerin bir kısmını içermelidir kullanıcının grupta neler olduğunu anlamasına yardımcı olmak için gruba ekleyin. Grup nasıl görüntülenen özetin gösterileceği Android sürümüne bağlıdır:

  • 7.0'dan (API düzeyi 24) düşük Android sürümlerinde, iç içe yerleştirilmiş sistem yalnızca grup özetini gösterir. bildirimi gösterir ve diğer tüm bildirimleri gizler. Kullanıcı, grup özetine dokunabilir bildirimine dokunun.

  • Android 7.0 ve sonraki sürümlerde sistem, grup özeti bildiriminizi gösterir. her bildirimden metin snippet'leriyle etiketlenmiş iç içe geçmiş bildirimler grubu olarak gruplandırılmış bildirim. Grupta ayarladığınız metin gösterilmiyor özet bildirim. Kullanıcı, iç içe yerleştirilmiş bildirim grubunu genişletebilir simgesini tıklayın.

Android'in yeni sürümleri, oluşturduğunuz grup özeti metnini göstermese bile bir özete kolayca ihtiyacınız olursa, gruplandırılmış bildirimlerine bakın. Grup özetinin çalışma biçimi bazı cihazlarda farklılık gösterebilir giyilebilir cihazlar da vardır. Grup özetinizde zengin içerik ayarlamak, tüm cihaz ve sürümlerde en iyi deneyimi sağlar.

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 bildirim genellikle en iyisidir gelen kutusu stiliyle bildirimi gönderebilir.

  2. setGroup() numaralı telefonu arayarak gruba özet bildirimi ekleyin.

  3. Şu numarayı arayarak bunun grup özeti olarak kullanılması gerektiğini belirtin: setGroupSummary(true).

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ği aynı kalmalıdır, böylece yalnızca bir kez yayınlanır ve Böylece, özet bilgileri değişirse daha sonra güncelleyebilirsiniz. Sonraki ekleme işlemi, mevcut özetin güncellenmesine yol açmalıdır.

Bildirimleri kullanan örnek kod için Android Bildirimleri Örnek ,

Otomatik gruplandırma

Uygulamanız, Android 7.0 (API düzeyi 24) ve sonraki sürümlerde dört veya daha fazla kod gönderirse bir grup anahtarı veya grup özeti belirtmemişse sistem otomatik olarak gruplandırır. Otomatik olarak gruplandırılan bildirimler gösterilir bazı bölümlerden metin snippet'leriyle etiketlenmiş bir grup özeti bildirimi Gruplandırılmış bildirimler. Kullanıcı her bir öğeyi görmek için bu özet bildirimi genişletebilir manuel olarak gruplandırılmış bildirimlerde olduğu gibi ayrı ayrı bildirimler alabilirsiniz.

Otomatik gruplandırma davranışı bazı cihaz türlerine göre değişiklik gösterebilir. En iyi deneyimi sunmak için tüm cihazlarda ve sürümlerde (bildirimlerin sorunsuz bir şekilde bir grup anahtarı ve grup özeti belirleyin.