Arka planda konum kullanımıyla ilgili en iyi uygulamalar

Bu sayfada, arka planda konum kullanımı izinleri isteme ve yönetmeyle ilgili en iyi uygulamalar açıklanmaktadır.

"Her zaman izin ver" konum izinleri isteğinde bulunma

Android 14'ten itibaren uygulamaların kullanıcının konumuna erişebilmesi için ACCESS_BACKGROUND_LOCATION iznine sahip olması gerekir. Navigation SDK, bu izni manifest dosyasına eklediğinden Gradle manifest birleştiricisi, uygulamanın manifestiyle birleştirilmesini sağlayacağından (başka amaçlar için gerekmiyorsa) izni açıkça istemeniz gerekmez.

Ancak ACCESS_BACKGROUND_LOCATION iznine sahip olmak, arka planda konuma erişmek için yeterli değildir. Kullanıcılardan "Her zaman izin ver" konum izni istemenizi öneririz. Bu sayede uygulama arka planda çalışabilir ve bildirim gösterebilir. Bu da gezinme sırasında konum doğruluğunu en üst düzeye çıkarır.

İstemde, iznin verilmesinin konum doğruluğunu ve uygulama arka planda çalışırken kullanıcının gezinme deneyimini nasıl iyileştireceği açıklanmalıdır.

örnek izin
iletişimi

Kullanıcılardan konum erişimi isteme hakkında daha fazla bilgi için Android geliştirici belgelerindeki Konum izni isteği | Sensörler ve konum | Android Developers başlıklı makaleyi inceleyin.

Rota izleme bildirimlerinin düzgün şekilde temizlendiğinden emin olun.

Uygulamanızın, artık gerekli olmayan bildirimleri etkin tutmadığından emin olmak için aşağıdaki temizleme adımlarını uyguladığınızdan emin olun:

  • startGuidance() işlevini çağırdıktan sonra stopGuidance() veya clearDestination() işlevini çağırdığınızdan emin olun.
  • ArrivalListener kaydettikten sonra kaydını kaldırdığınızdan emin olun.
  • RoadSnappedLocationProvider kaydettikten sonra kaydını kaldırdığınızdan emin olun.

Bu adımları tamamladığınızda, artık gerekli olmayan bildirimlerin etkin kalması önlenir. Bu durum, pilin boşalmasına ve olası bellek sızıntılarına yol açabilir.

NavigationApi#initForegroundServiceManager yöntemleri yeniden çağrılırken önce NavigationApi#clearForegroundServiceManager çağrılmalıdır.

Uygulamanızda ForegroundServiceManager kullanılıyorsa NavigationApi#initForegroundServiceManagerProvider çağırmadan önce NavigationApi#clearForegroundServiceManager çağırma işlemini yapın. ForegroundServiceManager başlatıldıysa NavigationApi#initForegroundServiceManagerMessageAndIntent çağırma işlemini yapın. Bunu, ön plan hizmeti yöneticisini başlattıktan sonra bildirim kimliğini veya bildirim içeriğini güncellemek için yapabilirsiniz.

Android 14'te kullanıma sunulan yeni kısıtlamalar hakkında

Android 14 (Android U), uygulamaların kullanıcının konumuna arka planda erişimiyle ilgili yeni kısıtlamalar getirdi. Bu değişikliklerin etkisini azaltmak için Navigasyon SDK'sı 5.4.0 sürümünde güncellenerek arka planda konum erişimi daha iyi yönetilmeye başlandı. Uygulamanızın en doğru konum verilerine erişmeye devam etmesini sağlamak için uygulamanızı güncellemenizi de öneririz.

Android 14'teki değişiklikler Navigasyon SDK'sını nasıl etkiler?

Uygulamanızda startGuidance() yöntemini çağırdığınızda ön plan hizmeti, adım adım rota için kullanıcı bildirimleri göstermeye başlar. Adım adım navigasyon, rotayı güncellemek ve doğru görsel ve sesli talimatları göstermek için kullanıcının konumuna erişebilmeyi gerektirir. Android 14'ten itibaren, kullanıcının arka planda tam konumuna erişmek için kullanıcının izni gerekir. Varsayılan olarak, bir uygulamanın arka planda konum erişimi için kullanıcının izni yoksa ve konum güncellemeleri için ön plan hizmeti başlatmaya çalışırsa sistem SecurityException istisnası oluşturarak uygulamanın kilitlenmesine neden olur.

Navigasyon SDK'sı bu sorunu nasıl azaltır?

Navigation SDK, 5.4.0 sürümünden itibaren bu durumu SecurityException uygulamayı etkilemeden ele alarak navigasyonun arka planda çalışmaya devam etmesine olanak tanır. Ayrıca, Navigasyon SDK'sı AndroidManifest içinde ACCESS_BACKGROUND_LOCATION iznini içerir. Bu sayede, Gradle birleştirme işlemi izni işleyeceğinden uygulamanızın izni kendisinin beyan etmesi gerekmez. Ancak uygulama arka plana gitmeden önce kullanıcıya bildirim gösterilmezse Navigation SDK, konum güncellemelerini sağlamak için sisteme güvenir. Bu sistem güncellemeleri sık veya doğru olmayabilir ve bu da gezinme deneyiminin ideal olmamasına neden olabilir. Bu nedenle, kullanıcılardan arka planda konum erişimi izni de istemenizi öneririz.

Uygulama geliştiricilerin, navigasyon için konum doğruluğunu artırmak üzere yapabilecekleri

Uygulamanızı, kullanıcılardan arka planda konum erişimi izni isteyecek şekilde güncelleyerek Navigation SDK tarafından kullanılan konum sinyalinin doğruluğunu artırabilirsiniz. Daha fazla bilgi için "Her zaman izin ver" konum izinleri isteğinde bulunma başlıklı makaleyi inceleyin.