Coğrafi sınırları oluşturma ve izleme

Coğrafi sınırlama, kullanıcının mevcut konumu hakkındaki farkındalığı, kullanıcının ilgi çekici olabilecek konumlara olan yakınlığı hakkındaki farkındalıkla birleştirir. İlgi çekici bir yeri işaretlemek için enlem ve boylamı belirtirsiniz. İşletmenin yakınlığını ayarlamak için bir yarıçap eklersiniz. Enlem, boylam ve yarıçap, coğrafi çit tanımlar ve ilgilenilen konumun etrafında dairesel bir alan veya çit oluşturur.

Uygulama başına, cihaz kullanıcısı başına 100 sınırıyla birden fazla etkin coğrafi çitiniz olabilir. Her bir coğrafi çit için Konum Servisleri'nden size giriş ve çıkış etkinlikleri göndermesini isteyebilir veya bir etkinliği tetiklemeden önce coğrafi çit alanında beklemek ya da beklemek için bir süre belirtebilirsiniz. Siz milisaniye cinsinden bir süre sonu belirterek coğrafi sınırların süresini sınırlayabilir. Coğrafi sınır sona erdikten sonra Konum Hizmetleri bunu otomatik olarak kaldırır.

Bu derste, coğrafi sınırların nasıl ekleneceği ve kaldırılacağı ve ardından coğrafi sınır geçişlerinin nasıl kullanılacağı gösterilmektedir BroadcastReceiver kullanarak.

Not: Wear cihazlarda Coğrafi sınırlama API'leri gücü verimli bir şekilde kullanmaz. Bu API'lerin Wear'da kullanılması önerilmez. Okunanlar Daha fazla bilgi için güç ve pil tasarrufu yapın.

Coğrafi sınır izlemeyi ayarlama

Coğrafi sınır izleme isteğinde bulunmanın ilk adımı, gerekli izinleri istemektir. Coğrafi sınırlamayı kullanmak için uygulamanızın aşağıdakileri istemesi gerekir:

Daha fazla bilgi edinmek için konum izni isteme ile ilgili kılavuzu inceleyin.

Coğrafi sınır geçişlerini dinlemek için bir BroadcastReceiver kullanmak isterseniz hizmet adını belirten bir öğe ekleyin. Bu öğe, <application> öğesinin bir alt öğesi olmalıdır:

<application
   android:allowBackup="true">
   ...
   <receiver android:name=".GeofenceBroadcastReceiver"/>
<application/>

Konum API'lerine erişmek için Coğrafi sınır çizme istemcisi. İstemcinizi nasıl bağlayacağınızı öğrenmek için:

Kotlin

lateinit var geofencingClient: GeofencingClient

override fun onCreate(savedInstanceState: Bundle?) {
    // ...
    geofencingClient = LocationServices.getGeofencingClient(this)
}

Java

private GeofencingClient geofencingClient;

@Override
public void onCreate(Bundle savedInstanceState) {
    // ...
    geofencingClient = LocationServices.getGeofencingClient(this);
}

Coğrafi sınırlar oluşturma ve ekleme

Uygulamanızın, konum API'sinin derleyici sınıfını kullanarak coğrafi sınırlar oluşturup eklemesi gerekiyor ve bunların eklenmesine ilişkin kolaylık sınıfı hakkında bilgi edineceksiniz. Ayrıca, coğrafi sınır geçişleri gerçekleştiğinde Konum Hizmetleri'nden gönderilen intent'ler, bir PendingIntent olarak görünür.

Not: Tek kullanıcılı cihazlarda uygulama başına 100 coğrafi sınır sınırı vardır. Çok kullanıcılı cihazlarda sınır, cihaz kullanıcısı başına uygulama başına 100 coğrafi sınırdır.

Coğrafi sınır nesneleri oluşturma

Öncelikle, coğrafi sınır oluşturmak için Geofence.Builder kullanarak istediğiniz yarıçapı, süreyi ve geçiş türlerini inceleyeceğiz. Örneğin, bir liste nesnesini doldurmak için:

Kotlin

