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

1. Başlamadan önce

Android 10 ve 11, kullanıcılara uygulamaları üzerinde daha fazla kontrol sunar. kendi cihaz konumlarına erişebilir.

Android 11'de çalışan bir uygulama konum erişimi istediğinde kullanıcıların dört seçeneği olur:

  • 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 nasıl alacağınızı ve Android'in herhangi bir sürümünde (özellikle Android 10 ve 11) konum özelliğini nasıl destekleyeceğinizi öğreneceksiniz. Codelab'in sonunda, konum güncellemelerini almak için mevcut en iyi uygulamaları izleyen bir uygulamanız olacağını bekleyebilirsiniz.

Ön koşullar

Yapacaklarınız

  • Android'de konumla ilgili en iyi uygulamaları takip edin.
  • Ön plan konum izinlerini işleme (kullanıcı, uygulamanız kullanılırken uygulamanızın cihaz konumuna erişmesini istediğinde).
  • Konuma abone olma ve abonelikten çıkma kodu ekleyerek mevcut bir uygulamayı konum erişimi isteme desteği ekleyecek şekilde değiştirebilirsiniz.
  • Android 10 ve 11 için uygulamaya destek sağlamak için ön planda veya kullanımdayken konuma erişme mantığı ekleyin.

Gerekenler

  • Kodu çalıştırmak için Android Studio 3.4 veya sonraki sürümleri
  • Android 10 ve 11'in geliştirici önizlemesini çalıştıran bir cihaz/emülatör

2. Başlarken

Başlangıç proje deposunu klonlama

Mümkün olduğunca hızlı bir başlangıç yapmak için bu başlangıç projesini temel alabilirsiniz. Bilgisayarınızda Git yüklüyse aşağıdaki komutu çalıştırmanız yeterlidir:

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

GitHub sayfasını doğrudan ziyaret edebilirsiniz.

Git'iniz yoksa projeyi zip dosyası olarak alabilirsiniz:

Projeyi içe aktarma

Android Studio'yu açın ve "Mevcut bir Android Studio projesini aç"ı seçin. karşılama ekranından açın ve proje dizinini açın.

Proje yüklendikten sonra, Git'in tüm yerel değişikliklerinizi izlemediğini belirten bir uyarı da görebilirsiniz. Yoksay'ı tıklayabilirsiniz. (Git deposuna herhangi bir değişiklik aktarmazsınız.)

Android görünümünü kullanıyorsanız proje penceresinin sol üst köşesinde aşağıdaki resme benzer bir sonuç gösterilir. (Proje görünümündeyseniz aynı şeyi görmek için projeyi genişletmeniz gerekir.)

fa825dae96c5dc18.png

İki klasör var (base ve complete). Bunların her biri "modül" olarak bilinir.

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

c2273e7835c0841a.png

Kod değişikliği yapmadan önce Android Studio'nun dizine eklemeyi ve projeyi oluşturmayı tamamlamasını bekleyin. Bu, Android Studio'nun gerekli tüm bileşenleri almasına olanak tanır.

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

Başlangıç projesini anlama

Kurulum tamamlandı ve uygulamada konum bilgisi istemeye 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ünü, çalışmanızı kontrol etmek veya herhangi bir sorunla karşılaştığınızda referans olarak kullanmak için kullanabilirsiniz.

Temel bileşenler şunları içerir:

  • MainActivity: Uygulamanın cihaz konumuna erişmesine izin vermek için kullanıcının kullandığı kullanıcı arayüzü
  • LocationService: Kullanıcı uygulamanın etkinliğinden ayrılırsa konum değişikliklerine abone olan, abonelikten çıkan ve kendisini bir ön plan hizmetine (bildirimle) tanıtan hizmet. Konum kodunu buraya eklersiniz.
  • Util - Location sınıfı için uzantı işlevleri ekler ve SharedPreferences sınıfına konumu kaydeder (basitleştirilmiş veri katmanı).

Emülatör kurulumu

Android emülatörü kurma hakkında bilgi için Emülatörde çalıştırma konusuna bakın.

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. (Cihazın Android 10 veya sonraki bir sürümü çalıştırdığından emin olun.)
  2. Araç çubuğundaki açılır seçiciden 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üğüne dikkat edin:

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 ekleniyor

Kavramlar

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

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

Konum erişimi türleri

