יצירת קבוצה של התראות

החל מגרסה Android 7.0‏ (רמת API‏ 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 (רמת API 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 (רמת API ‏24) ואילך, אם האפליקציה שולחת התראות ולא מציינים מפתח קבוצה או סיכום קבוצה, יכול להיות שהמערכת תקבץ אותן יחד באופן אוטומטי. התראות שמקובצות באופן אוטומטי מופיעות עם התראה של סיכום קבוצתי עם קטעי טקסט מחלק מההתראות המקובצות. המשתמש יכול להרחיב את התראת הסיכום הזו כדי לראות כל התראה בנפרד, כמו בהתראות בקיבוץ ידני.

אופן הקיבוץ האוטומטי עשוי להשתנות בסוגים מסוימים של מכשירים. כדי לספק את חוויית השימוש הטובה ביותר בכל המכשירים והגרסאות, אם אתם יודעים שההתראות צריכות להיות מקובצות, עליכם לציין מפתח קבוצה וסיכום קבוצה כדי לוודא שהן מקובצות.