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 ettiğinden, Gradle manifest birleştiricisi bu iznin uygulamanın manifest dosyasıyla birleştirilmesini sağlayacağı için açıkça istemeniz gerekmez (başka amaçlar için gerekmiyorsa).
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. Böylece navigasyon sırasında konum doğruluğu en üst düzeye çıkarılır.
İstemde, izin vermenin konum doğruluğunu nasıl artıracağı ve uygulama arka planda çalışırken navigasyon deneyimini nasıl iyileştireceği kullanıcılara açıklanmalıdır.
Kullanıcılardan konum erişimi isteme hakkında daha fazla bilgi için Android geliştirici belgelerindeki Konum izinleri isteme | Sensörler ve konum | Android Geliştiricileri bölümüne bakın.
Navigasyon bildirimlerinin düzgün şekilde temizlendiğinden emin olun.
Uygulamanızın, artık ihtiyaç duyulmayan bildirimleri etkin tutmadığından emin olmak için aşağıdaki temizleme adımlarını uygulayın:
startGuidance()çağrıldıktan sonrastopGuidance()veyaclearDestination()çağrılmalıdır.ArrivalListenerkaydını yaptıktan sonra kaydı iptal ettiğinizden emin olun.RoadSnappedLocationProviderkaydını yaptıktan sonra kaydı iptal ettiğinizden emin olun.
Bu adımları tamamladığınızda, artık ihtiyaç duyulmayan bildirimler etkin tutulmaz. Bu sayede, pilin tükenmesi ve olası bellek sızıntıları önlenir.
NavigationApi#initForegroundServiceManager yöntemlerini yeniden çağırırken önce NavigationApi#clearForegroundServiceManager yöntemini çağırın.
Uygulamanız ForegroundServiceManager kullanıyorsa NavigationApi#initForegroundServiceManagerProvider yöntemini çağırmadan önce NavigationApi#clearForegroundServiceManager yöntemini çağırın. ForegroundServiceManager yöntemini zaten başlattıysanız NavigationApi#initForegroundServiceManagerMessageAndIntent yöntemini çağırın. Ön plan hizmet yöneticisini başlattıktan sonra bildirim kimliğini veya bildirim içeriğini güncellemek için bu yöntemi kullanabilirsiniz.
Android 14'te getirilen yeni kısıtlamalar hakkında
Android 14 (Android U), uygulamaların kullanıcının konumuna arka planda erişmesiyle ilgili yeni kısıtlamalar getirdi. Bu değişikliklerin etkisini azaltmak için Navigasyon SDK'sı, 5.4.0 sürümünde arka plan konum erişimini daha iyi yönetecek şekilde güncellendi. Ayrıca uygulamanızın en tam konum verilerine erişmeye devam edebilmesi için uygulamanızı güncellemenizi ö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 rota, 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 tam konumuna arka planda erişmek için kullanıcıdan izin alınması gerekir. Varsayılan olarak, bir uygulamanın arka planda konum erişimi için kullanıcı izni yoksa ve konum güncellemeleri için ön plan hizmeti başlatmaya çalışırsa sistem SecurityException hatası verir ve uygulamanın kilitlenmesine neden olur.
Navigation SDK'sı bu sorunu nasıl azaltır?
Navigation SDK, 5.4.0 sürümünden itibaren bu durumu uygulamayı etkilemeden yöneterek navigasyonun arka planda çalışmaya devam etmesini sağlar.SecurityException Ayrıca Navigasyon SDK'sı, AndroidManifest dosyasında ACCESS_BACKGROUND_LOCATION iznini içerir. Bu sayede, Gradle birleştirme işlemi bunu halledeceğinden 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üncellemelerini sağlamak için sisteme güvenir. Bu sistem güncellemeleri sık veya kesin olmayabilir ve navigasyon deneyiminin ideal düzeyde olmamasına neden olabilir. Bu nedenle, kullanıcılardan arka planda konum erişimi izni de istemenizi öneririz.
Uygulama geliştiriciler, navigasyon için konum doğruluğunu artırmak 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 izinlerini isteme başlıklı makaleyi inceleyin.