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ştiricisi, uygulamanın manifestiyle birleştirilmesini sağlayacağından (başka amaçlar için gerekmiyorsa) açıkça istemeniz gerekmez.
Ancak arka planda konuma erişmek için ACCESS_BACKGROUND_LOCATION
izninin alınması 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 navigasyon sırasında konum doğruluğunu en üst düzeye çıkarır.
İstem, kullanıcıya izni vermenin 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.ArrivalListener
cihazını kaydettikten sonra kaydını iptal etmeyi unutmayın.RoadSnappedLocationProvider
cihazı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. Bu işlemi, ö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önetmesi sağ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()
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 ö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?
5.4.0 sürümünden itibaren Navigation SDK, bu durumu SecurityException
uygulamayı etkilemeden ele alarak navigasyonun arka planda çalışmaya devam etmesine olanak tanır. Ayrıca, Navigation SDK, 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 izni isteğinde bulunma başlıklı makaleyi inceleyin.