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

פלטפורמת 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 Debug Bridge‏ (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 Cloud Messaging ‏ (FCM) כדי לשפר את האמינות של העברת הודעות FCM בעדיפות גבוהה באפליקציות שמוצגות בהן התראות בתגובה להודעות FCM בעדיפות גבוהה. השינויים הבאים בוצעו ב-Android 13 (רמת API 33):

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

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

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

פרטיות

הרשאה בזמן ריצה להתראות

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

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

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

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

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

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

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

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

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