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