שינויים בהתנהגות: כל האפליקציות

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

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

ביצועים וסוללה

מנהל המשימות

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

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

שיפור הטיפול במשימות בשליפה מראש באמצעות JobScheduler

JobScheduler מאפשר לאפליקציות לסמן משימות ספציפיות כ'שליפה מראש' עבודות (באמצעות JobInfo.Builder.setPrefetch()), כלומר, הן אמורות לפעול לקראת השקת האפליקציה הבאה ולפניה, במטרה לשפר את חוויית המשתמש. בעבר, JobScheduler השתמש באות רק כדי לאפשר משימות של שליפה מראש (prefetch) להשתמש מדי פעם בנתונים חופשיים או עודפים.

בגרסה Android 13 (רמת API 33) ואילך, המערכת מנסה המערכת קובעת מתי אפליקציה תושק בפעם הבאה, ומשתמשת בהערכה כדי לפעול של משימות שליפה מראש (prefetch). האפליקציות צריכות לנסות להשתמש במשימות לשליפה מראש (prefetch) לכל עבודה שהיא רוצה שצריך לבצע לפני ההשקה הבאה של האפליקציה.

ניצול משאבי הסוללה

מערכת Android 13 (רמת API 33) מספקת את הדרכים הבאות לשיפור המערכת ניהול חיי הסוללה במכשיר:

במהלך הבדיקה של האפליקציה עם השינויים האלה, חשוב לבדוק את הדברים הבאים דברים:

  • אפשר לבדוק איך האפליקציה מגיבה כשהמערכת מציבה אותה בקטע 'מוגבל' אפליקציה קטגוריית המתנה. משתמשים ב באמצעות הפקודה של Android Debug Bridge (ADB) כדי להקצות את האפליקציה לקטגוריה הזו:

    adb shell am set-standby-bucket PACKAGE_NAME restricted
    
  • אפשר לבדוק איך האפליקציה מגיבה להגבלות הבאות שחלות בדרך כלל לאפליקציות שנמצאות בסיווג של "מוגבל" מדינה (State) לשימוש בסוללה ברקע:

    • אי אפשר להפעיל שירותים שפועלים בחזית
    • שירותים קיימים שפועלים בחזית יוסרו מהחזית
    • ההתראות לא מופעלות
    • המשימות לא מבוצעות

    צריך להשתמש בפקודת ה-ADB הבאה כדי למקם את האפליקציה בקטגוריה 'מוגבלת' מדינה:

    adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND ignore
    

מכסות בעדיפות גבוהה של הודעות ענן ב-Firebase (FCM)

מערכת Android 13 (רמת API 33) מעדכנת את המכסות להעברת הודעות בענן ב-Firebase (FCM) כדי לשפר את המהימנות של שליחת הודעות FCM בעדיפות גבוהה, לאפליקציות שמציגות התראות בתגובה ל-FCM עם עדיפות גבוהה. השינויים הבאים השתנו ב-Android 13 (רמת API 33):

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

כמו בגרסאות קודמות של Android, מנהלי FCM עם עדיפות גבוהה שחורגים מהמכסה, יורדים לאחור לעדיפות רגילה. כשמפעילים את שירותים שפועלים בחזית (FGS) בתגובה ל-FCM, מומלץ לבדוק את התוצאה של RemoteMessage.getPriority() ולוודא שהיא PRIORITY_HIGH ו/או לטפל בחריגים אפשריים ForegroundServiceStartNotAllowedException.

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

פרטיות

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

ב-Android 13 (רמת API 33) חדש: סביבת זמן ריצה הרשאה לשליחת התראות: POST_NOTIFICATIONS. השינוי הזה יעזור למשתמשים להתמקד בהתראות שהכי חשובות אותם.

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

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

הסתרת תוכן רגיש מהלוח

אם האפליקציה מאפשרת למשתמשים להעתיק תוכן רגיש, כמו סיסמאות או קרדיט פרטי הכרטיס, ללוח צריך להוסיף דגל ClipDescription לפני השיחה עם ClipboardManager#setPrimaryClip(). ההוספה מתבצעת הדגל הזה מונע הופעה של תוכן רגיש בתצוגה המקדימה של התוכן.

תצוגה מקדימה של הטקסט שהועתק בלי לסמן תוכן רגיש
תצוגה מקדימה של הטקסט שהועתק בלי לסמן תוכן רגיש.
תצוגה מקדימה של הטקסט שהועתק מסמן תוכן רגיש.
תצוגה מקדימה של הטקסט שהועתק מסמן תוכן רגיש.

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


// When your app is compiled with the API level 33 SDK or higher
clipData.apply {
    description.extras = PersistableBundle().apply {
        putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)
    }
}

// If your app is compiled with a lower SDK
clipData.apply {
    description.extras = PersistableBundle().apply {
        putBoolean("android.content.extra.IS_SENSITIVE", true)
    }
}

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

אבטחה

מעבר ממזהה משתמש משותף

אם האפליקציה משתמשת מאפיין android:sharedUserId והיא כבר לא תלויה בפונקציונליות של המאפיין, אפשר להגדיר android:sharedUserMaxSdkVersion ל-32, כפי שמוצג בקטע הקוד הבא:

<manifest ...>
    <!-- To maintain backward compatibility, continue to use
         "android:sharedUserId" if you already added it to your manifest. -->
    android:sharedUserId="SHARED_PACKAGE_NAME"
    android:sharedUserMaxSdkVersion="32"
    ...
</manifest>

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

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

חוויית משתמש

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

במכשירים עם Android 13 ואילך, המשתמשים יכולים לסגור התראות שמשויכות לחזית שירותים על ידי כברירת מחדל.

פונקציונליות עיקרית

הוסר עותק מדור קודם של הטמעת שירות הדיבור

מערכת Android 13 מסירה את ההטמעה של SpeechService, כולל IME של קול, RecognitionService וגם מודל שמבוסס על כוונה API – מ- אפליקציית Google.

ב-Android 12 התרחשו השינויים הבאים:

  • הפונקציות של SpeechService הועברו אל שירותי הדיבור על ידי Google app, שהפך לספק ברירת המחדל של SpeechService.
  • הפונקציונליות RecognitionService הועברה למערכת Android אפליקציית Intelligence לתמיכה בזיהוי דיבור במכשיר.

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

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