إنشاء مجموعة من الإشعارات

بدءًا من الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات)، يمكنك عرض الإشعارات ذات الصلة في كمجموعة. على سبيل المثال، إذا كان تطبيقك يعرض إشعارات للرسائل الإلكترونية المُستلَمة، ضع جميع الإشعارات للرسائل الإلكترونية الجديدة في المجموعة نفسها ليتم تصغيرها

لإتاحة الإصدارات الأقدم، أضِف إشعار ملخص يظهر فقط إلى وتلخيص جميع الإشعارات المنفصلة. وغالبًا ما يتم إجراء ذلك باستخدام بنمط البريد الوارد.

الشكل 1. مصغَّرة (في الأعلى) وموسَّعة (في الأسفل) مجموعة الإشعارات.

استخدِم مجموعات الإشعارات في حال استيفاء جميع الشروط التالية لاستخدامك الحالة:

  • الإشعارات الموجهة إلى الطفل هي إشعارات كاملة ويمكن عرضها. كل على حدة دون الحاجة إلى ملخص مجموعة.

  • وهناك فائدة في عرض إشعارات الطفل بشكل فردي. بالنسبة مثال:

    • يمكن اتخاذ إجراء بشأنها استنادًا إلى إجراءات خاصة بكل إشعار.

    • وهناك المزيد من المعلومات في كل إشعار يمكن للمستخدم الاطّلاع عليها.

إذا لم تستوفِ إشعاراتك المعايير السابقة، يمكنك بدلاً من ذلك تحديث إشعار حالي باستخدام معلومات جديدة أو إنشاء نمط الرسالة إشعار لعرضها تحديثات متعددة في نفس المحادثة.

إنشاء مجموعة وإضافة إشعار إليها

لإنشاء مجموعة إشعارات، حدِّد سلسلة معرّف فريدة للمجموعة. ثم، مع كل إشعار تريد إضافته إلى المجموعة، اتصل setGroup()، تمرير اسم المجموعة. مثلاً:

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

يتم ترتيب الإشعارات تلقائيًا وفقًا لوقت نشرها، ولكن تغيير الطلب من خلال setSortKey()

إذا كان يجب التعامل مع تنبيهات مجموعة الإشعار من خلال مستخدم إشعار، مكالمة setGroupAlertBehavior() على سبيل المثال، إذا كنت تريد أن يؤدي ملخص مجموعتك فقط إلى إحداث ضجيج، يجب أن يكون لدى الأطفال في المجموعة سلوك تنبيه المجموعة GROUP_ALERT_SUMMARY الخيارات الأخرى هي GROUP_ALERT_ALL أو GROUP_ALERT_CHILDREN

إعداد ملخّص للمجموعة

يجب أن تحتوي الإشعارات المجمّعة على إشعار إضافي يعمل كمجموعة الملخص. لتفعيل الإشعارات المجمّعة، يجب إعداد ملخّص للمجموعة. هذا النمط أن يتضمن ملخص المجموعة بعضًا من النص الوارد في كل من الإشعارات الأخرى في المجموعة لمساعدة المستخدم في فهم ما يوجد في المجموعة. كيف ساعدت المجموعة يعرض لك ملخّصًا استنادًا إلى إصدار Android:

  • في إصدارات Android الأقدم من 7.0 (مستوى واجهة برمجة التطبيقات 24)، والتي لا يمكن عرض واجهة برمجة تطبيقات مدمجة مجموعة من الإشعارات، لا يعرض النظام سوى ملخص المجموعة ويخفي جميع الإشعارات. يمكن للمستخدم النقر على ملخص المجموعة لفتح التطبيق.

  • في الإصدار 7.0 من نظام التشغيل Android والإصدارات الأحدث، يعرض النظام إشعار ملخص المجموعة. كمجموعة متداخلة من الإشعارات، مصنفة بمقتطفات نصية من كل منها إشعار مجمّع. لا يعرض النص الذي ضبطته على المجموعة. الملخص. يمكن للمستخدم توسيع مجموعة الإشعارات المتداخلة لعرض الإشعارات الفردية في المجموعة، كما هو موضَّح في الرسم 1.

حتى إذا كانت الإصدارات الأحدث من Android لا تعرض نص ملخص المجموعة الذي تصميم، تحتاج دائمًا إلى تعيين ملخص يدويًا لتمكين التجميع الإشعارات قد يختلف سلوك ملخّص المجموعة على بعض الأجهزة. أنواعها، مثل الأجهزة القابلة للارتداء. يساعد إعداد محتوى وافٍ في ملخص المجموعة توفير أفضل تجربة على جميع الأجهزة والإصدارات

لإضافة ملخّص مجموعة، اتّبِع الخطوات التالية:

  1. أنشئ إشعارًا جديدًا مع وصف للمجموعة، وغالبًا ما يكون ذلك أفضل من خلال أسلوب البريد الوارد إشعار.

  2. أضِف إشعار الملخّص إلى المجموعة من خلال الاتصال بالرقم setGroup().

  3. تحديد ضرورة استخدامه كملخّص للمجموعة من خلال الاتصال setGroupSummary(true)

يوضح الرمز التالي مثالاً على إنشاء ملخص مجموعة:

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

يجب أن يظل معرف إشعار الملخص كما هو حتى يتم نشره مرة واحدة فقط حتى تتمكن من تحديثه لاحقًا في حالة تغير المعلومات الموجزة. التالي ويجب أن تؤدي الإضافات إلى المجموعة إلى تحديث الملخص الحالي.

للحصول على رمز نموذجي يستخدم الإشعارات، يُرجى الاطّلاع على إشعارات Android. عيّنة .

تجميع تلقائي

على الإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث، إذا كان تطبيقك يرسل أربعة إصدارات أو أكثر ولم يحدد مفتاح مجموعة أو ملخص مجموعة، فإن النظام تجميعها تلقائيًا. تظهر الإشعارات المجمّعة تلقائيًا مع إشعار ملخص جماعي مصنف بمقتطفات نصية من بعض الإشعارات المجمَّعة ويمكن للمستخدم توسيع إشعار الملخص هذا للاطلاع على كل إشعار فردي، كما هو الحال مع الإشعارات المجمعة يدويًا.

قد يختلف سلوك التجميع التلقائي على بعض أنواع الأجهزة. لتقديم أفضل على جميع الأجهزة والإصدارات، إذا كنت تعلم أنه ينبغي تنفيذ الإشعارات مجمعة، حدد مفتاح مجموعة وملخص مجموعة للتأكد من تجميعهما.