בדף הזה מוסברות שיטות מומלצות לבקשה ולניהול של הרשאות לשימוש במיקום ברקע.
שליחת בקשה להרשאות מיקום 'כן, כל הזמן'
החל מ-Android 14, לאפליקציות צריכה להיות ההרשאה ACCESS_BACKGROUND_LOCATION
כדי לגשת למיקום של המשתמש.
ערכת Navigation SDK כוללת את ההרשאה הזו בקובץ המניפסט שלה, כך שלא צריך לבקש אותה באופן מפורש (אם היא לא נדרשת למטרות אחרות), כי כלי המיזוג של Gradle יבטיח שהיא תמוזג עם המניפסט של האפליקציה.
עם זאת, ההרשאה ACCESS_BACKGROUND_LOCATION
לא מספיקה כדי לגשת למיקום ברקע, ולכן מומלץ לבקש מהמשתמשים הרשאות מיקום מסוג 'תמיד'. כך האפליקציה יכולה לפעול ברקע ולהציג התראות, מה שמגדיל את דיוק המיקום במהלך הניווט.
בהודעה למשתמשים צריך להסביר איך מתן ההרשאה ישפר את הדיוק של נתוני המיקום ואת חוויית הניווט שלהם כשהאפליקציה פועלת ברקע.
מידע נוסף על בקשת גישה למיקום מהמשתמשים זמין במאמר בקשת הרשאות מיקום | חיישנים ומיקום | מפתחי Android במסמכי התיעוד למפתחי Android.
איך מוודאים שההתראות על ניווט נמחקות בצורה תקינה
כדי לוודא שהאפליקציה לא תמשיך להציג התראות אחרי שהן כבר לא נחוצות, צריך לבצע את שלבי הניקוי הבאים:
- אחרי שמפעילים את
startGuidance()
, חשוב להפעיל אתstopGuidance()
או אתclearDestination()
. - אחרי שרושמים את
ArrivalListener
, חשוב לבטל את הרישום שלו. - אחרי שרושמים את
RoadSnappedLocationProvider
, חשוב לבטל את הרישום שלו.
השלמת השלבים האלה מבטיחה שההתראות לא ימשיכו לפעול כשאין בהן יותר צורך, דבר שעלול לגרום לניקוז הסוללה ולדליפות זיכרון.
כשמפעילים מחדש את השיטות NavigationApi#initForegroundServiceManager, צריך להפעיל קודם את השיטה NavigationApi#clearForegroundServiceManager
אם האפליקציה משתמשת ב-ForegroundServiceManager
, צריך להפעיל את NavigationApi#clearForegroundServiceManager
לפני שמפעילים את NavigationApi#initForegroundServiceManagerProvider
. אם כבר הפעלתם את ForegroundServiceManager
, צריך להפעיל את NavigationApi#initForegroundServiceManagerMessageAndIntent
. אפשר לעשות את זה כדי לעדכן את מזהה ההתראה או את תוכן ההתראה אחרי שמפעילים את מנהל השירותים שפועלים בחזית.
מידע על ההגבלות החדשות שהוצגו ב-Android 14
ב-Android 14 (Android U) הוצגו הגבלות חדשות על אפליקציות שגשת למיקום של המשתמש ברקע. כדי לצמצם את ההשפעה של השינויים האלה, גרסה 5.4.0 של Navigation SDK עודכנה כדי לנהל טוב יותר את הגישה למיקום ברקע. מומלץ גם לעדכן את ההטמעה כדי להבטיח שלאפליקציה תהיה גישה לנתוני המיקום המדויקים ביותר.
איך שינויים ב-Android 14 משפיעים על Navigation SDK
כשמפעילים את startGuidance()
באפליקציה, השירות בחזית מתחיל להציג התראות למשתמשים לגבי ניווט מפורט. הניווט באמצעות מסלול מפורט תלוי בגישה למיקום של המשתמש כדי לעדכן את המסלול ולהציג את ההנחיות החזותיות והקוליות הנכונות. החל מ-Android 14, כדי לגשת למיקום המדויק של המשתמש ברקע נדרשת הרשאה מהמשתמש. כברירת מחדל, אם לאפליקציה אין הרשאה מהמשתמש לגישה למיקום ברקע והיא מנסה להפעיל שירות בחזית לעדכוני מיקום, המערכת מציגה SecurityException
, מה שגורם לקריסת האפליקציה.
איך Navigation SDK מפחית את הסיכון לבעיה הזו
החל מגרסה 5.4.0, Navigation SDK מטפל בבעיה הזו SecurityException
בלי להשפיע על האפליקציה, כך שהניווט יכול להמשיך לפעול ברקע. בנוסף, Navigation SDK כולל את ההרשאה ACCESS_BACKGROUND_LOCATION
ב-AndroidManifest
שלו. כך האפליקציה לא צריכה להצהיר על ההרשאה בעצמה, כי Gradle יטפל במיזוג. עם זאת, אם לא מוצגת למשתמש התראה לפני שהאפליקציה עוברת לרקע, ה-Navigation SDK יסתמך על המערכת כדי לספק עדכוני מיקום. יכול להיות שעדכוני המערכת האלה לא יהיו תכופים או מדויקים, ושהם יפגעו בחוויית הניווט. לכן, אנחנו ממליצים לבקש מהמשתמשים גם גישה למיקום ברקע.
מה מפתחי אפליקציות יכולים לעשות כדי לשפר את הדיוק של נתוני המיקום לניווט
כדי לשפר את הדיוק של אות המיקום שבו נעשה שימוש ב-Navigation SDK, צריך לעדכן את האפליקציה כך שתבקש מהמשתמשים גישה למיקום ברקע. מידע נוסף זמין במאמר בנושא בקשת הרשאות מיקום מסוג 'כן, כל הזמן'.