ההתראות ב-Android 13 מבוססות על מודל הצטרפות, ששונה מגרסאות קודמות של Android, שבהן ההתראות מבוססות על מודל ביטול ההצטרפות. ב-Android 13, כל האפליקציות צריכות לבקש מהמשתמשים הרשאה לפני שהן שולחות בקשות להצגת התראות. המודל הזה עוזר לצמצם את ההפרעות שנגרמות מהתראות, למזער את עומס המידע ולעזור למשתמשים לקבוע אילו התראות יוצגו להם על סמך מה שחשוב להם. כדי לתמוך במודל ההסכמה, יצרני ציוד מקורי (OEM) צריכים להטמיע שינויים במערכות ההתראות וההרשאות בזמן הריצה.
בדף הזה מוסבר מה יצרני ציוד מקורי (OEM) צריכים להטמיע כדי לתמוך בשינוי הזה, ואיך לאמת את ההטמעה.
הטמעה של שינויים בהסכמה לקבלת התראות
החל מ-Android 13, אפליקציות חייבות להצהיר על הכוונה שלהן לשלוח התראות על ידי בקשת הרשאת זמן הריצה android.permission.POST_NOTIFICATION
מהמערכת לפני שהן יכולות לשלוח התראות.
ב-Android 13 ואילך, ההגדרה שקובעת אם אפליקציה יכולה לשלוח התראות למשתמש מאוחסנת במערכת ההרשאות. בגרסאות Android קודמות ל-13, ההגדרה הזו נשמרה במערכת ההתראות. לכן, יצרני ציוד מקורי צריכים להעביר את נתוני ההתראות הקיימים, שכוללים מידע על האם אפליקציה מורשית לשלוח התראות, ממערכת ההתראות למערכת הרשאות זמן הריצה. יצרני ציוד מקורי (OEM) צריכים גם לתחזק ממשקי API קיימים במערכת ההתראות, שחושפים את הנתונים האלה למפתחי אפליקציות.
השינויים במערכות ההתראות וההרשאות מבוססים על מודל ההסכמה להתנהגות של משתמשים בהתראות, והם מתוארים בקטע הנחיות להטמעה.
התנהגות של התראות למשתמשים במודל של הבעת הסכמה
בטבלה הבאה מוסבר איך ההתראות מתנהגות בגרסאות שונות של האפליקציה במכשיר עם Android 13:
מכשיר עם Android 13 | אפליקציות שמטרגטות ל-Android מגרסה 13 ואילך | אפליקציות שמטרגטות גרסאות נמוכות מ-Android 13 |
---|---|---|
התקנה חדשה | ההתראות נחסמות עד שהאפליקציה מבקשת זאת.
האפליקציות קובעות מתי לבקש הרשאה. |
ההתראות נחסמות עד שתתקבל הנחיה ממערכת ההפעלה.
הבקשה להרשאה מוצגת בהפעלה הראשונה של האפליקציה. |
אפליקציה קיימת (שדרוג) | ההתראות מותרות עד שהאפליקציה מבקשת אישור.
ההרשאה הזמנית ניתנת עד שהאפליקציה מבקשת אותה בהרצה הראשונה שעומדת בדרישות. |
ההתראות מותרות עד שתתבקשו על ידי מערכת ההפעלה.
ההרשאה הזמנית ניתנת עד להפעלה הראשונה של האפליקציה. |
הנחיות להטמעה
למידע על הטמעה לדוגמה, אפשר לעיין במאמרים בנושא שירות ההתראות, שירות ההרשאות ושירות המדיניות. כדי להטמיע חריגים ל-handlers של הרשאות שמוגדרים כברירת מחדל, ראו הרשאות בתחילת ההפעלה.
במהלך ההטמעה, צריך לפעול לפי ההנחיות הבאות לגבי התנהגות של התראות למשתמשים באפליקציות שמטרגטות גרסאות SDK של Android 13 ומטה:
- אפליקציות חדשות שהותקנו במכשיר עם Android 13 לא יכולות לשלוח התראות בלי שהמשתמש יאשר את בקשת ההרשאה.
- אם האפליקציה מיועדת לגרסאות Android 13 ומעלה, צריך לחסום את ההתראות עד שהאפליקציה תציג בקשה, כי האפליקציה קובעת מתי לבקש הרשאה מהמשתמשים.
- אם האפליקציה מטרגטת גרסאות שקדמו ל-Android 13, צריך לחסום את ההתראות עד שהמשתמש יקבל בקשה ממערכת ההפעלה. מערכת ההפעלה חייבת להציג את הבקשה להרשאה בהפעלה הראשונה של האפליקציה.
כל אפליקציה שהייתה במכשיר לפני השדרוג ל-Android 13, או כל אפליקציה ששוחזרה באמצעות גיבוי ושחזור, חייבת לקבל הרשאה לשלוח התראות עד שהמשתמש יפעיל פעילות מהאפליקציה בפעם הראשונה.
באפליקציות שמיועדות ל-SDK בגרסאות Android 13 ומעלה, אם המשתמש לא התאים אישית בעבר את הגדרות ההתראות באפליקציה הזו ברמת האפליקציה או ברמה
NotificationChannel
, יש לבטל את הענקת ההרשאה הזמנית. האפליקציות צריכות לבקש מהמשתמש הרשאה לפני שהן יכולות להמשיך לשלוח התראות.אם לאפליקציה משודרגת שמיועדת ל-Android 13 אין כרגע הרשאת גישה להתראות באמצעות הענקת הרשאה זמנית לשדרוג, והמשתמש הפעיל אותה לפחות פעם אחת, האפליקציה חייבת להציג בקשה להרשאת גישה להתראות לפני שהיא מקבלת אישור להפעיל שירותים נוספים בחזית.
באפליקציות עם Target SDK בגרסאות נמוכות מ-Android 13, צריך ליירט את ההפעלה הראשונה של הפעילות אחרי שהאפליקציה יצרה לפחות
NotificationChannel
כדי להציג בקשת הרשאה שבה המשתמש נשאל אם הוא רוצה לקבל התראות מהאפליקציה.אם משתמש התאים אישית בעבר את הגדרות ההתראות ברמת האפליקציה או ברמת
NotificationChannel
עבור אפליקציה במכשיר שמשודרג או בגיבוי שמשוחזר למכשיר, צריך להעביר את ההגדרה ברמת האפליקציה למערכת ההרשאות עם הדגלFLAG_PERMISSION_USER_SET
. אסור להציג למשתמש בקשה נוספת להרשאת שליחת התראות, אלא אם האפליקציה מבקשת זאת באופן ספציפי.
הגיבוי והשחזור צריכים להיות תואמים לאחור וקדימה בין מכשיר Android 13 לבין מכשיר עם גרסה קודמת של מערכת ההפעלה. נתונים מגובים שנוצרו במכשיר עם Android 13 צריכים להיות משוחזרים לגרסה קודמת של מערכת ההפעלה, ונתונים מגובים מגרסה קודמת של מערכת ההפעלה צריכים להיות משוחזרים למכשיר עם Android 13.
התראות מדיה שמשויכות להפעלת מדיה מתמשכת צריכות להיות פטורות מהרשאת ההתראות.
אימות השינויים במערכות ההתראות וההרשאות
כדי לאמת את ההטמעה, מריצים את הבדיקות הבאות:
בדיקות יחידה (unit tests) כפי שמפורט ב-
PreferencesHelperTest
,NotificationManagerServiceTest
.כל בדיקה ידנית שבודקת שדרוגים וגיבוי ושחזור.
כל בדיקה של מערכת ההרשאות וההתראות ב-CTS ששולחת התראות. חלק מהבדיקות האלה נמצאות ב-cts/tests/tests/permission/, ב-NotificationManagerTest.java וב-cts/tests/tests/notificationlegacy/.