Kotlin ile Android'de konum güncellemelerini alın

1. Başlamadan önce

Android 10 ve 11, uygulamaların cihaz konumlarına erişimi konusunda kullanıcılara daha fazla kontrol imkanı sunar.

Android 11'de çalışan bir uygulama konum erişimi istediğinde kullanıcılar dört seçenekten birini belirleyebilir:

  • Her zaman izin ver
  • Yalnızca uygulama kullanılırken izin ver (Android 10'da)
  • Yalnızca bir kez (Android 11'de)
  • Reddet

Android 10

6a1029175b467c77.png

Android 11

73d8cc88c5877c25.png

Bu codelab'de konum güncellemelerini almayı ve Android'in herhangi bir sürümünde (özellikle Android 10 ve 11) konumu desteklemeyi öğreneceksiniz. Bu codelab'in sonunda, konum güncellemelerini alma konusunda mevcut en iyi uygulamalara uygun bir uygulamanız olacak.

Ön koşullar

Yapacaklarınız

  • Android'de konum için en iyi uygulamaları takip edin.
  • Ön plan konum izinlerini yönetin (kullanıcı, uygulamanız kullanımdayken cihaz konumuna erişmesini istediğinde).
  • Konum erişimi isteğinde bulunma desteği eklemek için mevcut bir uygulamayı değiştirin. Bunun için konuma abone olma ve konum aboneliğinden çıkma kodu ekleyin.
  • Ön planda konum veya kullanımdayken konuma erişmek için mantık ekleyerek uygulamaya Android 10 ve 11 desteği ekleyin.

Gerekenler

  • Kodu çalıştırmak için Android Studio 3.4 veya sonraki bir sürümü
  • Android 10 ve 11'in geliştirici önizlemesinin yüklü olduğu bir cihaz/emülatör

2. Başlarken

Başlangıç projesi deposunu klonlama

En kısa sürede başlamak için bu başlangıç projesini temel alabilirsiniz. Git yüklüyse aşağıdaki komutu çalıştırmanız yeterlidir:

 git clone https://github.com/android/codelab-while-in-use-location

Dilerseniz doğrudan GitHub sayfasını ziyaret edebilirsiniz.

Git'iniz yoksa projeyi zip dosyası olarak alabilirsiniz:

Projeyi içe aktarma

Android Studio'yu açın, karşılama ekranından "Open an existing Android Studio project" (Mevcut bir Android Studio projesini aç) seçeneğini belirleyin ve proje dizinini açın.

Proje yüklendikten sonra, Git'in yerel değişikliklerinizin tümünü izlemediğine dair bir uyarı da görebilirsiniz. Yoksay'ı tıklayabilirsiniz. (Değişiklikleri Git deposuna geri göndermezsiniz.)

Proje penceresinin sol üst köşesinde, Android görünümündeyken aşağıdaki resme benzer bir görüntü görürsünüz. (Proje görünümündeyken aynı şeyi görmek için projeyi genişletmeniz gerekir.)

fa825dae96c5dc18.png

İki klasör vardır (base ve complete). Her biri "modül" olarak bilinir.

Android Studio'nun projeyi ilk kez arka planda derlemesinin birkaç saniye sürebileceğini unutmayın. Bu süre boyunca Android Studio'nun alt kısmındaki durum çubuğunda şu mesajı görürsünüz:

c2273e7835c0841a.png

Kod değişiklikleri yapmadan önce Android Studio'nun projeyi dizine ekleme ve oluşturma işlemini tamamlamasını bekleyin. Bu işlem, Android Studio'nun gerekli tüm bileşenleri çekmesine olanak tanır.

Dil değişikliklerinin geçerli olması için yeniden yükle? veya benzeri bir istem alırsanız Evet'i seçin.

Başlangıç projesini anlama

Kurulumu tamamladınız ve uygulamada konum isteğinde bulunmaya hazırsınız. Başlangıç noktası olarak base modülünü kullanın. Her adımda base modülüne kod ekleyin. Bu codelab'i tamamladığınızda base modülündeki kod, complete modülünün içeriğiyle eşleşmelidir. complete modülü, çalışmanızı kontrol etmek veya sorun yaşarsanız başvurmak için kullanılabilir.

Temel bileşenler şunlardır:

  • MainActivity—Kullanıcının uygulamaya cihazın konumuna erişim izni vermesini sağlayan kullanıcı arayüzü
  • LocationService—Konum değişikliklerine abone olan ve aboneliği iptal eden, kullanıcı uygulamanın etkinliğinden ayrılırsa kendisini ön plan hizmeti (bildirimle) olarak tanıtan hizmet. Buraya konum kodu ekleyin.
  • UtilLocation sınıfı için uzantı işlevleri ekler ve konumu SharedPreferences'ye (basitleştirilmiş veri katmanı) kaydeder.

Emülatör kurulumu

Android emülatörü ayarlama hakkında bilgi edinmek için Emülatörde çalıştırma başlıklı makaleyi inceleyin.

Başlangıç projesini çalıştırma

Uygulamanızı çalıştırın.

  1. Android cihazınızı bilgisayarınıza bağlayın veya bir emülatör başlatın. (Cihazda Android 10 veya sonraki bir sürümün yüklü olduğundan emin olun.)
  2. Araç çubuğunda, açılır menüden base yapılandırmasını seçin ve Çalıştır'ı tıklayın:

99600e9d44527ab.png

  1. Cihazınızda aşağıdaki uygulamanın göründüğünü fark edebilirsiniz:

99bf1dae46f99af3.png

Çıkış ekranında konum bilgisinin görünmediğini fark edebilirsiniz. Bunun nedeni, henüz konum kodunu eklememiş olmanızdır.

3. Konum ekleme

Kavramlar

Bu codelab'in amacı, konum güncellemelerini nasıl alacağınızı göstermek ve Android 10 ile Android 11'i desteklemektir.

Ancak kodlamaya başlamadan önce temel bilgileri gözden geçirmeniz önerilir.

Konum erişimi türleri

Bu kod laboratuvarının başında konum erişimi için dört farklı seçenekten bahsetmiştik. Bu simgelerin anlamlarına göz atalım:

  • Yalnızca uygulama kullanılırken izin ver
  • Bu seçenek, çoğu uygulama için önerilen seçenektir. "Kullanımdayken" veya "yalnızca ön planda" erişim olarak da bilinen bu seçenek, Android 10'da eklenmiştir ve geliştiricilerin yalnızca uygulama aktif olarak kullanılırken konum almasına olanak tanır. Aşağıdaki durumlardan herhangi biri geçerliyse uygulama etkin olarak kabul edilir:
  • Bir etkinlik görünür.
  • Devam eden bir bildirimle ön plan hizmeti çalıştırılıyor.
  • Yalnızca bir kez
  • Android 11'de eklenen bu izin, Yalnızca uygulama kullanılırken izin ver ile aynıdır ancak sınırlı bir süre için geçerlidir. Daha fazla bilgi için Tek seferlik izinler başlıklı makaleyi inceleyin.
  • Reddet
  • Bu seçenek, konum bilgilerine erişimi engeller.
  • Her zaman izin ver
  • Bu seçenek, konuma her zaman erişilmesine izin verir ancak Android 10 ve sonraki sürümlerde ek izin gerektirir. Ayrıca geçerli bir kullanım alanınız olduğundan ve konum politikalarına uyduğunuzdan emin olmanız gerekir. Bu seçenek daha nadir bir kullanım alanı olduğundan bu codelab'de ele alınmayacaktır. Ancak geçerli bir kullanım alanınız varsa ve arka planda konuma erişim de dahil olmak üzere her zaman konum özelliğinin nasıl düzgün şekilde işleneceğini anlamak istiyorsanız LocationUpdatesBackgroundKotlin örneğini inceleyin.

Hizmetler, ön plan hizmetleri ve bağlama

Yalnızca uygulama kullanılırken izin ver konum güncellemelerini tam olarak desteklemek için kullanıcının uygulamanızdan ayrıldığı durumu hesaba katmanız gerekir. Bu durumda güncelleme almaya devam etmek istiyorsanız bir ön plan Service oluşturmanız ve bunu bir Notification ile ilişkilendirmeniz gerekir.

Ayrıca, uygulamanız görünürken ve kullanıcı uygulamanızdan ayrıldığında konum güncellemeleri istemek için aynı Service öğesini kullanmak istiyorsanız bu Service öğesini kullanıcı arayüzü öğesine bağlamanız/bağlantısını kaldırmanız gerekir.

Bu codelab yalnızca konum güncellemelerini alma konusuna odaklandığından ihtiyacınız olan tüm kodu ForegroundOnlyLocationService.kt sınıfında bulabilirsiniz. Bu sınıfı ve MainActivity.kt simgesini inceleyerek birlikte nasıl çalıştıklarını görebilirsiniz.

Daha fazla bilgi için Hizmetlere genel bakış ve Bağlı hizmetlere genel bakış başlıklı makaleleri inceleyin.

İzinler

NETWORK_PROVIDER veya GPS_PROVIDER cihazlardan konum güncellemeleri almak için Android manifest dosyanızda sırasıyla ACCESS_COARSE_LOCATION veya ACCESS_FINE_LOCATION iznini beyan ederek kullanıcının iznini istemeniz gerekir. Bu izinler olmadan uygulamanız, çalışma zamanında konuma erişim isteğinde bulunamaz.

Bu izinler, uygulamanız Android 10 veya sonraki sürümlerin yüklü olduğu bir cihazda kullanılırken Yalnızca bir kez ve Yalnızca uygulamayı kullanırken izin ver durumlarını kapsar.

Konum

Uygulamanız, com.google.android.gms.location paketindeki sınıflar aracılığıyla desteklenen konum hizmetleri grubuna erişebilir.

Ana sınıflara göz atın:

  • FusedLocationProviderClient
  • Bu, konum çerçevesinin merkezi bileşenidir. Oluşturulduktan sonra konum güncellemeleri istemek ve bilinen son konumu almak için kullanılır.
  • LocationRequest
  • Bu, istekler için hizmet kalitesi parametrelerini (güncellemeler, öncelikler ve doğruluk için aralıklar) içeren bir veri nesnesidir. Bu, konum güncellemeleri istediğinizde FusedLocationProviderClient'ya iletilir.
  • LocationCallback
  • Bu, cihazın konumu değiştiğinde veya artık belirlenemediğinde bildirim almak için kullanılır. Bu, veritabanınıza kaydetmek için Location değerini alabileceğiniz bir LocationResult iletilir.

Ne yaptığınıza dair temel bir fikriniz olduğuna göre kodla çalışmaya başlayabilirsiniz.

4. Konum özellikleri ekleme

Bu codelab, en yaygın konum seçeneği olan Yalnızca uygulama kullanılırken izin ver'e odaklanmaktadır.

Konum güncellemeleri almak için uygulamanızın görünür bir etkinliği veya ön planda çalışan bir hizmeti (bildirimle birlikte) olmalıdır.

İzinler

Bu kod laboratuvarının amacı, konum izinleri istemeyi değil, konum güncellemelerini almayı göstermektir. Bu nedenle, izne dayalı kod sizin için önceden yazılmıştır. Bu kavramı biliyorsanız bu bölümü atlayabilirsiniz.

İzinlerle ilgili önemli noktalar şunlardır (bu bölüm için herhangi bir işlem yapmanız gerekmez):

  1. AndroidManifest.xml içinde hangi izni kullandığınızı beyan edin.
  2. Konum bilgilerine erişmeye çalışmadan önce kullanıcının uygulamanıza bu izni verip vermediğini kontrol edin. Uygulamanız henüz izin almadıysa erişim isteğinde bulunun.
  3. Kullanıcının izin tercihini işleme (Bu kodu MainActivity.kt bölümünde görebilirsiniz.)

AndroidManifest.xml veya MainActivity.kt içinde TODO: Step 1.0, Review Permissions ifadesini ararsanız izinler için yazılan tüm kodları görürsünüz.

Daha fazla bilgi için İzinlere genel bakış başlıklı makaleyi inceleyin.

Şimdi konum kodu yazmaya başlayın.

Konum güncellemeleri için gereken temel değişkenleri inceleyin

base modülünde, TODO: Step 1.1, Review variables ifadesini arayın.

ForegroundOnlyLocationService.kt dosyası.

Bu adımda herhangi bir işlem yapmanız gerekmez. Konum güncellemelerini almak için kullandığınız temel sınıfları ve değişkenleri anlamak üzere yorumlarla birlikte aşağıdaki kod bloğunu incelemeniz yeterlidir.

// TODO: Step 1.1, Review variables (no changes).
// FusedLocationProviderClient - Main class for receiving location updates.
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient

// LocationRequest - Requirements for the location updates, i.e., how often you
// should receive updates, the priority, etc.
private lateinit var locationRequest: LocationRequest

// LocationCallback - Called when FusedLocationProviderClient has a new Location.
private lateinit var locationCallback: LocationCallback

// Used only for local storage of the last known location. Usually, this would be saved to your
// database, but because this is a simplified sample without a full database, we only need the
// last location to create a Notification if the user navigates away from the app.
private var currentLocation: Location? = null

FusedLocationProviderClient başlatma işlemini inceleyin

base modülünde, ForegroundOnlyLocationService.kt dosyasında TODO: Step 1.2, Review the FusedLocationProviderClient öğesini arayın. Kodunuz aşağıdaki gibi görünmelidir:

// TODO: Step 1.2, Review the FusedLocationProviderClient.
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)

Önceki yorumlarda belirtildiği gibi, konum güncellemelerini almak için bu sınıfı kullanabilirsiniz. Değişken sizin için zaten başlatılmıştır ancak nasıl başlatıldığını anlamak için kodu incelemeniz önemlidir. Daha sonra konum güncellemeleri istemek için buraya bazı kodlar eklersiniz.

LocationRequest'i başlatma

  1. base modülünde, ForegroundOnlyLocationService.kt dosyasında TODO: Step 1.3, Create a LocationRequest öğesini arayın.
  2. Yorumun ardından aşağıdaki kodu ekleyin.

LocationRequest başlatma kodu, isteğiniz için gereken ek hizmet kalitesi parametrelerini (aralıklar, maksimum bekleme süresi ve öncelik) ekler.

// TODO: Step 1.3, Create a LocationRequest.
locationRequest = LocationRequest.create().apply {
   // Sets the desired interval for active location updates. This interval is inexact. You
   // may not receive updates at all if no location sources are available, or you may
   // receive them less frequently than requested. You may also receive updates more
   // frequently than requested if other applications are requesting location at a more
   // frequent interval.
   //
   // IMPORTANT NOTE: Apps running on Android 8.0 and higher devices (regardless of
   // targetSdkVersion) may receive updates less frequently than this interval when the app
   // is no longer in the foreground.
   interval = TimeUnit.SECONDS.toMillis(60)

   // Sets the fastest rate for active location updates. This interval is exact, and your
   // application will never receive updates more frequently than this value.
   fastestInterval = TimeUnit.SECONDS.toMillis(30)

   // Sets the maximum time when batched location updates are delivered. Updates may be
   // delivered sooner than this interval.
   maxWaitTime = TimeUnit.MINUTES.toMillis(2)

   priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}
  1. Her birinin nasıl çalıştığını anlamak için yorumları okuyun.

LocationCallback'i başlatma

  1. base modülünde, ForegroundOnlyLocationService.kt dosyasında TODO: Step 1.4, Initialize the LocationCallback öğesini arayın.
  2. Yorumun ardından aşağıdaki kodu ekleyin.
// TODO: Step 1.4, Initialize the LocationCallback.
locationCallback = object : LocationCallback() {
    override fun onLocationResult(locationResult: LocationResult) {
        super.onLocationResult(locationResult)

        // Normally, you want to save a new location to a database. We are simplifying
        // things a bit and just saving it as a local variable, as we only need it again
        // if a Notification is created (when the user navigates away from app).
        currentLocation = locationResult.lastLocation

        // Notify our Activity that a new location was added. Again, if this was a
        // production app, the Activity would be listening for changes to a database
        // with new locations, but we are simplifying things a bit to focus on just
        // learning the location side of things.
        val intent = Intent(ACTION_FOREGROUND_ONLY_LOCATION_BROADCAST)
        intent.putExtra(EXTRA_LOCATION, currentLocation)
        LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(intent)

        // Updates notification content if this service is running as a foreground
        // service.
        if (serviceRunningInForeground) {
            notificationManager.notify(
                NOTIFICATION_ID,
                generateNotification(currentLocation))
        }
    }
}

Burada oluşturduğunuz LocationCallback, yeni bir konum güncellemesi olduğunda FusedLocationProviderClient tarafından çağrılan geri çağırmadır.

Geri çağırmanızda, önce LocationResult nesnesi kullanarak en son konumu alırsınız. Ardından, etkinse yerel yayın kullanarak Activity hizmetinize yeni konumu bildirirsiniz veya bu hizmet ön plan Service olarak çalışıyorsa Notification hizmetini güncellersiniz.

  1. Her bölümün ne yaptığını anlamak için yorumları okuyun.

Konum değişikliklerine abone olma

Her şeyi başlattığınıza göre, FusedLocationProviderClient'ya güncelleme almak istediğinizi bildirmeniz gerekir.

  1. base modülünde, ForegroundOnlyLocationService.kt dosyasında Step 1.5, Subscribe to location changes öğesini arayın.
  2. Yorumun ardından aşağıdaki kodu ekleyin.
// TODO: Step 1.5, Subscribe to location changes.
fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper())

