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

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

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

הרשאות ב-Android מגרסה 6.0 ואילך

ב-Android 6.0 (רמת API‏ 23) ומעלה, אפליקציות יכולות לבקש הרשאות מהמשתמש בזמן הריצה, ולא לפני ההתקנה. ההרשאה הזו מאפשרת לאפליקציות לבקש הרשאות רק כשהן באמת זקוקות לשירותים או לנתונים שמוגנים על ידי השירותים. השינוי הזה לא משפיע (בהכרח) על ההתנהגות הכוללת של האפליקציה, אבל הוא יוצר כמה שינויים שרלוונטיים לאופן הטיפול בנתוני משתמשים רגישים:

הקשר סיטואציוני מורחב

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

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

גמישות רבה יותר במתן הרשאות

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

הגדלת העומס על העסקאות

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

הרשאות שדורשות הגדרה כמטפל ברירת מחדל

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

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

לדעת עם אילו ספריות אתם עובדים

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

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

הגבלת הגישה למיקום ברקע

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

בדיקה של שני מודלי ההרשאות

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

הטיפים הבאים יעזרו לכם למצוא בעיות בקוד שקשורות להרשאות במכשירים שפועלת בהם רמת API‏ 23 ומעלה:

  • מזהים את ההרשאות הנוכחיות של האפליקציה ואת נתיבי הקוד שקשורים אליהן.
  • בדיקת תהליכי משתמש בשירותים ובנתונים שמוגנים באמצעות הרשאות.
  • כדאי לבדוק שילובים שונים של הרשאות שניתנו או בוטלו. לדוגמה, אפליקציית מצלמה עשויה לכלול ברשימת ההרשאות שלה את CAMERA, READ_CONTACTS ו-ACCESS_FINE_LOCATION. כדאי לבדוק את האפליקציה כשכל אחת מההרשאות האלה מופעלת ומושבתת, כדי לוודא שהאפליקציה יכולה להתמודד עם כל ההגדרות של ההרשאות בצורה חלקה.
  • משתמשים בכלי adb כדי לנהל הרשאות משורת הפקודה:
    • כדי לראות את ההרשאות והסטטוס של קבוצה מסוימת:
      $ adb shell pm list permissions -d -g
    • הענקה או ביטול של הרשאה אחת או יותר:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • ניתוח האפליקציה כדי לזהות שירותים שמשתמשים בהרשאות.

מקורות מידע נוספים