geofenceList.add(Geofence.Builder()
        // Set the request ID of the geofence. This is a string to identify this
        // geofence.
        .setRequestId(entry.key)

        // Set the circular region of this geofence.
        .setCircularRegion(
                entry.value.latitude,
                entry.value.longitude,
                Constants.GEOFENCE_RADIUS_IN_METERS
        )

        // Set the expiration duration of the geofence. This geofence gets automatically
        // removed after this period of time.
        .setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)

        // Set the transition types of interest. Alerts are only generated for these
        // transition. We track entry and exit transitions in this sample.
        .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER or Geofence.GEOFENCE_TRANSITION_EXIT)

        // Create the geofence.
        .build())

Java

geofenceList.add(new Geofence.Builder()
    // Set the request ID of the geofence. This is a string to identify this
    // geofence.
    .setRequestId(entry.getKey())

    .setCircularRegion(
            entry.getValue().latitude,
            entry.getValue().longitude,
            Constants.GEOFENCE_RADIUS_IN_METERS
    )
    .setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)
    .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
            Geofence.GEOFENCE_TRANSITION_EXIT)
    .build());

Bu örnek, bir sabit değer dosyasından veri çeker. Uygulamalar, gerçek uygulamada kullanıcının konumuna göre dinamik olarak coğrafi çitler oluşturabilir.

Coğrafi çitleri ve ilk tetikleyicileri belirtme

Aşağıdaki snippet GeofencingRequest sınıfını kullanmaktadır ve iç içe yerleştirilmiş GeofencingRequestBuilder sınıfını izlenecek coğrafi sınırları belirleyin ve ilgili coğrafi sınır etkinliklerinin nasıl tetikleneceğini ayarlayın:

Kotlin

private fun getGeofencingRequest(): GeofencingRequest {
    return GeofencingRequest.Builder().apply {
        setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER)
        addGeofences(geofenceList)
    }.build()
}

Java

private GeofencingRequest getGeofencingRequest() {
    GeofencingRequest.Builder builder = new GeofencingRequest.Builder();
    builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
    builder.addGeofences(geofenceList);
    return builder.build();
}

Bu örnekte iki coğrafi çit tetikleyicinin kullanımı gösterilmektedir. GEOFENCE_TRANSITION_ENTER Geçiş, cihaz coğrafi sınıra girdiğinde tetiklenir ve GEOFENCE_TRANSITION_EXIT Geçişi, bir cihaz coğrafi sınırdan çıktığında tetiklenir. Belirtme INITIAL_TRIGGER_ENTER, Konum hizmetlerine şunları söylüyor: GEOFENCE_TRANSITION_ENTER cihaz zaten coğrafi sınır içindeyse tetiklenmelidir.

Birçok durumda, yalnızca kullanıcı bir coğrafi çit içinde belirli bir süre boyunca durduğunda etkinlikleri tetikleyen INITIAL_TRIGGER_DWELL yerine kullanmak tercih edilebilir. Bu yaklaşım, bir cihaz kısa süreliğine coğrafi çitlere girip çıktığında çok sayıda bildirimden kaynaklanan "uyarı spam'ini" azaltmaya yardımcı olabilir. Reklamlarınızdan en iyi sonuçları almak için diğer bir strateji coğrafi sınır 100 metrelik bir yarıçap belirlemektir. Bu, tipik kablosuz ağların konum doğruluğunu hesaba katmaya ve cihazın güç tüketimini azaltmaya yardımcı olur.

Coğrafi çit geçişleri için yayın alıcısı tanımlama

Konum Hizmetleri'nden gönderilen bir Intent, ancak bir etkinlik veya parça başlatmasını sağlamamalısınız. Bunun nedeni, bileşenlerin yalnızca kullanıcı işlemine yanıt olarak görünür hale gelmelidir. Çoğu durumda, coğrafi sınır geçişini yönetmek için BroadcastReceiver iyi bir yöntemdir. CEVAP BroadcastReceiver, şunlar gibi bir etkinlik gerçekleştiğinde güncelleme alır: bir coğrafi çite girip çıkması ve uzun süre çalışan arka plana başlanması iş yeri.