requestLocationUpdates() çağrısı, FusedLocationProviderClient konum güncellemeleri almak istediğinizi bildirir.

Daha önce tanımladığınız LocationRequest ve LocationCallback değerlerini muhtemelen tanıyorsunuzdur. Bu parametreler, FusedLocationProviderClient hizmetine isteğinizin hizmet kalitesi parametrelerini ve güncelleme olduğunda hangi işlevin çağrılması gerektiğini bildirir. Son olarak, Looper nesnesi geri arama için iş parçacığını belirtir.

Bu kodun bir try/catch ifadesi içinde olduğunu da fark edebilirsiniz. Uygulamanızın konum bilgilerine erişme izni olmadığında SecurityException oluştuğu için bu yöntemde böyle bir blok gerekir.

Konum değişiklikleri e-posta listesinden çıkma

Uygulamanın artık konum bilgisine erişmesi gerekmediğinde konum güncellemelerinin aboneliğinden çıkmanız önemlidir.

  1. base modülünde, ForegroundOnlyLocationService.kt dosyasında TODO: Step 1.6, Unsubscribe to location changes öğesini arayın.
  2. Yorumun ardından aşağıdaki kodu ekleyin.
// TODO: Step 1.6, Unsubscribe to location changes.
val removeTask = fusedLocationProviderClient.removeLocationUpdates(locationCallback)
removeTask.addOnCompleteListener { task ->
   if (task.isSuccessful) {
       Log.d(TAG, "Location Callback removed.")
       stopSelf()
   } else {
       Log.d(TAG, "Failed to remove Location Callback.")
   }
}

