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