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

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

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

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

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

הרחבת ההקשר של המצב

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

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

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

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

נטל עסקאות גדול יותר

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

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

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

אפשר לקרוא מידע נוסף על handlers שמוגדרים כברירת מחדל, כולל הנחיות להצגת של ה-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> ...
  • בודקים באפליקציה אילו שירותים משתמשים בהרשאות.

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