ההתראות ב-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, או כל אפליקציה ששוחזרה באמצעות גיבוי ושחזור, חייבת לקבל הרשאה לשלוח התראות עד שהמשתמש יפעיל פעילות מהאפליקציה הזו בפעם הראשונה.
באפליקציות שמטרגטות SDK בגרסאות Android 13 ואילך, אם המשתמש לא התאים אישית בעבר את הגדרות ההתראות של האפליקציה הזו ברמת האפליקציה או ברמת
NotificationChannel
, צריך לבטל את מתן ההרשאה הזמנית. לאחר מכן, האפליקציות יצטרכו לבקש מהמשתמשים הרשאה כדי להמשיך לשלוח התראות.אם לאפליקציה משודרגת שמטרגטת את 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/.