removeLocationUpdates() yöntemi, FusedLocationProviderClient cihazınıza konum güncellemeleri almak istemediğinizi FusedLocationProviderClient cihazına bildiren bir görev oluşturur.LocationCallback addOnCompleteListener(), tamamlanma için geri çağırma işlevini sağlar ve Task işlevini yürütür.

Önceki adımda olduğu gibi, bu kodun bir try/catch ifadesi içinde olduğunu fark etmiş olabilirsiniz. Uygulamanızın konum bilgilerine erişme izni olmadığında SecurityException oluştuğu için bu yöntemde böyle bir engelleme gerekir.

Abone olma/abonelikten çıkma kodunu içeren yöntemlerin ne zaman çağrıldığını merak edebilirsiniz. Kullanıcı düğmeye dokunduğunda ana sınıfta tetiklenirler. İzlemek isterseniz MainActivity.kt sınıfına göz atın.

Uygulamayı çalıştırma

Uygulamanızı Android Studio'dan çalıştırın ve konum düğmesini deneyin.

Çıkış ekranında konum bilgilerini görmeniz gerekir. Bu, Android 9 için tam işlevli bir uygulamadır.

2ae45c4e297e3681.png

d66089bfb532e993.png

5. Android 10 desteği

Bu bölümde Android 10 desteği ekleyeceksiniz.

