בקשת הרשאות ב-Wear OS

keywords: wear, permissions, collection_guideslandingwear image_path: images/training/wear/multiple_permissions.png

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

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

תרחישים של הרשאות

יש כמה תרחישים שיכולים לקרות כשמבקשים הרשאות מסוכנות ב-Wear OS:

  • אפליקציית Wear מבקשת הרשאות לאפליקציה שפועלת במכשיר הלביש.

  • אפליקציית Wear מבקשת הרשאות לאפליקציה שפועלת בטלפון.

  • אפליקציית הטלפון מבקשת הרשאות לאפליקציה שפועלת במכשיר הלביש.

  • אפליקציית הטלפון מבקשת כמה הרשאות שאפשר להשתמש בהן רק כשהמכשיר הלביש מחובר.

כדי לראות את כל התרחישים האלה באפליקציה פעילה, אפשר לעיין בדוגמה ExerciseSampleCompose ב-GitHub.

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

בקשה להרשאה לשימוש במכשיר לביש באפליקציית Wear

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

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

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

מסכי הרשאות מרובים, אחד אחרי השני.
איור 1. מסכי הרשאות שמופיעים ברצף.

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

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

אפליקציית Wear מפנה את המשתמש לטלפון כדי להעניק הרשאה.
איור 2. המשתמש צריך לעבור לטלפון כדי לאשר את ההרשאה.

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

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

אפליקציית הטלפון שולחת את המשתמש למכשיר הלביש כדי להעניק הרשאה.
איור 3. שולחים את המשתמש למכשיר הלביש כדי להעניק הרשאה.

אפליקציית הטלפון מבקשת כמה הרשאות בבת אחת

איור 4. תיבת דו-שיח של הרשאות שמשתמשת בפרופיל של מכשיר משני כדי לבקש כמה הרשאות בבקשה אחת.

אפליקציות של שותפים ב-Android 12 (רמת API‏ 31) ומעלה יכולות להשתמש בפרופילים של מכשירים נלווים כשהן מתחברות לשעון. השימוש בפרופיל מפשט את תהליך ההרשמה כי הוא מאפשר להעניק קבוצה של הרשאות ספציפיות לסוג המכשיר בשלב אחד.

ההרשאות שכלולות בחבילה ניתנות לאפליקציה הנלווית ברגע שהמכשיר מתחבר, והן תקפות רק בזמן שהמכשיר משויך. מחיקת האפליקציה או הסרת השיוך יסירו את ההרשאות. פרטים נוספים זמינים במאמר AssociationRequest.Builder.setDeviceProfile().

דפוסים של בקשות הרשאה

יש דפוסים שונים לבקשת הרשאות מהמשתמשים. לפי סדר העדיפות:

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

  • הסבר בהקשר כשסיבת הבקשה להרשאה לא ברורה וההרשאה לא נחוצה להרצת האפליקציה כולה.

הדפוסים האלה מוסברים בקטעים הבאים.

שאלות בהקשר

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

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

האפליקציה מבקשת הרשאה רק כשברור שהיא נחוצה.
איור 5. בקשת הרשאה בהקשר.

הסבר בהקשר

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

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

כשהאפליקציה צריכה את ההרשאה, היא מסבירה למה היא נחוצה.
איור 6. הסבר בהקשר.

טיפול בדחייה

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

באיור 7 מוצג סמל של מנעול שמציין שתכונה נעולה כי המשתמש לא העניק הרשאה להשתמש בה.

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

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

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

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

הרשאות לשירותים

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

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

הגדרות

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

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

המשתמש יכול לשנות את ההרשאות דרך אפליקציית ההגדרות.
איור 9. המשתמש יכול לשנות את ההרשאות באמצעות אפליקציית ההגדרות.