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 manifestiyle 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. Böylece, gezinme sırasında konum doğruluğu en üst düzeye çıkarılır.
İstemde, kullanıcılara izin vermenin konum doğruluğunu nasıl iyileştireceği ve uygulama arka planda çalışırken navigasyon 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
öğesini kaydettikten sonra kaydını iptal ettiğinizden emin olun.RoadSnappedLocationProvider
kaydettirdikten sonra kaydını iptal etmeyi unutmayın.
Bu adımları tamamladığınızda, artık gerekli olmayan bildirimlerin etkin kalmasını önleyebilirsiniz. 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 uygulamalarla ilgili 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ı bildirimlerini göstermeye başlar. Adım adım navigasyon, 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 uygulama kullanıcının arka planda konum erişimi iznine sahip değilse ve konum güncellemeleri için bir ön plan hizmeti başlatmaya çalışırsa sistem bir SecurityException
göndererek uygulamanın kilitlenmesine neden olur.
Navigation SDK'nın bu sorunu nasıl azalttığı
5.4.0 sürümünden itibaren Navigasyon SDK'sı, uygulamayı etkilemeden bu SecurityException
işlemeyi yürüterek navigasyonun arka planda çalışmaya devam etmesini sağlar. Ayrıca Gezinme SDK'sı, AndroidManifest
içinde ACCESS_BACKGROUND_LOCATION
iznini de 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 tam olmayabilir ve mükemmel olmayan bir gezinme deneyimiyle sonuçlanabilir. Bu nedenle, kullanıcılardan arka planda
konuma erişmelerini de istemenizi öneririz.
Uygulama geliştiriciler, navigasyonda konum doğruluğunu iyileştirmek için 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.