סקירה כללית של ההתראות

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

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

למידע נוסף על עיצוב התראות ועל דפוסי אינטראקציה, עיינו במדריך לעיצוב התראות.

הופעות במכשיר

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

שורת סטטוס וחלונית הזזה להתראות

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

איור 1. סמלי ההתראות מופיעים בצד ימין של שורת הסטטוס.

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

איור 2. התראות במגירה של ההתראות.

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

ההתראה תישאר גלויה במגירה של ההתראות עד שהאפליקציה או המשתמש יסגרו אותה.

התראת 'שימו לב'

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

איור 3. התראה 'שימו לב' מופיעה מול האפליקציה שבחזית.

ההתראה 'שימו לב' מופיעה כשהאפליקציה שולחת אותה. הוא נעלם אחרי רגע, אבל הוא נשאר גלוי בחלונית ההזזה של ההתראות כרגיל.

התנאים שעשויים להפעיל התראות מראש כוללים את אלה:

  • הפעילות של המשתמש מתבצעת במצב מסך מלא, למשל כשהאפליקציה משתמשת ב-fullScreenIntent.

  • ההתראה היא בעדיפות גבוהה ומופיעה עם צלצול או רטט במכשירים עם Android מגרסה 7.1 (רמת API 25) ומטה.

  • ערוץ ההתראות חשוב מאוד במכשירים עם Android מגרסה 8.0 (רמת API‏ 26) ואילך.

מסך הנעילה

החל מגרסה 5.0 של Android, ההתראות יכולות להופיע במסך הנעילה.

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

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

איור 4. התראות במסך הנעילה עם תוכן רגיש מוסתר.

מידע נוסף זמין במאמר הגדרת החשיפה של מסך הנעילה.

תג עם סמל האפליקציה

במרכזי אפליקציות נתמכים במכשירים עם Android מגרסה 8.0 (רמת API 26) ואילך, סמלי אפליקציות מציינים התראות חדשות עם תג צבעוני, שנקרא סימן התראות בסמל המתאים במרכז האפליקציות.

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

איור 5. תגי התראות והתפריט של לחיצה ארוכה.

מידע נוסף על התגים זמין במאמר שינוי תג התראה.

מכשירי Wear OS

אם למשתמש יש מכשיר Wear OS מותאם, כל ההתראות יופיעו שם באופן אוטומטי, כולל לחצני פעולה ופרטים מתרחבים.

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

איור 6. ההתראות מופיעות באופן אוטומטי במכשיר Wear OS המותאם.

המבנה של ההתראות

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

איור 7. התראה עם פרטים בסיסיים.

החלקים הנפוצים ביותר של התראה מצוינים בתרשים 7, באופן הבא:

  1. סמל קטן: חובה, מוגדר באמצעות setSmallIcon().
  2. שם האפליקציה: מסופק על ידי המערכת.
  3. חותמת זמן: המערכת מספקת אותה, אבל אפשר לשנות אותה באמצעות setWhen() או להסתיר אותה באמצעות setShowWhen(false).
  4. סמל גדול: אופציונלי. בדרך כלל משתמשים בו רק בתמונות של אנשי קשר. אין להשתמש בו לסמל האפליקציה. הגדרה באמצעות setLargeIcon().
  5. כותרת: אופציונלי, מוגדר באמצעות setContentTitle().
  6. טקסט: אופציונלי, מוגדר באמצעות setContentText().

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

למידע נוסף על יצירת התראה עם התכונות האלה ועוד, קראו את המאמר יצירת התראה.

פעולות בעת התראה

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

איור 8. התראה עם לחצני פעולה.

החל מגרסה 7.0 של Android‏ (רמת API 24), אפשר להוסיף פעולה כדי להשיב להודעות או להזין טקסט אחר ישירות מההתראה.

החל מ-Android 10 (רמת API 29), הפלטפורמה יכולה ליצור באופן אוטומטי לחצני פעולה עם הצעות לפעולות שמבוססות על כוונה.

במאמר יצירת התראה מוסבר איך מוסיפים לחצני פעולה.

דרישה למכשיר לא נעול

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

ב-Android 12 ואילך (רמת API 31 ואילך), אפשר להגדיר פעולת התראה כך שהמכשיר יצטרך להיות פתוח כדי שהאפליקציה תפעיל את הפעולה הזו, ללא קשר לתהליך העבודה שהפעולה מפעילה. האפשרות הזו מוסיפה שכבת אבטחה נוספת להתרעות במכשירים נעולים.

כדי לדרוש שנעילת המכשיר תבוטל לפני שהאפליקציה מפעילה פעולת התראה מסוימת, צריך להעביר את true אל setAuthenticationRequired() כשיוצרים את פעולת ההתראה, כפי שמוצג בקטע הקוד הבא:

Kotlin