Aşağıdaki snippet'te, BroadcastReceiver başlayan bir PendingIntent'ün nasıl tanımlanacağı gösterilmektedir:

Kotlin

class MainActivity : AppCompatActivity() {

    // ...

    private val geofencePendingIntent: PendingIntent by lazy {
        val intent = Intent(this, GeofenceBroadcastReceiver::class.java)
        // We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when calling
        // addGeofences() and removeGeofences().
        PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
    }
}

Java

public class MainActivity extends AppCompatActivity {

    // ...

    private PendingIntent getGeofencePendingIntent() {
        // Reuse the PendingIntent if we already have it.
        if (geofencePendingIntent != null) {
            return geofencePendingIntent;
        }
        Intent intent = new Intent(this, GeofenceBroadcastReceiver.class);
        // We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when
        // calling addGeofences() and removeGeofences().
        geofencePendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.
                FLAG_UPDATE_CURRENT);
        return geofencePendingIntent;
    }

Coğrafi sınır ekleme

Coğrafi sınır eklemek için GeofencingClient.addGeofences() yöntemini kullanın. GeofencingRequest nesnesini ve PendingIntent değerini sağlayın. Aşağıdaki snippet'te sonuçların işlenmesi gösterilmektedir:

Kotlin

geofencingClient?.addGeofences(getGeofencingRequest(), geofencePendingIntent)?.run {
    addOnSuccessListener {
        // Geofences added
        // ...
    }
    addOnFailureListener {
        // Failed to add geofences
        // ...
    }
}

Java

geofencingClient.addGeofences(getGeofencingRequest(), getGeofencePendingIntent())
        .addOnSuccessListener(this, new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Geofences added
                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Failed to add geofences
                // ...
            }
        });

Coğrafi sınır geçişlerini yönetme

Konum Servisleri, kullanıcının bir coğrafi sınıra girdiğini veya coğrafi sınırdan çıktığını tespit ettiğinde, coğrafi sınır ekleme isteğine eklediğiniz PendingIntent içinde bulunan Intent öğesini gönderir. Şu gibi bir yayın alıcı: GeofenceBroadcastReceiver, Intent öğesinin çağrıldığını fark eder ve daha sonra istekten coğrafi sınır çizme etkinliğini alabilir, Coğrafi sınır geçişlerinin türünü belirleyebilir, ve tanımlanan coğrafi sınırlardan hangisinin tetiklendiğini belirleyebilirsiniz. Yayın alıcısı, bir uygulamayı arka planda çalışmaya başlaması için yönlendirebilir veya isterseniz çıkış olarak bildirim gönderebilir.

Not: Android 8.0 (API düzeyi 26) ve sonraki sürümlerde, coğrafi sınır izlenirken arka planda çalışıyorsa birkaç dakikada bir coğrafi sınır çizme etkinliklerine yanıt verir. Uygulamanızı bu yanıt sınırlamalarına nasıl uyarlayacağınızı öğrenmek için Arka Plan Konumu Sınırlamaları başlıklı makaleyi inceleyin.

Aşağıdaki snippet, bir BroadcastReceiver. coğrafi sınır geçişi gerçekleştiğinde bir bildirim yayınlayan. Kullanıcı bildirimi tıkladığında, uygulamanın ana etkinliği görünür:

Kotlin

class GeofenceBroadcastReceiver : BroadcastReceiver() {
    // ...
    override fun onReceive(context: Context?, intent: Intent?) {
        val geofencingEvent = GeofencingEvent.fromIntent(intent)
        if (geofencingEvent.hasError()) {
            val errorMessage = GeofenceStatusCodes
                    .getStatusCodeString(geofencingEvent.errorCode)
            Log.e(TAG, errorMessage)
            return
        }

        // Get the transition type.
        val geofenceTransition = geofencingEvent.geofenceTransition

        // Test that the reported transition was of interest.
        if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER ||
                geofenceTransition == Geofence.GEOFENCE_TRANSITION_EXIT) {

            // Get the geofences that were triggered. A single event can trigger
            // multiple geofences.
            val triggeringGeofences = geofencingEvent.triggeringGeofences

            // Get the transition details as a String.
            val geofenceTransitionDetails = getGeofenceTransitionDetails(
                    this,
                    geofenceTransition,
                    triggeringGeofences
            )

            // Send notification and log the transition details.
            sendNotification(geofenceTransitionDetails)
            Log.i(TAG, geofenceTransitionDetails)
        } else {
            // Log the error.
            Log.e(TAG, getString(R.string.geofence_transition_invalid_type,
                    geofenceTransition))
        }
    }
}