Uygulamanız zaten konum değişikliklerine abone olduğundan yapmanız gereken pek fazla şey yoktur.

Aslında yapmanız gereken tek şey, ön plan hizmetinizin konum amacıyla kullanıldığını belirtmektir.

Hedef SDK 29

  1. base modülünde, build.gradle dosyasında TODO: Step 2.1, Target Android 10 and then Android 11. öğesini arayın.
  2. Şu değişiklikleri yapın:
  3. targetSdkVersion değerini 29 olarak ayarlayın.

Kodunuz aşağıdaki gibi görünmelidir:

android {
   // TODO: Step 2.1, Target Android 10 and then Android 11.
   compileSdkVersion 29
   defaultConfig {
       applicationId "com.example.android.whileinuselocation"
       minSdkVersion 26
       targetSdkVersion 29
       versionCode 1
       versionName "1.0"
   }
...
}

Bu işlemi yaptıktan sonra projenizi senkronize etmeniz istenir. Şimdi Senkronize Et'i tıklayın.

153f70847e0ec320.png

Bu işlemlerden sonra uygulamanız Android 10 için neredeyse hazır olur.

Ön Plan Hizmeti Türü Ekleme

Android 10'da, kullanımdayken konum erişimine ihtiyacınız varsa ön plan hizmetinizin türünü eklemeniz gerekir. Sizin durumunuzda konum bilgisi almak için kullanılıyor.