Codelab'in başında konum erişimiyle ilgili dört farklı seçeneği hatırlarsınız. Ne anlama geldiklerine göz atın:

  • Yalnızca uygulama kullanılırken izin verme
  • Bu seçenek, çoğu uygulama için önerilen seçenektir. "Kullanımdayken" olarak da bilinir. veya "yalnızca ön plan" erişimi olmadan, bu seçenek Android 10'da eklenmiştir ve geliştiricilerin yalnızca uygulama aktif olarak kullanılırken konum bilgisi almasına olanak tanır. Bir uygulama, aşağıdakilerden biri doğruysa etkin olarak kabul edilir:
  • Etkinlik görünür durumda.
  • Devam eden bir bildirimle ön plan hizmeti çalışıyor.
  • Yalnızca bir defa
  • Android 11'de kullanıma sunulan bu özellik, Yalnızca uygulama kullanılırken izin ver ayarıyla aynı şekilde sunulur, ancak kısıtlı bir süre için geçerli olur. Daha fazla bilgi için Tek seferlik izinler başlıklı makaleye bakın.
  • Reddet
  • Bu seçenek, konum bilgilerine erişimi engeller.
  • Her zaman izin ver
  • Bu seçenek konum erişimine her zaman izin verir ancak Android 10 ve sonraki sürümler için ek bir izin gerektirir. Ayrıca geçerli bir kullanım alanınız olduğundan ve konum politikalarına uyduğunuzdan emin olmanız gerekir. Daha nadir kullanılan bir kullanım alanı olduğundan bu codelab'de bu seçenek 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 bilgisini nasıl düzgün şekilde kullanacağınızı anlamak istiyorsanız LocationUpdatesBackgroundKotlin örneğini inceleyin.

Hizmetler, ön plan hizmetleri ve bağlama

Yalnızca uygulama kullanılırken izin ver konum güncellemelerinin tam olarak desteklenmesi için kullanıcının uygulamanızdan ayrıldığı zamanı dikkate almanız gerekir. Bu durumda güncelleme almaya devam etmek istiyorsanız ön plan Service oluşturup bir Notification ile ilişkilendirmeniz gerekir.

Buna ek olarak, uygulamanız görünür olduğunda ve kullanıcı uygulamanızdan ayrıldığında konum güncellemesi istemek için aynı Service öğesini kullanmak isterseniz 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üncellemeleri almaya odaklandığından ihtiyacınız olan tüm kodları ForegroundOnlyLocationService.kt sınıfında bulabilirsiniz. İlgili sınıfa ve MainActivity.kt öğesine göz atarak birlikte nasıl çalıştıklarını görebilirsiniz.

Daha fazla bilgi için Hizmetlere genel bakış ve Sınır hizmetlere genel bakış sayfalarına göz atın.

İzinler

Bir NETWORK_PROVIDER veya GPS_PROVIDER dosyasından konum güncellemeleri almak için Android manifest dosyanızda ACCESS_COARSE_LOCATION veya ACCESS_FINE_LOCATION iznini beyan ederek kullanıcıdan izin istemeniz gerekir. Uygulamanız, bu izinler olmadan çalışma zamanında konuma erişim isteğinde bulunamaz.

Bu izinler, uygulamanızın Android 10 veya sonraki bir sürümü çalıştıran bir cihazda kullanıldığı 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.

Temel dersleri inceleyin:

  • FusedLocationProviderClient
  • Bu, konum çerçevesinin temel bileşenidir. Oluşturulduktan sonra konum güncellemeleri istemek ve bilinen son konumu almak için bu uygulamayı kullanırsınız.
  • LocationRequest
  • Bu, istekler için hizmet kalitesi parametrelerini (güncellemeler, öncelikler ve doğruluk aralıkları) içeren bir veri nesnesidir. Konum güncellemesi isteğinde bulunduğunuzda bu ileti, FusedLocationProviderClient bölümüne iletilir.
  • LocationCallback
  • Bu özellik, cihaz konumu değiştiğinde veya artık belirlenemediğinde bildirim almak için kullanılır. Bu kontrolde LocationResult geçti. Burada, veritabanınıza kaydetmek için Location'i alabilirsiniz.

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

4. Konum özellikleri ekleme

Bu codelab'de, en yaygın konum seçeneğine odaklanır: Yalnızca uygulama kullanılırken izin ver.

Konum güncellemelerini almak için uygulamanızda görünür bir etkinlik veya ön planda çalışan bir hizmet (bildirim içeren) olmalıdır.

İzinler

Bu codelab'in amacı konum izninin nasıl isteneceğini değil, konum güncellemelerini nasıl alacağınızı göstermektir. Bu nedenle, izne dayalı kod sizin için önceden yazılmıştır. Anladıysanız bu kısmı atlayabilirsiniz.

İzinlerle ilgili öne çıkan noktalar aşağıda verilmiştir (bu bölümde herhangi bir işlem yapılması gerekmez):

  1. Kullandığınız izni AndroidManifest.xml içinde beyan edin.
  2. Konum bilgilerine erişmeye çalışmadan önce, kullanıcının uygulamanıza izin verip vermediğini kontrol edin. Uygulamanız henüz izin almadıysa erişim isteyin.
  3. Kullanıcının izin seçimini işleyin. (Bu kodu MainActivity.kt içinde görebilirsiniz.)

AndroidManifest.xml veya MainActivity.kt içinde TODO: Step 1.0, Review Permissions için arama yaparsanı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 bir 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

ForegroundOnlyLocationService.kt dosyası yükleyin.

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 için aşağıdaki kod bloğunu ve yorumları 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şlatmayı inceleme

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 da belirtildiği gibi, konum güncellemelerini almak için ana sınıf budur. Değişken sizin için zaten başlatıldı ancak nasıl başlatıldığını anlamak için kodu incelemeniz önemlidir. Konum güncellemelerini istemek için daha sonra 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 arkasına aşağıdaki kodu ekleyin.

