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

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

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

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

إذا كانت جميع الشروط التالية تنطبق على حالة الاستخدام، استخدِم مجموعات الإشعارات:

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

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

    • وتتضمّن إجراءات خاصة بكل إشعار.

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

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

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

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

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

يتم ترتيب الإشعارات تلقائيًا حسب وقت نشرها، ولكن يمكنك تغيير الترتيب من خلال استدعاء 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).

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

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

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

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

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

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