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

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

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