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

بدءًا من نظام التشغيل Android 7.0 (المستوى 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)، الذي لا يمكن عرض مجموعة إشعارات مدمجة، لا يعرض النظام سوى إشعار ملخص المجموعة ويخفي جميع الإشعارات الأخرى. يمكن للمستخدم النقر على إشعار ملخص المجموعة لفتح التطبيق.

  • في الإصدار Android 7.0 والإصدارات الأحدث، يعرض النظام إشعار ملخص المجموعة كمجموعة متداخلة من الإشعارات، يتم تصنيفها بمقتطفات من نص كل إشعار مجمّع. لا يعرض النص الذي حددته في إشعار ملخص المجموعة. يمكن للمستخدم توسيع المجموعة المتداخلة من الإشعارات لمشاهدة الإشعارات الفردية في المجموعة، كما هو موضح في الشكل 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 .

التجميع التلقائي

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

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