base modülünde, AndroidManifest.xml içinde TODO: 2.2, Add foreground service type öğesini arayın ve aşağıdaki kodu <service> öğesine ekleyin:

android:foregroundServiceType="location"

Kodunuz aşağıdaki gibi görünmelidir:

<application>
   ...

   <!-- Foreground services in Android 10+ require type. -->
   <!-- TODO: 2.2, Add foreground service type. -->
   <service
       android:name="com.example.android.whileinuselocation.ForegroundOnlyLocationService"
       android:enabled="true"
       android:exported="false"
       android:foregroundServiceType="location" />
</application>

İşte bu kadar. Uygulamanız, Android'deki konumla ilgili en iyi uygulamaları izleyerek "kullanım sırasında" için Android 10 konumunu destekliyor.

Uygulamayı çalıştırma

Uygulamanızı Android Studio'dan çalıştırın ve konum düğmesini deneyin.

Her şey eskisi gibi çalışmaya devam eder ancak artık Android 10'da çalışır. Daha önce konum izinlerini kabul etmediyseniz artık izin ekranını görmelisiniz.

6a1029175b467c77.png

c7c1d226e49a121.png

39a262b66a275f66.png

6. Android 11 desteği

Bu bölümde Android 11'i hedefliyorsunuz.

İyi haber: build.gradle dosyası dışında herhangi bir dosyada değişiklik yapmanız gerekmez.

