ایجاد گروه اعلان‌ها

از Android 7.0 (سطح API 24) به بعد، می‌توانید اعلان‌های مرتبط را در گروه نمایش دهید. برای مثال، اگر برنامه‌تان اعلان‌های ایمیل‌های دریافتی را نشان می‌دهد، همه اعلان‌های پیام‌های ایمیل جدید را در یک گروه قرار دهید تا باهم جمع شوند.

برای پشتیبانی از نسخه‌های پایین‌تر، اعلان خلاصه‌ای اضافه کنید که به‌تنهایی برای خلاصه کردن همه اعلان‌های جداگانه نشان داده می‌شود. اعلان سبک صندوق ورودی روش معمول برای انجام این کار است.

گروه اعلان جمع‌شده و ازهم بازشده
شکل ۱. گروه اعلان جمع‌شده (بالا) و ازهم بازشده (پایین).

اگر همه شرایط زیر برای مورد استفاده شما صادق است، از گروه‌های اعلان استفاده کنید:

  • اعلان‌های فرزند اعلان‌های کاملی هستند و می‌توانند به‌صورت جداگانه و بدون نیاز به خلاصه گروه نمایش داده شوند.

  • نشان دادن اعلان‌ها به‌صورت جداگانه به کودک مزیتی دارد. برای مثال:

    • آن‌ها کنش‌های مختص هر اعلان را دارند.

    • اطلاعات بیشتری در هر اعلان برای کاربر وجود دارد.

اگر اعلان‌هایتان معیارهای بالا را برآورده نمی‌کند، به‌جای آن به‌روزرسانی اعلان موجود با اطلاعات جدید یا ایجاد اعلان سبک پیام را برای نمایش چندین به‌روزرسانی در همان مکالمه درنظر بگیرید.

گروهی ایجاد کنید و اعلانی به آن اضافه کنید

برای ایجاد گروه اعلان، رشته شناسه یکتایی برای گروه تعریف کنید. سپس، برای هر اعلانی که می‌خواهید در گروه باشد، 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 پایین‌تر از ۷.۰ (سطح API‏ ۲۴) نمی‌توانند گروه تودرتوی اعلان‌ها را نشان دهند، بنابراین سیستم فقط اعلان خلاصه گروه را نشان می‌دهد و بقیه را پنهان می‌کند. کاربر می‌تواند روی اعلان خلاصه گروه تک‌ضرب بزند تا برنامه شما را باز کند.

  • در Android نسخه ۷.۰ و بالاتر، سیستم اعلان خلاصه گروه را به‌صورت گروه تودرتویی از اعلان‌ها نشان می‌دهد که با گزیده‌هایی از نوشتار هر اعلان گروه‌بندی‌شده برچسب‌گذاری شده است. نوشتاری را که برای اعلان خلاصه گروه تنظیم کرده‌اید نمایش نمی‌دهد. کاربر می‌تواند گروه تودرتوی اعلان‌ها را ازهم باز کند تا اعلان‌های جداگانه را در گروه ببیند، همان‌طور که در «شکل ۱» نشان داده شده است.

حتی اگر نسخه‌های بالاتر 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 (سطح ای‌پی‌آی ۲۴) و بالاتر، اگر برنامه‌تان اعلان ارسال کند و کلید گروه یا خلاصه گروه را مشخص نکند، سیستم ممکن است به‌طور خودکار آن‌ها را با هم گروه‌بندی کند. اعلان‌های گروه‌بندی‌شده به‌طور خودکار با اعلان خلاصه گروهی نشان داده می‌شوند که با گزیده‌هایی از نوشتار برخی‌از اعلان‌های گروه‌بندی‌شده برچسب‌گذاری شده است. کاربر می‌تواند این اعلان خلاصه را ازهم باز کند تا هر اعلان را به‌صورت جداگانه ببیند، درست مثل اعلان‌هایی که به‌صورت دستی گروه‌بندی شده‌اند.

عملکرد گروه‌بندی خودکار ممکن است در برخی‌از انواع دستگاه‌ها متفاوت باشد. برای ارائه بهترین تجربه در همه دستگاه‌ها و نسخه‌ها، اگر می‌دانید اعلان‌ها باید گروه‌بندی شوند، کلید گروه و خلاصه گروه را مشخص کنید تا مطمئن شوید گروه‌بندی می‌شوند.