Bu sayfada, arka planda konum kullanımı izinlerini isteme ve yönetmeyle ilgili en iyi uygulamalar açıklanmaktadır.
"Her zaman izin ver" konum izinlerini isteme
Android 14'ten itibaren uygulamaların, kullanıcının konumuna erişebilmesi için ACCESS_BACKGROUND_LOCATION
iznine sahip olması gerekir.
Navigation SDK'sı bu izni manifest dosyasına dahil eder. Bu nedenle, Gradle manifest birleştirme aracı iznin uygulamanın manifest dosyasıyla birleştirilmesini sağlayacağından, izni açıkça istemeniz gerekmez (başka amaçlar için gerekli değilse).
Ancak arka planda konuma erişmek için ACCESS_BACKGROUND_LOCATION
iznine sahip olmak yeterli değildir. Kullanıcılardan "Her zaman izin ver" konum izinlerini istemenizi öneririz. Bu sayede uygulama arka planda çalışabilir ve bildirimler gösterebilir. Bu da gezinme sırasında konum doğruluğunu en üst düzeye çıkarır.
İstemde, kullanıcılara iznin verilmesinin konum doğruluğunu ve uygulama arka planda çalışırken gezinme deneyimlerini nasıl iyileştireceği açıklanmalıdır.
Kullanıcılardan konum erişimi isteme hakkında daha fazla bilgi için Android geliştirici dokümanlarında Konum izinleri isteme | Sensörler ve konum | Android Developers başlıklı makaleyi inceleyin.
Gezinme bildirimlerinin düzgün şekilde temizlendiğinden emin olun
Uygulamanızın, artık gerekli olmayan bildirimleri etkin durumda tutmaması için aşağıdaki temizleme adımlarını uyguladığınızdan emin olun:
startGuidance()
çağrıldıktan sonrastopGuidance()
veyaclearDestination()
çağrılmalıdır.ArrivalListener
'ü kaydettikten sonra kaydını iptal ettiğinizden emin olun.RoadSnappedLocationProvider
öğesini kaydettikten sonra kaydını iptal ettiğinizden emin olun.
Bu adımları tamamlamak, artık gerekli olmayan bildirimlerin etkin kalmasını önler. Bu da pilin tükenmesine ve olası bellek sızıntılarına neden olabilir.
NavigationApi#initForegroundServiceManager yöntemlerini yeniden çağırırken önce NavigationApi#clearForegroundServiceManager'ı çağırın
Uygulamanız ForegroundServiceManager
kullanıyorsa NavigationApi#initForegroundServiceManagerProvider
'yi çağırmadan önce NavigationApi#clearForegroundServiceManager
'yi çağırın. ForegroundServiceManager
'yi zaten başlattıysanız NavigationApi#initForegroundServiceManagerMessageAndIntent
'ı çağırın. Ön plan hizmet yöneticisini başlattıktan sonra bildirim kimliğini veya bildirim içeriğini güncellemek için bunu yapabilirsiniz.
Android 14'te kullanıma sunulan yeni kısıtlamalar hakkında
Android 14 (Android U), arka planda kullanıcının konumuna erişen uygulamalar için yeni kısıtlamalar getirdi. Bu değişikliklerin azaltılmasına yardımcı olmak için Navigasyon SDK'sı, arka planda konum erişimini daha iyi yönetmek amacıyla 5.4.0 sürümünde güncellendi. Ayrıca, uygulamanızın en doğru konum verilerine erişmeye devam etmesini sağlamak için uygulamanızı güncellemenizi öneririz.
Android 14'teki değişiklikler Navigasyon SDK'sını nasıl etkiler?
Uygulamanızda startGuidance()
işlevini çağırdığınızda ön plan hizmeti, adım adım yol tarifi için kullanıcı bildirimleri göstermeye başlar. Adım adım yol tarifi, rotayı güncellemek ve doğru görsel ve işitsel rehberliği göstermek için kullanıcının konumuna erişilebilmesine bağlıdır. Android 14'ten itibaren, arka planda kullanıcının 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 bir SecurityException
atar ve uygulamanın kilitlenmesine neden olur.
Navigasyon SDK'sı bu sorunu nasıl azaltır?
5.4.0 sürümünden itibaren Navigasyon SDK'sı, uygulamayı etkilemeden bu SecurityException
işlemini gerçekleştirir ve navigasyonun arka planda çalışmaya devam etmesini sağlar. Ayrıca Gezinme SDK'sı, AndroidManifest
içinde ACCESS_BACKGROUND_LOCATION
iznini içerir. Bu sayede, Gradle birleştirme işlemini gerçekleştireceği için uygulamanızın izni kendisinin beyan etmesi gerekmez. Ancak uygulama arka plana geçmeden önce kullanıcıya bildirim gösterilmezse Navigasyon SDK'sı, konum güncellemeleri sağlamak için sisteme güvenir. Bu sistem güncellemeleri sık veya doğru olmayabilir ve yetersiz bir gezinme deneyimine neden olabilir. Bu nedenle, kullanıcılardan arka planda konum erişimi isteğinde bulunmanızı da öneririz.
Uygulama geliştiriciler, navigasyon için konum doğruluğunu iyileştirmek amacıyla neler yapabilir?
Uygulamanızı, kullanıcılardan arka planda konum erişimi isteyecek şekilde güncelleyerek Navigasyon SDK'sı tarafından kullanılan konum sinyalinin doğruluğunu artırabilirsiniz. Daha fazla bilgi için "Her zaman izin ver" konum izni isteğinde bulunma başlıklı makaleyi inceleyin.