Hedef SDK 11

  1. base modülünde, build.gradle dosyasında TODO: Step 2.1, Target SDK ifadesini arayın.
  2. Şu değişiklikleri yapın:
  3. compileSdkVersion - 30
  4. targetSdkVersion - 30

Kodunuz aşağıdaki gibi görünmelidir:

android {
   TODO: Step 2.1, Target Android 10 and then Android 11.
   compileSdkVersion 30
   defaultConfig {
       applicationId "com.example.android.whileinuselocation"
       minSdkVersion 26
       targetSdkVersion 30
       versionCode 1
       versionName "1.0"
   }
...
}

Bu işlemi yaptıktan sonra projenizi senkronize etmeniz istenir. Şimdi Senkronize Et'i tıklayın.

153f70847e0ec320.png

Bu işlemden sonra uygulamanız Android 11'e hazır olur.

Uygulamayı çalıştırma

Uygulamanızı Android Studio'dan çalıştırın ve düğmeyi tıklamayı deneyin.

Her şey eskisi gibi çalışmaya devam eder ancak artık Android 11'de çalışır. Daha önce konum izinlerini kabul etmediyseniz artık izin ekranını görmelisiniz.

73d8cc88c5877c25.png

cc98fac6e089bc4.png

7. Android için konum stratejileri

Bu codelab'de gösterilen yöntemlerle konum izinlerini kontrol edip isteyerek uygulamanız, cihaz konumuna erişim düzeyiyle ilgili olarak başarılı bir şekilde takip yapabilir.

Bu sayfada, konum izinleriyle ilgili birkaç önemli en iyi uygulama listelenmektedir. Kullanıcılarınızın verilerini nasıl güvende tutacağınız hakkında daha fazla bilgi için Uygulama izinleriyle ilgili en iyi uygulamalar başlıklı makaleyi inceleyin.

Yalnızca ihtiyacınız olan izinleri isteyin

Yalnızca gerektiğinde izin isteyin. Örneğin:

  • Kesinlikle gerekli olmadığı sürece uygulama başlatılırken konum izni istemeyin.
  • Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa ve ön plan hizmetiniz varsa manifest dosyasında foregroundServiceType "location" bildirin.
  • Kullanıcı Konumuna Daha Güvenli ve Şeffaf Erişim başlıklı makalede açıklanan geçerli bir kullanım alanınız olmadığı sürece arka planda konum izni istemeyin.

İzin verilmediğinde kontrollü azalmayı destekleme

İyi bir kullanıcı deneyimi sunmak için uygulamanızı aşağıdaki durumları sorunsuz bir şekilde ele alacak şekilde tasarlayın:

  • Uygulamanızın konum bilgilerine erişimi yoksa
  • Uygulamanız arka planda çalışırken konum bilgilerine erişemiyor.

8. Tebrikler

En iyi uygulamaları göz önünde bulundurarak Android'de konum güncellemelerini nasıl alacağınızı öğrendiniz.

Daha fazla bilgi