Best Practices für die Standortermittlung im Hintergrund

Auf dieser Seite werden Best Practices für das Anfordern und Verwalten von Berechtigungen für die Verwendung von Standortdaten im Hintergrund erläutert.

Berechtigungen für die Standortermittlung „Immer zulassen“ anfordern

Ab Android 14 müssen Apps die ACCESS_BACKGROUND_LOCATION Berechtigung haben, um auf den Standort des Nutzers zuzugreifen. 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 benötigt wird), da der Gradle-Manifest-Merger dafür sorgt, dass sie mit dem Manifest der App zusammengeführt wird.

Die Berechtigung ACCESS_BACKGROUND_LOCATION reicht jedoch nicht aus, um im Hintergrund auf den Standort zuzugreifen. Wir empfehlen, Nutzer um die Berechtigung für die Standortermittlung „Immer zulassen“ zu bitten. So kann die App im Hintergrund ausgeführt werden und Benachrichtigungen anzeigen, wodurch die Standortgenauigkeit während der Navigation maximiert wird.

In der Aufforderung sollte Nutzern erklärt werden, wie sich die Standortgenauigkeit verbessert und wie sich die Navigation verbessert, wenn die App im Hintergrund ausgeführt wird.

Beispiel für Berechtigungsdialogfeld

Weitere Informationen zum Auffordern von Nutzern, den Standortzugriff zu gewähren, finden Sie in der Android-Entwicklerdokumentation unter Berechtigungen für die Standortermittlung anfordern | Sensoren und Standort | Android Entwickler.

Ordnungsgemäße Bereinigung von Navigationsbenachrichtigungen sicherstellen

Damit Benachrichtigungen nicht mehr angezeigt werden, wenn sie nicht mehr benötigt werden, müssen Sie die folgenden Bereinigungsschritte ausführen:

  • Nach dem Aufrufen von startGuidance() müssen Sie entweder stopGuidance() oder clearDestination() aufrufen.
  • Nach der Registrierung von ArrivalListener müssen Sie die Registrierung aufheben.
  • Nach der Registrierung von RoadSnappedLocationProvider müssen Sie die Registrierung aufheben.

Wenn Sie diese Schritte ausführen, werden Benachrichtigungen nicht mehr angezeigt, wenn sie nicht mehr benötigt werden. Dies kann zu einer schnelleren Entladung des Akkus und möglichen Speicherlecks führen.

Beim erneuten Aufrufen von NavigationApi#initForegroundServiceManager-Methoden zuerst NavigationApi#clearForegroundServiceManager aufrufen

Wenn Ihre App den ForegroundServiceManager verwendet, rufen Sie NavigationApi#clearForegroundServiceManager auf, bevor Sie NavigationApi#initForegroundServiceManagerProvider aufrufen. Wenn Sie den ForegroundServiceManager bereits initialisiert haben, rufen Sie NavigationApi#initForegroundServiceManagerMessageAndIntent auf. So können Sie die Benachrichtigungs-ID oder den Benachrichtigungsinhalt aktualisieren, nachdem Sie den Dienstmanager für Dienste im Vordergrund initialisiert haben.

Neue Einschränkungen in Android 14

In 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 minimieren, wurde das Navigation SDK in Version 5.4.0 aktualisiert, um den Zugriff auf die Standortermittlung im Hintergrund besser zu verwalten. Wir empfehlen außerdem, Ihre Implementierung zu aktualisieren, damit Ihre App weiterhin Zugriff auf die genauesten Standortdaten hat.

Auswirkungen der Änderungen in Android 14 auf das Navigation SDK

Wenn Sie startGuidance() in Ihrer App aufrufen, werden im Vordergrunddienst Benachrichtigungen für die detaillierte Routenführung angezeigt. Die detaillierte Routenführung ist davon abhängig, dass auf den Standort des Nutzers zugegriffen werden kann, um die Route zu aktualisieren und die richtige visuelle und akustische Anleitung zu geben. Ab Android 14 ist für den Zugriff auf den genauen Standort des Nutzers im Hintergrund die Erlaubnis des Nutzers erforderlich. Wenn eine App nicht die Erlaubnis des Nutzers für 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.

Wie das Navigation SDK dieses Problem minimiert

Ab Version 5.4.0 verarbeitet das Navigation SDK diese SecurityException, ohne die App zu beeinträchtigen. So kann die Navigation im Hintergrund weiter ausgeführt werden. Außerdem enthält das Navigation SDK die Berechtigung ACCESS_BACKGROUND_LOCATION in seinem AndroidManifest. So muss Ihre App die Berechtigung nicht selbst deklarieren, da die Zusammenführung in Gradle dies übernimmt. Wenn dem Nutzer jedoch keine Benachrichtigung angezeigt wird, bevor die App in den Hintergrund geht, verwendet das Navigation SDK das System, um Standortaktualisierungen zu erhalten. Diese Systemaktualisierungen sind möglicherweise nicht häufig oder genau und führen zu einer suboptimalen Navigation. Aus diesem Grund empfehlen wir, Nutzer auch um den Zugriff auf die Standortermittlung im Hintergrund zu bitten.

Möglichkeiten für App-Entwickler, die Standortgenauigkeit für die Navigation zu verbessern

Sie können die Genauigkeit des vom Navigation SDK verwendeten Standortsignals verbessern, indem Sie Ihre App so aktualisieren, dass Nutzer um den Zugriff auf die Standortermittlung im Hintergrund gebeten werden. Weitere Informationen finden Sie unter Berechtigungen für die Standortermittlung „Immer zulassen“ anfordern.