ההתראות ב-Android 13 מבוססות על מודל הסכמה מראש, בניגוד לגרסאות קודמות של Android שבהן נעשה שימוש במודל ביטול הסכמה. ב-Android 13, כל האפליקציות צריכות לבקש הרשאה מהמשתמשים לפני שליחת התראות. המודל הזה עוזר לצמצם את ההפרעות מהתראות, מפחית את עומס המידע ומאפשר למשתמשים לקבוע אילו התראות יוצגו על סמך מה שחשוב להם. כדי לתמוך במודל ההסכמה מראש, יצרני ציוד מקורי צריכים להטמיע שינויים במערכות ההתראות וההרשאות בסביבת זמן הריצה.
בדף הזה מוסבר מה יצרני ציוד מקורי צריכים להטמיע כדי לתמוך בשינוי הזה, ואיך לאמת את ההטמעה.
הטמעת שינויים בהתראות לקבלת הסכמה
החל מ-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, או כל אפליקציה ששוחזרה באמצעות גיבוי ושחזור, חייבת לקבל הרשאה לשלוח התראות עד שהמשתמש יפעיל פעילות מהאפליקציה הזו בפעם הראשונה.
אם המשתמש לא התאים אישית את הגדרות ההתראות של האפליקציה הזו ברמת האפליקציה או ברמת
NotificationChannel
, צריך לבטל את הענקת ההרשאה הזמנית לאפליקציות שמטרגטות SDK מגרסה 13 ואילך. לאחר מכן, האפליקציות יצטרכו לבקש מהמשתמשים הרשאה כדי להמשיך לשלוח התראות.אם לאפליקציה משודרגת שמטרגטת את Android 13 אין כרגע הרשאת התראות באמצעות ההרשאה הזמנית לשדרוג, והמשתמש הפעיל אותה לפחות פעם אחת, האפליקציה חייבת להציג בקשה להרשאת התראות לפני שתהיה לה אפשרות להפעיל שירותים נוספים בחזית.
באפליקציות עם גרסה של Target SDK נמוכה מ-Android 13, צריך לעצור את ההפעלה הראשונה של הפעילות אחרי שהאפליקציה יצרה לפחות אירוע
NotificationChannel
אחד, כדי להציג בקשה לקבלת הרשאה שבה המשתמש יתבקש לבחור אם הוא רוצה לקבל התראות מהאפליקציה.אם משתמש מוגדר בעבר להתאמה אישית של התראות ברמת האפליקציה או ברמת
NotificationChannel
לאפליקציה במכשיר המשדרג או בגיבוי ששוחזר למכשיר, צריך להעביר את ההגדרה ברמת האפליקציה למערכת ההרשאות עם הדגלFLAG_PERMISSION_USER_SET
. אין להציג למשתמש בקשה נוספת להרשאה, אלא אם האפליקציה מבקשת זאת באופן ספציפי.
הגיבוי והשחזור חייבים להיות תואמים לאחור ולפנים בין מכשיר עם Android 13 לבין מכשיר עם גרסת מערכת הפעלה קודמת. נתוני גיבוי שנוצרו במכשיר עם Android 13 צריכים להיות משוחזרים לגרסה קודמת של מערכת ההפעלה, ונתוני גיבוי שנוצרו בגרסה קודמת של מערכת ההפעלה צריכים להיות משוחזרים במכשיר עם Android 13.
התראות מדיה שמשויכות להפעלת מדיה פעילה חייבות להיות פטורות מההרשאה לשליחת התראות.
אימות שינויים במערכות ההתראות וההרשאות
כדי לאמת את ההטמעה, מריצים את הבדיקות הבאות:
בדיקות יחידה כפי שמפורט ב-
PreferencesHelperTest
,NotificationManagerServiceTest
.כל בדיקה ידנית שבה נבדקות השדרוגים והגיבוי והשחזור.
כל בדיקת מערכת של CTS להרשאות והתראות ששולחת התראות. חלק מהבדיקות האלה נמצאות ב-cts/tests/tests/permission/, ב-NotificationManagerTest.java וב-cts/tests/tests/notificationLegacy/.