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

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

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

החל מגרסה 14 של Android, אפליקציות צריכות את ההרשאה 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, ערכת ה-SDK של הניווט מטפלת באירוע SecurityException בלי להשפיע על האפליקציה, ומאפשרת לניווט להמשיך לפעול ברקע. בנוסף, Navigation SDK כולל את ההרשאה ACCESS_BACKGROUND_LOCATION ב-AndroidManifest שלו. כך האפליקציה לא צריכה להצהיר על ההרשאה בעצמה, כי המיזוג ב-Gradle יטפל בזה. עם זאת, אם לא תוצג התראה למשתמש לפני שהאפליקציה תעבור לרקע, ה-Navigation SDK יסמוך על המערכת כדי לספק עדכוני מיקום. יכול להיות שעדכוני המערכת האלה לא יהיו תדירים או מדויקים, וכתוצאה מכך חוויית הניווט תהיה פחות טובה. לכן מומלץ לבקש מהמשתמשים גם גישה למיקום ברקע.

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

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