בקשות הרשאה מגינות על מידע רגיש שזמין מהמכשיר, וצריך להשתמש בהן רק כשגישה למידע נחוצה לתפקוד של האפליקציה. במסמך הזה מפורטות טיפים לגבי דרכים שבהן אפשר להשיג את אותה פונקציונליות (או טובה יותר) בלי לבקש גישה למידע הזה. זה לא דיון מקיף לגבי האופן שבו ההרשאות פועלות במערכת ההפעלה של Android.
סקירה כללית יותר על הרשאות ב-Android זמינה במאמר סקירה כללית על הרשאות. למידע נוסף על עבודה עם הרשאות בקוד, תוכלו לקרוא את המאמר בקשת הרשאות לאפליקציה.
הרשאות ב-Android מגרסה 6.0 ואילך
ב-Android 6.0 (רמת API 23) ואילך, אפליקציות יכולות לבקש הרשאות מהמשתמש בזמן ריצה, במקום לפני ההתקנה. כך האפליקציות יכולות לבקש הרשאות רק כשהן באמת זקוקות לשירותים או לנתונים שמוגנים על ידי השירותים. השינוי הזה לא משנה (בהכרח) את ההתנהגות הכוללת של האפליקציה, אבל הוא גורם לכמה שינויים שרלוונטיים לאופן שבו מטפלים בנתוני משתמשים רגישים:
הרחבת ההקשר של המצב
המשתמשים מתבקשים להביע הסכמה לקבלת גישה לפונקציונליות שמכוסה בקבוצות ההרשאות האלה בזמן הריצה, בהקשר של האפליקציה. המשתמשים רגישים יותר להקשר שבו מבקשים הרשאה, ואם יש חוסר התאמה בין הבקשה שלך לבין מטרת האפליקציה שלך, חשוב עוד יותר לספק למשתמש הסבר מפורט לגבי הסיבה לבקשת ההרשאה. כשהדבר אפשרי, כדאי לספק הסבר לגבי הבקשה גם בזמן שליחת הבקשה וגם בתיבת דו-שיח שלאחר מכן, אם המשתמש דוחה את הבקשה.
כדי להגדיל את הסיכוי שהבקשה להרשאה תאושר, כדאי להציג את ההודעה רק כשיש צורך בתכונה ספציפית. לדוגמה, אפשר לבקש גישה למיקרופון רק כשהמשתמש לוחץ על לחצן המיקרופון. יש סיכוי גבוה יותר שהמשתמשים יאשרו הרשאה שהם מצפים לה.
גמישות רבה יותר במתן הרשאות
המשתמשים יכולים לדחות גישה להרשאות ספציפיות בזמן שהבקשה מתקבלת וגם בהגדרות, אבל יכול להיות שהם עדיין יישארו מופתעים כשהפונקציונליות תיפגע כתוצאה מכך. מומלץ לעקוב אחרי מספר המשתמשים שמסרבים להעניק הרשאות (למשל באמצעות Google Analytics), כדי שתוכלו לשנות את האפליקציה כדי להימנע מהתלות בהרשאה הזו או לספק הסבר טוב יותר לגבי הסיבה שבגללה אתם זקוקים להרשאה הזו כדי שהאפליקציה תפעל כמו שצריך. בנוסף, חשוב לוודא שהאפליקציה מטפלת במקרים חריגים שבהם משתמשים דוחים בקשות להרשאות או משביתים את ההרשאות בהגדרות.
עומס עסקאות מוגבר
המשתמשים מתבקשים להעניק גישה לקבוצות הרשאות בנפרד, ולא כקבוצה. לכן חשוב מאוד לצמצם את מספר ההרשאות שמבקשים. כך עולה העומס על המשתמשים בקשר להענקת ההרשאות, וכתוצאה מכך עולה הסבירות שלפחות אחת מהבקשות תידחה.
הרשאות שדורשות להפוך למטפל ברירת המחדל
אפליקציות מסוימות תלויות בגישה למידע רגיש של משתמשים שקשור ליומני שיחות ולהודעות SMS. אם אתם רוצים לבקש את ההרשאות הספציפיות ליומני שיחות ולהודעות SMS ולפרסם את האפליקציה ב-Play Store, עליכם לבקש מהמשתמש להגדיר את האפליקציה שלכם כhandler שמוגדר כברירת מחדל לפונקציה מרכזית במערכת לפני שתבקש את ההרשאות האלה לזמן ריצה.
למידע נוסף על handlers שמוגדרים כברירת מחדל, כולל הנחיות להצגת ההנחיה של ה-handler שמוגדר כברירת מחדל למשתמשים, עיינו במדריך בנושא הרשאות שמשמשות רק ב-handlers שמוגדרים כברירת מחדל.
חשוב להכיר את הספריות שאיתן אתם עובדים
לפעמים נדרשות הרשאות לספריות שבהן אתם משתמשים באפליקציה. לדוגמה, יכול להיות שספריות של מודעות וניתוח נתונים יצטרכו גישה לקבוצת ההרשאות 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> ...
- הצגת רשימה של ההרשאות והסטטוס לפי קבוצה:
- בודקים באפליקציה אילו שירותים משתמשים בהרשאות.
מקורות מידע נוספים
- הנחיות של Material Design בנושא הרשאות ל-Android
- Android Marshmallow 6.0: Asking For Permission: בסרטון הזה מוסבר מודל ההרשאות בזמן ריצה של Android והדרך הנכונה לבקש מהמשתמשים הרשאות.
- להסביר למה נדרשות הרשאות לאפליקציה
- שיטות מומלצות למזהים ייחודיים