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