Java

public class GeofenceBroadcastReceiver extends BroadcastReceiver {
    // ...
    protected void onReceive(Context context, Intent intent) {
        GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
        if (geofencingEvent.hasError()) {
            String errorMessage = GeofenceStatusCodes
                    .getStatusCodeString(geofencingEvent.getErrorCode());
            Log.e(TAG, errorMessage);
            return;
        }

        // Get the transition type.
        int geofenceTransition = geofencingEvent.getGeofenceTransition();

        // Test that the reported transition was of interest.
        if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER ||
                geofenceTransition == Geofence.GEOFENCE_TRANSITION_EXIT) {

            // Get the geofences that were triggered. A single event can trigger
            // multiple geofences.
            List<Geofence> triggeringGeofences = geofencingEvent.getTriggeringGeofences();

            // Get the transition details as a String.
            String geofenceTransitionDetails = getGeofenceTransitionDetails(
                    this,
                    geofenceTransition,
                    triggeringGeofences
            );

            // Send notification and log the transition details.
            sendNotification(geofenceTransitionDetails);
            Log.i(TAG, geofenceTransitionDetails);
        } else {
            // Log the error.
            Log.e(TAG, getString(R.string.geofence_transition_invalid_type,
                    geofenceTransition));
        }
    }
}

Geçiş etkinliğini PendingIntent aracılığıyla tespit ettikten sonra BroadcastReceiver coğrafi sınır geçiş türünü alır ve uygulamanın tetiklemek için kullandığı etkinliklerden biri olup olmadığını test eder diğer bildirimlerden biri GEOFENCE_TRANSITION_ENTER veya GEOFENCE_TRANSITION_EXIT seçmemiz gerekir. Hizmet, daha sonra bir bildirim gönderir ve geçiş ayrıntılarını günlüğe kaydeder.

Coğrafi sınır izlemeyi durdur

Artık ihtiyaç duyulmadığında veya istenmediğinde coğrafi sınır izlemeyi durdurmak pil tasarrufuna yardımcı olabilir ve CPU döngüleri değişir. Coğrafi sınır izlemeyi durdurabilirsiniz coğrafi sınır eklemek ve kaldırmak için kullanılan ana etkinlikte; coğrafi sınır kaldırıldığında hemen teslim edebilirsiniz. API, istek kimlikleriyle veya belirli bir veriyle ilişkilendirilen coğrafi sınırları kaldırarak coğrafi sınırları kaldırma PendingIntent

Aşağıdaki snippet, PendingIntent tarafından coğrafi sınırları kaldırır ve cihaz daha önce eklenen coğrafi sınırlara girdiğinde veya bu sınırlardan çıktığında diğer tüm bildirimleri durdurur:

Kotlin

geofencingClient?.removeGeofences(geofencePendingIntent)?.run {
    addOnSuccessListener {
        // Geofences removed
        // ...
    }
    addOnFailureListener {
        // Failed to remove geofences
        // ...
    }
}

Java

geofencingClient.removeGeofences(getGeofencePendingIntent())
        .addOnSuccessListener(this, new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Geofences removed
                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Failed to remove geofences
                // ...
            }
        });

Coğrafi sınırlamayı, düzenli konum güncellemeleri gibi konum bilincine sahip diğer özelliklerle birleştirebilirsiniz. Daha fazla bilgi için bu sınıftaki diğer derslere bakın.

Coğrafi sınır çizme için en iyi uygulamaları kullanma

Bu bölümde, Android için konum API'leriyle coğrafi sınırlamayı kullanmayla ilgili öneriler özetlenmiştir.

Güç tüketimini azaltma