val moreSecureNotification = Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build()

Java

Notification moreSecureNotification = new Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build();

הודעה שניתן להרחיב

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

איור 9. התראה שניתן להרחיב לטקסט גדול.

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

עדכונים וקבוצות של התראות

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

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

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

איור 10. קבוצת התראות מכווצה ומורחבת.

במאמר יצירת קבוצה של התראות מוסבר איך מוסיפים התראות לקבוצה.

ערוצי התראות

החל מגרסה 8.0 של Android (רמת API‏ 26), צריך להקצות את כל ההתראות לערוץ, אחרת הן לא יופיעו. כך המשתמשים יכולים להשבית ערוצי התראות ספציפיים באפליקציה במקום להשבית את כל ההתראות. המשתמשים יכולים לשלוט באפשרויות החזוניות והקוליות של כל ערוץ דרך הגדרות המערכת של Android, כפי שמוצג באיור 11. המשתמשים יכולים גם ללחוץ לחיצה ארוכה על התראה כדי לשנות את ההתנהגות בערוץ המשויך.

במכשירים עם Android מגרסה 7.1 (רמת API 25) ומטה, המשתמשים יכולים לנהל את ההתראות רק לפי אפליקציה. בפועל, לכל אפליקציה יש רק ערוץ אחד ב-Android מגרסה 7.1 ומטה.

איור 11. הגדרות ההתראות של אפליקציית השעון ואחד מהערוצים שלה.

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

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

מידע נוסף זמין במאמר יצירה וניהול של ערוצי התראות.

רמת החשיבות של ההתראות

מערכת Android משתמשת בחשיבות של ההתראה כדי לקבוע באיזו מידה ההתראה מפריעה למשתמש מבחינה חזותית או שמיעה. ככל שהחשיבות של ההתראה גבוהה יותר, כך היא מפריעה יותר.

ב-Android 7.1 (API ברמה 25) ובגרסאות ישנות יותר, חשיבות ההתראה נקבעת לפי הערך של priority שלה.

ב-Android מגרסה 8.0 (רמת API 26) ואילך, החשיבות של התראה נקבעת לפי הסמל importance של הערוץ שההתראה מוצגת בו. משתמשים יכולים לשנות את רמת החשיבות של ערוץ התראות בהגדרות המערכת, כפי שמוצג באיור 12.

איור 12. המשתמשים יכולים לשנות את רמת החשיבות של כל ערוץ ב-Android 8.0 ואילך.

רמות החשיבות האפשריות וההתנהגויות של ההתראות שמשויכות אליה הן:

  • דחוף: נשמע צליל וההתראה מופיעה כהודעה מראש.

  • גבוה: נשמע צליל.

  • בינונית: לא נשמע צליל.

  • נמוכה: לא משמיעה צליל ולא מופיעה בשורת הסטטוס.

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

מידע נוסף זמין במאמר איך מגדירים את מידת החשיבות.

מצב 'נא לא להפריע'

החל מגרסה 5.0 של Android‏ (רמת API‏ 21), המשתמשים יכולים להפעיל את מצב 'נא לא להפריע', שמשתיק את הצליל והרטט של כל ההתראות. ההתראות עדיין מופיעות בממשק המשתמש של המערכת כרגיל, אלא אם המשתמש מציין אחרת.

יש שלוש רמות זמינות במצב 'נא לא להפריע':

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

איור 13. משתמשים יכולים לאפשר התראות על סמך קטגוריות ברמת המערכת (משמאל) ועל סמך השולח או מבצע השיחה (מימין).

בגרסאות Android 8.0 ואילך (רמת API‏ 26 ואילך), המשתמשים יכולים גם לאפשר התראות עבור קטגוריות ספציפיות לאפליקציות – שנקראות גם 'ערוצים' – על ידי שינוי ההגדרה של 'נא לא להפריע' בכל ערוץ בנפרד. לדוגמה, באפליקציית תשלומים יכולים להיות ערוצים להתרעות שקשורות למשיכות ולהפקדות. במצב עדיפות, המשתמש יכול לאפשר התראות על משיכות, התראות על הפקדות או את שתיהן.

במכשירים עם מערכת Android בגרסה 7.1 ואילך (רמת API 25 ומטה), המשתמשים יכולים לאפשר התראות על בסיס אפליקציה, ולא על בסיס ערוץ.

כדי להגדיר את ההתראות בהתאם להגדרות המשתמש האלה, צריך להגדיר קטגוריה ברמת המערכת.

התראות לשירותים שפועלים בחזית

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

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

מגבלות על פרסום פוסטים

החל מ-Android 8.1‏ (API ברמה 27), אפליקציות לא יכולות להשמיע צליל התראה יותר מפעם בשנייה. אם האפליקציה שלכם שולחת כמה התראות בשנייה אחת, כולן יופיעו כצפוי, אבל רק ההתראה הראשונה בשנייה תשמיע צליל.

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

