Bu sayfada, arka planda konum kullanım izni isteme ve yönetmeyle ilgili en iyi uygulamalar açıklanmaktadır.
"Her zaman izin ver" konum izinleri isteyin
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ştirici, iznin 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 izinlerini istemenizi öneririz. Bu sayede uygulama arka planda çalışabilir ve bildirim gösterebilir. Bu da navigasyon sırasında konum doğruluğunu en üst düzeye çıkarır.
İstem, kullanıcıya iznin verilmesinin konum doğruluğunu ve uygulama arka planda çalışırken gezinme deneyimini nasıl iyileştireceğini açıklamalıdır.
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 sonrastopGuidance()veyaclearDestination()işlevini çağırdığınızdan emin olun.ArrivalListenercihazını kaydettikten sonra kaydını iptal etmeyi unutmayın.RoadSnappedLocationProvidercihazını kaydettikten sonra kaydını iptal etmeyi unutmayın.
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ız ForegroundServiceManager kullanıyorsa NavigationApi#initForegroundServiceManagerProvider çağırmadan önce NavigationApi#clearForegroundServiceManager, ForegroundServiceManager'yı zaten başlattıysanız NavigationApi#initForegroundServiceManagerMessageAndIntent çağırı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), kullanıcı konumuna arka planda erişen uygulamalarla ilgili yeni kısıtlamalar getirdi. Bu değişikliklerin etkisini azaltmak için Navigation SDK, 5.4.0 sürümünde güncellenerek arka planda konum erişimini daha iyi yönetebilecek şekilde değiştirildi. 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()
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 navigasyon, rotayı güncellemek ve doğru görsel ve sesli rehberliği göstermek için kullanıcının konumuna erişebilmeye bağlıdır. 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 bir ön plan hizmeti başlatmaya çalışırsa sistem SecurityException 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, Navigation SDK'nın AndroidManifest içinde ACCESS_BACKGROUND_LOCATION izni de bulunur. 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 yetersiz olması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 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 izni isteğinde bulunma başlıklı makaleyi inceleyin.