LocationRequest başlatma kodu, isteğiniz için ihtiyaç duyduğunuz ek hizmet parametrelerinin kalitesini (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. İşleyiş şeklini 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 arkasına 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 mevcut olduğunda FusedLocationProviderClient tarafından geri aranmak için kullanılır.

Geri çağırmanızda, önce bir LocationResult nesnesi kullanarak en son konumu alırsınız. Sonrasında, yerel bir yayın kullanarak (etkinse) Activity cihazınıza yeni konumu bildirirsiniz veya bu hizmet ön plan Service olarak çalışıyorsa Notification öğesini güncellersiniz.

  1. Bölümlerin ne işe yaradığını anlamak için yorumları baştan sona okuyun.

Konum değişikliklerine abone olma

Her şeyi başlattığınıza göre, güncellemeleri almak istediğinizi FusedLocationProviderClient cihazına bildirmeniz gerekir.

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

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

Muhtemelen daha önce tanımladığınız LocationRequest ve LocationCallback terimlerini tanırsınız. Bunlar, FusedLocationProviderClient ürününe isteğinizin hizmet kalitesi parametrelerini ve güncelleme olduğunda nasıl bir arama yapması gerektiğini bildirir. Son olarak, Looper nesnesi geri çağırma için iş parçacığını belirtir.

Bu kodun bir try/catch ifadesinde de olduğunu fark edebilirsiniz. Uygulamanızın konum bilgilerine erişim izni olmadığında SecurityException hatası oluştuğundan bu yöntem için böyle bir engelleme gerekir.

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

Uygulamanın konum bilgilerine artık erişmesi gerekmediğinde, konum güncellemeleri aboneliğinden çıkmak önemlidir.

  1. base modülünde, ForegroundOnlyLocationService.kt dosyasında TODO: Step 1.6, Unsubscribe to location changes öğesini arayın.
  2. Yorumun arkasına 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, LocationCallback cihazınızla ilgili konum güncellemelerini artık almak istemediğinizi FusedLocationProviderClient bildirmek için bir görev oluşturur. addOnCompleteListener(), tamamlanması için geri çağırmayı sağlar ve Task işlemini yürütür.

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

Abonelik/abonelikten çıkma kodunu içeren yöntemlerin ne zaman çağrıldığını merak ediyor olabilirsiniz. Kullanıcı düğmeye dokunduğunda ana sınıfta bu düğmeler tetiklenir. Görmek istiyorsanız MainActivity.kt sınıfına göz atın.

Uygulamayı çalıştırın

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

Çıkış ekranında konum bilgilerini göreceksiniz. Bu, Android 9 için tamamen işlevsel bir uygulamadır.

2ae45c4e297e3681.png

d66089bfb532e993.png

5. Android 10'u destekleyin

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

Uygulamanız konum değişikliklerine zaten abone olduğu için yapılacak çok fazla şey yok.

Aslında tek yapmanız gereken, ö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"
   }
...
}

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

153f70847e0ec320.png

Sonrasında uygulamanız Android 10 için neredeyse hazır olur.

Ön Plan Hizmet Türü Ekle

Android 10'da kullanımdayken konuma erişmeniz gerekiyorsa ön plan hizmetinizin türünü eklemeniz gerekir. Sizin durumunuzda, konum bilgilerini almak için bu kimlik kullanılır.

base modülünde, AndroidManifest.xml içinde TODO: 2.2, Add foreground service type öğesini arayın ve şu 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 "kullanımdayken" için Android 10 konumunu destekliyor Android'de konumla ilgili en iyi uygulamaları takip edin.

Uygulamayı çalıştırın

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

Her şey daha önce olduğu gibi çalışıyor. Şimdi ise Android 10'da çalışıyor. Daha önce konumlar için izinleri kabul etmediyseniz şimdi izin ekranını görmeniz gerekir!

6a1029175b467c77.png

c7c1d226e49a121.png

39a262b66a275f66.png

6. Android 11'i destekleyin

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

İyi bir haberimiz var! build.gradle dosyası dışındaki dosyalarda 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"
   }
...
}

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

153f70847e0ec320.png

Sonrasında uygulamanız Android 11'e hazırdır.

Uygulamayı çalıştırın

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

Her şey daha önce olduğu gibi çalışıyor. Şimdi ise Android 11'de çalışıyor. Daha önce konumlar için izinleri kabul etmediyseniz şimdi izin ekranını görmeniz gerekir!

73d8cc88c5877c25.png

cc98fac6e089bc4.png

7. Android için konum stratejileri

Uygulamanız, bu codelab'de gösterilen şekillerde konum izinlerini kontrol edip isteyerek cihaz konumu erişim düzeyini başarılı bir şekilde takip edebilir.

Bu sayfada, konum izinleriyle ilgili birkaç temel en iyi uygulama listelenmektedir. Kullanıcılarınızın Verilerin güvenliğini sağlamak için Uygulama izinleri 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 olarak "location" belirtin.
  • 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 izinleri istemeyin.

İzin verilmezse kontrollü azalmayı destekleme

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

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

8. Tebrikler

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

Daha fazla bilgi