שיטות מומלצות לשימוש במיקום ברקע

בדף הזה מוסברות השיטות המומלצות לבקשה ולניהול של הרשאות שימוש במיקום ברקע.

בקשת הרשאות מיקום מסוג "כן, כל הזמן"

החל מ-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) נוספו הגבלות חדשות על אפליקציות שניגשות למיקום של המשתמש ברקע. כדי לצמצם את ההשפעה של השינויים האלה, עדכנו את Navigation SDK בגרסה 5.4.0 כך שינהל טוב יותר את הגישה למיקום ברקע. אנחנו ממליצים גם לעדכן את ההטמעה כדי לוודא שלאפליקציה תמשיך להיות גישה לנתוני המיקום המדויקים ביותר.

איך השינויים ב-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, אתם יכולים לעדכן את האפליקציה כך שתבקש מהמשתמשים גישה למיקום ברקע. מידע נוסף זמין במאמר בקשת הרשאות מיקום מסוג "כן, כל הזמן".