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

פלטפורמת 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 Cloud Messaging ‏ (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, ולא לקודד באופן קשיח אפליקציה ספציפית.