Coğrafi sınır çizme kullanan uygulamalarınızda güç tüketimini optimize etmek için aşağıdaki teknikleri kullanabilirsiniz:

  • Bildirim yanıt hızını daha yüksek bir değere ayarlayın. Bu işlem, coğrafi çit uyarılarının gecikmesini artırarak güç tüketimini iyileştirir. Örneğin, yanıt verme süresini beş olarak ayarlarsanız dakika, uygulamanızın giriş veya çıkış uyarısı olup olmadığını yalnızca beş dakikada bir kontrol etmesi. Daha düşük değerler ayarlamak kullanıcıların bu zaman aralığı içinde bildirim alacağı anlamına gelmez (örneğin, 5 saniye olarak bir değer ayarlarsanız, uyarısını) inceleyin.

  • Kullanıcının uzun süre geçirdiği yerler için daha geniş coğrafi sınır yarıçapı kullanın. örneğin ev veya iş yeri gibi. Daha büyük bir yarıçap, güç tüketimini doğrudan azaltmasa da uygulamanın giriş veya çıkışı kontrol etme sıklığını azaltarak toplam güç tüketimini etkili bir şekilde düşürür.

Coğrafi sınır için en uygun yarıçapı seçin

En iyi sonuçlar için coğrafi çitin minimum yarıçapı 100-150 metre arasında ayarlanmalıdır. Kablosuz bağlantı kullanılabildiğinde konum doğruluğu genellikle 20 - 50 metre arasındadır. Kapalı mekan konumu kullanılabilirken doğruluk aralığı 5 metre kadar küçük olabilir. Kapalı mekanı bilmiyorsanız coğrafi sınır içinde konum bilgisi varsa, Kablosuz konumu doğruluğunun yaklaşık 50 metre.

Kablosuz ağ konumu kullanılamadığında (ör. kırsal alanlarda araba kullanırken) konum doğruluğu düşer. Doğruluk aralığı, yaklaşık 300 metre ila birkaç yüz metre olabilir birkaç kilometre. Bu gibi durumlarda, daha büyük bir yarıçap kullanarak coğrafi çitler oluşturmanız gerekir.

Kullanıcılara uygulamanızda neden coğrafi sınır çizmeyi kullandığını açıklayın

Coğrafi sınır çizmeyi kullandığınızda uygulamanız arka planda konuma eriştiği için uygulamanızın kullanıcılara nasıl fayda sağladığını düşünün. Kullanıcıların uygulamanızı daha iyi anlaması ve şeffaflık için uygulamanızın bu erişime neden ihtiyaç duyduğunu açıkça açıklayın.

Coğrafi sınırlama dahil olmak üzere konum erişimi ile ilgili en iyi uygulamalar hakkında daha fazla bilgi için gizlilikle ilgili en iyi uygulamalar sayfasına bakın.

Uyarı spam'ini azaltmak için bekleme geçiş türünü kullanma

Bir coğrafi çitin yanından kısa süre geçerken çok sayıda uyarı alıyorsanız uyarı sayısını azaltmanın en iyi yolu, GEOFENCE_TRANSITION_ENTER yerine GEOFENCE_TRANSITION_DWELL geçiş türü kullanmaktır. Böylece, konut uyarısı yalnızca kullanıcı durduğunda gönderilir. coğrafi sınır içinde belirli bir süre boyunca. Uçuş süresi gecikmesi ayarlayarak süreyi seçebilirsiniz.

Coğrafi sınırları yalnızca gerektiğinde yeniden kaydet

Kayıtlı coğrafi sınırlar, sahibi olduğu com.google.process.location işleminde saklanır. com.google.android.gms paketi. Sistem bu etkinliklerden sonra coğrafi sınırları geri yüklediği için uygulamanın aşağıdaki etkinlikleri işlemek için herhangi bir şey yapması gerekmez:

  • Google Play Hizmetleri yükseltilir.
  • Kaynak kısıtlaması nedeniyle Google Play hizmetleri sistem tarafından sonlandırılıp yeniden başlatılır.
  • Konum işlemi kilitleniyor.

