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