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

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

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

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

מנהל המשימות

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

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

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

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

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

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

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

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

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

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

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

    כדי להעביר את האפליקציה למצב 'מוגבל', משתמשים בפקודת ה-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):

  • ההגדרות של App Standby Buckets כבר לא קובעות כמה הודעות FCM בעדיפות גבוהה אפליקציה יכולה להשתמש בהן.
  • המערכת מורידה עכשיו את העדיפות של הודעות בעדיפות גבוהה אם היא מזהה שאפליקציה שולחת באופן עקבי הודעות בעדיפות גבוהה שלא מובילות להצגת התראה.

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

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

פרטיות

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

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

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

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

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

אם האפליקציה מאפשרת למשתמשים להעתיק תוכן רגיש, כמו סיסמאות או פרטי כרטיס אשראי, ללוח, צריך להוסיף דגל ל-ClipData של 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 הוסרה – כולל Voice IME‏, RecognitionService ו-API מבוסס-intent – מאפליקציית Google.

ב-Android 12, בוצעו השינויים הבאים:

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

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

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