Sistem aşağıdaki durumlarda coğrafi sınırları kurtaramadığından, uygulama aşağıdaki etkinliklerden sonra hâlâ ihtiyaç duyuluyorsa coğrafi sınırları yeniden kaydetmelidir:

  • Cihaz yeniden başlatılır. Uygulama, cihazın başlatma işlemini tamamlamadan önce dinlemeli ve ardından gerekli coğrafi sınırları kaydetme.
  • Uygulama kaldırılıp yeniden yüklenir.
  • Uygulamanın verileri temizlenir.
  • Google Play Hizmetleri verileri temizlendi.
  • Uygulama GEOFENCE_NOT_AVAILABLE uyarı aldı. Bu durum genelde NLP (Android'in Ağ Konum Sağlayıcısı) devre dışı bırakıldıktan sonra.

Coğrafi sınır giriş etkinliğiyle ilgili sorunları giderme

Cihaz coğrafi sınıra girdiğinde coğrafi sınırlar tetiklenmiyorsa ( GEOFENCE_TRANSITION_ENTER uyarısı tetiklenmez) önce coğrafi sınırlarınızın gerektiği gibi kaydettirilmelidir.

Uyarıların beklendiği gibi çalışmamasının bazı olası nedenleri şunlardır:

  • Coğrafi sınır içinde doğru konum mevcut değil veya coğrafi sınır çok fazla küçük olmalıdır. Çoğu cihazda, coğrafi sınır hizmeti coğrafi sınır için yalnızca ağ konumunu kullanır tetiklemek. Ağ konumu çok daha az güç tükettiği, ayrı konumlar elde etmek daha az zaman aldığı ve en önemlisi de kapalı alanlarda kullanılabildiği için hizmet bu yaklaşımı kullanır.
  • Cihazdaki kablosuz bağlantı kapalı. Kablosuz bağlantının açık olması önemli ölçüde iyileşebilir Konum doğruluğu, dolayısıyla kablosuz bağlantı kapalıysa uygulamanız hiçbir zaman coğrafi sınır uyarıları almayabilir coğrafi sınırın yarıçapı, cihaz modeli veya Android sürümü. Android 4.3'ten (API düzeyi 18) itibaren, kullanıcıların kablosuz bağlantıyı devre dışı bırakmasına rağmen iyi bir ağ konumu elde etmesine olanak tanıyan "yalnızca kablosuz tarama modu" özelliğini ekledik. Her ikisi de devre dışıysa kullanıcıya kablosuz bağlantıyı veya yalnızca kablosuz tarama modunu etkinleştirmesi için istem göstermek ve bir kısayol sunmak iyi bir uygulamadır. Cihazın sistem ayarlarının en iyi konum algılaması için doğru şekilde yapılandırıldığından emin olmak üzere SettingsClient'ı kullanın.

    Not: Uygulamanız Android 10 (API düzeyi 29) veya üstünü hedefliyorsa uygulamanız bir sistem uygulaması veya cihaz politikası denetleyicisi (DPC) olmadığı sürece WifiManager.setEnabled()'yi doğrudan çağıramazsınız. Bunun yerine ayarlar paneli kullanın.

  • Coğrafi sınır içinde güvenilir bir ağ bağlantısı yoktur. Varsa güvenilir veri bağlantısı olmadığından uyarı oluşturulmayabilir. Bunun nedeni, coğrafi sınır hizmetinin Veri bağlantısı gerektiren ağ konumu sağlayıcısına bağlıdır.
  • Uyarılar geç gelebilir. Coğrafi çit hizmeti, konum için sürekli sorgu göndermez. Bu nedenle, uyarı alırken gecikmeyle karşılaşabilirsiniz. Gecikme genellikle 2'den azdır dakika, hatta cihaz hareket ederken daha az. Arka Plan Konum Sınırlamaları etkinse gecikme ortalama 2-3 dakikadır. Cihaz uzun süre hareketsiz duruyorsa gecikme süresi artabilir (6 dakikaya kadar).

Ek kaynaklar

Coğrafi sınırlama hakkında daha fazla bilgi edinmek için aşağıdaki materyalleri inceleyin:

Örnekler

Coğrafi sınır oluşturmak ve izlemek için örnek uygulama.