Auf dieser Seite werden Best Practices für das Anfordern und Verwalten von Berechtigungen zur Standortermittlung im Hintergrund beschrieben.
Berechtigung zur Standortermittlung „Immer zulassen“ anfordern
Ab Android 14 müssen Apps die Berechtigung ACCESS_BACKGROUND_LOCATION
haben, um auf den Standort des Nutzers zugreifen zu können.
Das Navigation SDK enthält diese Berechtigung in seiner Manifestdatei. Sie müssen sie also nicht explizit anfordern, sofern sie nicht für andere Zwecke erforderlich ist. Durch die Gradle-Manifest-Zusammenführung wird sie mit dem Manifest der App zusammengeführt.
Die Berechtigung ACCESS_BACKGROUND_LOCATION
reicht jedoch nicht aus, um im Hintergrund auf den Standort zuzugreifen. Wir empfehlen Ihnen, von den Nutzern die Berechtigung „Immer erlauben“ anzufordern. So kann die App im Hintergrund ausgeführt werden und Benachrichtigungen anzeigen, was die Standortgenauigkeit während der Navigation maximiert.
Nutzer sollten in der Aufforderung erklärt werden, wie sich die Standortgenauigkeit und die Navigation verbessern, wenn die App im Hintergrund ausgeführt wird.
Weitere Informationen zum Anfordern des Standortzugriffs finden Sie in der Android-Entwicklerdokumentation unter Standortberechtigungen anfordern | Sensoren und Standort | Android-Entwickler.
Sorgen Sie für eine ordnungsgemäße Bereinigung von Navigationsbenachrichtigungen.
Damit Ihre App Benachrichtigungen nicht beibehält, nachdem sie nicht mehr benötigt werden, führen Sie die folgenden Schritte zur Bereinigung aus:
- Nachdem Sie
startGuidance()
aufgerufen haben, müssen Sie entwederstopGuidance()
oderclearDestination()
aufrufen. - Nachdem Sie
ArrivalListener
registriert haben, müssen Sie es wieder abmelden. - Nachdem Sie
RoadSnappedLocationProvider
registriert haben, müssen Sie es wieder abmelden.
Wenn Sie diese Schritte ausführen, werden Benachrichtigungen nicht beibehalten, wenn sie nicht mehr benötigt werden. Dies kann zu einer schnelleren Akkuentladung und möglichen Arbeitsspeicherlecks führen.
Wenn Sie die Methoden NavigationApi#initForegroundServiceManager noch einmal aufrufen, müssen Sie zuerst NavigationApi#clearForegroundServiceManager aufrufen.
Wenn Ihre App die ForegroundServiceManager
verwendet, rufen Sie NavigationApi#clearForegroundServiceManager
vor NavigationApi#initForegroundServiceManagerProvider
auf. Wenn Sie die ForegroundServiceManager
bereits initialisiert haben, rufen Sie NavigationApi#initForegroundServiceManagerMessageAndIntent
auf. So können Sie die Benachrichtigungs-ID oder den Benachrichtigungsinhalt aktualisieren, nachdem Sie den Dienstmanager im Vordergrund initialisiert haben.
Neue Einschränkungen in Android 14
Mit Android 14 (Android U) wurden neue Einschränkungen für Apps eingeführt, die im Hintergrund auf den Standort des Nutzers zugreifen. Um diese Änderungen zu mildern, wurde das Navigation SDK in Version 5.4.0 aktualisiert, um den Zugriff auf die Standortermittlung im Hintergrund besser zu verwalten. Wir empfehlen Ihnen außerdem, Ihre Implementierung zu aktualisieren, damit Ihre App weiterhin auf die genauesten Standortdaten zugreifen kann.
Auswirkungen von Änderungen in Android 14 auf das Navigation SDK
Wenn Sie startGuidance()
in Ihrer App aufrufen, zeigt der Dienst im Vordergrund Nutzerbenachrichtigungen für die Schritt-für-Schritt-Navigation an. Für die detaillierte Routenführung muss der Standort des Nutzers abgerufen werden können, um die Route zu aktualisieren und die richtige visuelle und akustische Anleitung anzuzeigen. Ab Android 14 ist für den Zugriff auf den genauen Standort des Nutzers im Hintergrund die Berechtigung des Nutzers erforderlich. Wenn eine App nicht die Berechtigung des Nutzers für den Zugriff auf die Standortermittlung im Hintergrund hat und versucht, einen Dienst im Vordergrund für Standortaktualisierungen zu starten, löst das System standardmäßig eine SecurityException
aus, wodurch die App abstürzt.
So wird dieses Problem durch das Navigation SDK minimiert
Ab Version 5.4.0 wird dies vom Navigations-SDK SecurityException
behandelt, ohne dass die App beeinträchtigt wird. Die Navigation kann also weiterhin im Hintergrund ausgeführt werden. Außerdem enthält das Navigations-SDK die Berechtigung ACCESS_BACKGROUND_LOCATION
in seiner AndroidManifest
. So muss die Berechtigung nicht in Ihrer App selbst deklariert werden, da sie durch das Gradle-Mergen verarbeitet wird. Wenn dem Nutzer jedoch keine Benachrichtigung angezeigt wird, bevor die App in den Hintergrund wechselt, muss das Navigations-SDK Standortaktualisierungen vom System abrufen. Diese Systemupdates sind möglicherweise nicht häufig oder präzise und führen zu einer suboptimalen Navigation. Wir empfehlen daher, Nutzer auch um Zugriff auf die Standortermittlung im Hintergrund zu bitten.
Was App-Entwickler tun können, um die Standortgenauigkeit für die Navigation zu verbessern
Sie können die Genauigkeit des vom Navigations-SDK verwendeten Standortsignals verbessern, indem Sie Ihre App so aktualisieren, dass Nutzer zum Zugriff auf die Standortermittlung im Hintergrund aufgefordert werden. Weitere Informationen finden Sie unter Berechtigung zur Standortermittlung „Immer zulassen“ anfordern.