תאימות התראות

ממשק המשתמש של מערכת ההתראות של Android וממשקי ה-API שקשורים להתראות מתפתחים כל הזמן. כדי להשתמש בתכונות העדכניות ביותר של Notification API תוך תמיכה במכשירים ישנים יותר, צריך להשתמש ב-Notification API של Support Library‏, NotificationCompat, ובתת-הסוגים שלו, וגם ב-NotificationManagerCompat. כך לא צריך לכתוב קוד מותנה כדי לבדוק את רמות ה-API, כי ממשקי ה-API האלה מטפלים בו.

NotificationCompat מתעדכן ככל שהפלטפורמה מתפתחת, כך שיכלול את השיטות העדכניות ביותר. עם זאת, הזמינות של שיטה ב-NotificationCompat לא מבטיחה שהתכונה המתאימה זמינה במכשירים ישנים יותר. במקרים מסוימים, קריאה ל-API חדש שהשקתם גורמת לחוסר תפעול במכשירים ישנים.

בהמשך מוצג סיכום של השינויים הבולטים ביותר בהתנהגות של התראות לפי רמת API לגבי התראות ב-Android.

Android 5.0, רמת API 21

  • הצגת התראות במסך הנעילה ובתצוגה מקדימה.

  • מאפשרת למשתמש להגדיר את הטלפון למצב 'נא לא להפריע' ולהגדיר אילו התראות מורשות להפריע לו כשהמכשיר במצב 'רק התראות בעדיפות'.

  • הוספת שיטות כדי לקבוע אם תוצג התראה במסך הנעילה, למשל setVisibility(), ולציון גרסה 'ציבורית' של טקסט ההתראה.

  • הוספת השיטה setPriority(), שמציינת למערכת את מידת ההפרעה של ההתראה. לדוגמה, הגדרת העדיפות כ'גבוהה' גורמת להצגת ההתראה כ'שימו לב'.

  • נוספה תמיכה בערמות התראות למכשירי Android Wear (שנקראים עכשיו Wear OS). אפשר להוסיף התראות למקבץ באמצעות setGroup(). מקבצי התראות (שנקראים בהמשך קבוצה או חבילה) לא נתמכים בטאבלטים או בטלפונים עד Android 7.0 (רמת API 24).

Android 7.0, רמת API 24

  • עיצוב מחדש של תבניות ההתראות כדי להדגיש את התמונה הראשית ואת הדמות שלכם.

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

  • הוספת תמיכה למכשירים ניידים, כמו טלפונים וטאבלטים, בקבוצות של התראות. משתמש באותו ממשק API כמו סטאקים של התראות ב-Android Wear (שנקרא עכשיו Wear OS) שהוצגו ב-Android 5.0 (רמת API‏ 21).

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

Android 8.0, רמת API 26

  • ההתראות הספציפיות יועברו לערוץ מסוים.

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

  • ההגדרה הזו גורמת לכך שאפליקציות עם התראות פעילות מציגות תג התראה מעל סמל האפליקציה שלהן במסך הבית או במסך מרכז האפליקציות.

  • מאפשרת למשתמשים לדחות התראה מהמגירה. אתם יכולים להגדיר זמן קצוב לתפוגה אוטומטית של התראה.

  • מאפשרת להגדיר את צבע הרקע של ההתראה.

  • העברת חלק מממשקי ה-API לגבי התנהגות ההתראות מ-Notification ל-NotificationChannel. לדוגמה, ב-Android מגרסה 8.0 ואילך, צריך להשתמש ב-NotificationChannel.setImportance() במקום ב-NotificationCompat.Builder.setPriority().

Android 13.0, רמת API 33

Android 14.0, רמת API 34

  • הגבלת התראות Intent במסך מלא לאפליקציות שמספקות שיחות והתראות. משתמשים ב-API של NotificationManager.canUseFullScreenIntent כדי לבדוק אם לאפליקציה יש הרשאה. אם לא, האפליקציה יכולה להשתמש ב-ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT כדי להפעיל את דף ההגדרות שבו המשתמשים יכולים להעניק את ההרשאה.

  • שינוי חוויית השימוש של המשתמשים בהתראות שלא ניתן לסגור, על ידי מתן אפשרות למשתמשים לסגור את ההתראות גם כשהדגל Notification.FLAG_ONGOING_EVENT מוגדר. הכלל הזה לא רלוונטי להתראות של CallStyle אם הדגל Notification.FLAG_ONGOING_EVENT מוגדר או בקר מדיניות המכשיר (DPC) וחבילות תומכות בארגון. המדיניות הזו לא חלה גם כשהטלפון נעול, או אם המשתמש בוחר באפשרות ניקוי הכול.