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

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

החל מגרסה 10 של Android‏ (רמת 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 חדשה גורמת לפעולה ללא תוצאה (no-op) במכשירים ישנים יותר.

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

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

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

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

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

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

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

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