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

Coğrafi sınır belirleme, kullanıcının mevcut konumu ile alakalı olabilecek konumlara yakınlığının bilinirliğini bir araya getirir. İlgilenilen bir konumu işaretlemek için enlem ve boylamını belirtirsiniz. Konumun yakınlığını ayarlamak için bir yarıçap eklersiniz. Enlem, boylam ve yarıçap, ilgilenilen konumun çevresinde dairesel bir alan veya bir çit oluşturarak coğrafi sınırları tanımlar.

Etkin durumdaki birden fazla coğrafi sınır olabilir. Bunlar cihaz kullanıcısı başına uygulama başına en fazla 100 olabilir. Her coğrafi sınır için Konum Hizmetleri'nden giriş ve çıkış etkinliklerini size göndermesini isteyebilirsiniz veya bir etkinliği tetiklemeden önce coğrafi sınır alanında beklenecek veya beklemede tutulacak bir süre belirtebilirsiniz. Milisaniye cinsinden bir geçerlilik süresi belirterek coğrafi sınırların süresini sınırlayabilirsiniz. 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 daha sonra, BroadcastReceiver kullanarak coğrafi sınır geçişlerinin nasıl kullanılacağı gösterilmektedir.

Coğrafi sınır izleme için kurulum

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

Daha fazla bilgi edinmek için konum izni isteme ile ilgili rehberi inceleyin.

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

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

Konum API'lerine erişmek için Geoçicing istemcisinin bir örneğini oluşturmanız gerekir. İ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, Geofence nesneleri oluşturmak için konum API'sinin derleyici sınıfını ve bunları eklemek için kolaylık sınıfını kullanarak coğrafi sınırlar oluşturup eklemesi gerekir. Ayrıca, coğrafi sınır geçişleri gerçekleştiğinde Konum Hizmetleri'nden gönderilen amaçları işlemek için bu bölümde gösterildiği gibi bir PendingIntent tanımlayabilirsiniz.

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 ise sınır, uygulama başına her cihaz kullanıcısı için 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 coğrafi sınır oluşturun ve coğrafi sınır için istediğiniz yarıçapı, süreyi ve geçiş türlerini ayarlayın. Ö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. Gerçek pratikte, uygulamalar kullanıcının konumuna göre dinamik olarak coğrafi sınırlar oluşturabilir.

Coğrafi sınırları ve ilk tetikleyicileri belirtin

Aşağıdaki snippet, izlenecek coğrafi sınırları belirtmek ve ilgili coğrafi sınır etkinliklerinin nasıl tetikleneceğini ayarlamak için GeofencingRequest sınıfını ve iç içe yerleştirilmiş GeofencingRequestBuilder sınıfını kullanır:

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 sınır tetikleyicisinin kullanımı gösterilmektedir. GEOFENCE_TRANSITION_ENTER geçişi, cihaz coğrafi sınıra girdiğinde, GEOFENCE_TRANSITION_EXIT geçişi ise cihaz coğrafi sınırdan çıktığında tetiklenir. INITIAL_TRIGGER_ENTER değerinin belirtilmesi, cihaz zaten coğrafi sınır içindeyse GEOFENCE_TRANSITION_ENTER hizmetinin tetiklenmesi gerektiğini belirtir.

Çoğu durumda bunun yerine, etkinlikleri yalnızca kullanıcı bir coğrafi sınır içinde tanımlı bir süre boyunca durduğunda tetikleyen INITIAL_TRIGGER_DWELL kullanılması tercih edilebilir. Bu yaklaşım, bir cihaz coğrafi sınırlara kısa süreliğine girip çıktıysa çok sayıda bildirimden kaynaklanan "uyarı spam'ini" azaltmaya yardımcı olabilir. Coğrafi sınırlarınızdan en iyi sonuçları elde etmek için diğer bir strateji, 100 metrelik bir minimum yarıçap belirlemektir. Bu, genel kablosuz ağların konum doğruluğunun hesaplanmasına ve aynı zamanda cihazın güç tüketiminin azaltılmasına yardımcı olur.

Geofence geçişleri için yayın alıcı tanımlama

Konum Hizmetleri'nden gönderilen bir Intent, uygulamanızda çeşitli işlemleri tetikleyebilir. Ancak bileşenlerin yalnızca kullanıcı işlemine yanıt olarak görünür hale gelmesi gerektiğinden, bir etkinlik veya parça başlatma olmamanız gerekir. Çoğu durumda, coğrafi sınır geçişini yönetmek için BroadcastReceiver iyi bir yöntemdir. BroadcastReceiver, coğrafi sınıra geçiş veya sınırdan çıkma gibi bir etkinlik gerçekleştiğinde güncellemeler alır ve uzun süreli arka plan çalışmalarına başlayabilir.

Aşağıdaki snippet'te, BroadcastReceiver ile başlayan bir PendingIntent öğesinin 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 öğesini sağlayın. Aşağıdaki snippet, sonuçların işlenmesini gösterir:

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 Hizmetleri, kullanıcının coğrafi sınıra girdiğini veya coğrafi sınırdan çıktığını algıladığında coğrafi sınır ekleme isteğinde bulunduğunuz PendingIntent içinde yer alan Intent öğesini gönderir. GeofenceBroadcastReceiver gibi bir yayın alıcı, Intent çağrıldığını fark eder ve daha sonra istekten coğrafi sınır çizme etkinliğini alabilir, Geofence geçişlerinin türünü belirleyebilir ve tanımlanan coğrafi sınırlardan hangisinin tetiklendiğini belirleyebilir. Yayın alıcı, bir uygulamayı arka planda çalışmaya başlaması için yönlendirebilir veya isterse çıktı olarak bir bildirim gönderebilir.

Not: Android 8.0 (API düzeyi 26) ve sonraki sürümlerde bir uygulama coğrafi sınır izlerken arka planda çalışıyorsa cihaz birkaç dakikada bir coğrafi sınır çizme etkinliklerine yanıt verir. Uygulamanızı bu yanıt sınırlarına nasıl uyarlayacağınızı öğrenmek için Arka Planda Konum Sınırları bölümüne bakın.

Aşağıdaki snippet'te, coğrafi sınır geçişi gerçekleştiğinde bildirim yayınlayan bir BroadcastReceiver öğesinin nasıl tanımlanacağı gösterilmektedir. 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));
        }
    }
}

BroadcastReceiver, PendingIntent aracılığıyla geçiş etkinliğini tespit ettikten sonra geofence geçiş türünü alır ve uygulamanın bildirimleri tetiklemek için kullandığı etkinliklerden biri olup olmadığını test eder. Bu durumda GEOFENCE_TRANSITION_ENTER veya GEOFENCE_TRANSITION_EXIT seçeneklerinden birini test eder. 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, cihazdaki pil gücünden ve CPU döngülerinden tasarruf edilmesine yardımcı olabilir. Coğrafi sınır izlemeyi kaldırmak, coğrafi sınır eklemek ve kaldırmak için kullanılan ana etkinlikte coğrafi sınır izlemeyi durdurabilirsiniz. Coğrafi sınır izlemeyi hemen durdurursunuz. API, istek kimliklerine göre veya belirli bir PendingIntent ile ilişkili coğrafi sınırları kaldırarak coğrafi sınırları kaldırmak için yöntemler sunar.

Aşağıdaki snippet, PendingIntent tarihine kadar coğrafi sınırları kaldırır ve cihaz daha önce eklenen coğrafi sınırlara girdiğinde veya bu duvarlardan çıktığında diğer tüm bildirimler durdurulur:

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ır belirlemeyi, düzenli konum güncellemeleri gibi konuma duyarlı 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ır çizmeyi kullanmaya ilişkin öneriler özetlenmektedir.

Güç tüketimini azaltın

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

  • Bildirim duyarlılığını daha yüksek bir değere ayarlayın. Bunun yapılması coğrafi sınır uyarılarının gecikmesini artırarak güç tüketimini iyileştirir. Örneğin, yanıt verme değerini beş dakika olarak ayarlarsanız uygulamanız giriş veya çıkış uyarısını yalnızca beş dakikada bir kontrol eder. Daha düşük değerler ayarlamak kullanıcıların bu süre içinde bildirim alacağı anlamına gelmez (örneğin, 5 saniye olarak bir değer belirlerseniz uyarının gelmesi biraz daha uzun sürebilir).

  • Ev veya iş gibi, kullanıcının uzun süre geçirdiği yerler için daha geniş coğrafi sınır yarıçapı kullanın. Daha geniş bir yarıçap, güç tüketimini doğrudan azaltmaz ancak uygulamanın giriş veya çıkış durumunu kontrol etme sıklığını azaltarak genel güç tüketimini etkili bir şekilde azaltır.

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

En iyi sonuçlar için coğrafi sınırların 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. İç mekan konumu mevcut olduğunda doğruluk aralığı 5 metreye kadar düşebilir. Coğrafi sınır içinde iç mekan konumunun mevcut olduğunu bilmiyorsanız kablosuz konum doğruluğunun yaklaşık 50 metre olduğunu varsayın.

Kablosuz konumu kullanılamadığında (örneğin, kırsal alanlarda araç kullanıyorsanız) konum doğruluğu azalır. Doğruluk aralığı birkaç yüz metre ile birkaç kilometre arasında olabilir. Bu gibi durumlarda, daha büyük bir yarıçap kullanarak coğrafi sınır çizmeniz gerekir.

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

Coğrafi sınır çizmeyi kullanırken uygulamanız arka planda konuma eriştiğinden, uygulamanızın kullanıcılara nasıl fayda sağladığını düşünün. Anlaşılırlık ve şeffaflığı artırmak için uygulamanızın neden bu erişime ihtiyaç duyduğunu net bir şekilde açıklayın.

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

Spam uyarıları azaltmak için bekleme geçişi türünü kullanın

Aracınızı coğrafi sınırdan kısa bir süre geçerken çok sayıda uyarı alırsanız uyarıları azaltmanın en iyi yolu GEOFENCE_TRANSITION_ENTER yerine GEOFENCE_TRANSITION_DWELL geçiş türünü kullanmaktır. Bu şekilde, konut uyarısı yalnızca kullanıcı belirli bir süre boyunca coğrafi sınır içinde durduğunda gönderilir. Hareket gecikmesi ayarlayarak süreyi seçebilirsiniz.

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

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

  • Google Play Hizmetleri yükseltildi.
  • 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ı kurtaramaz. Bu nedenle, aşağıdaki olaylardan sonra hâlâ ihtiyaç duyulması halinde uygulamanın coğrafi sınırları yeniden kaydetmesi gerekir:

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

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) öncelikle coğrafi sınırlarınızın bu kılavuzda açıklandığı gibi doğru şekilde kaydedildiğinden emin olun.

Uyarıların beklendiği gibi çalışmamasının bazı olası nedenleri aşağıda belirtilmiştir:

  • Coğrafi sınır içinde doğru konum mevcut değil veya coğrafi sınır çok küçük. Çoğu cihazda, coğrafi sınır hizmeti coğrafi sınır tetikleme için yalnızca ağ konumunu kullanır. Hizmet bu yaklaşımı kullanır çünkü ağ konumu çok daha az güç tüketir, ayrı konumlara ulaşmak için daha az zaman alır ve en önemlisi de bunların iç mekanlarda kullanılabilmesidir.
  • Cihazda kablosuz bağlantı kapalı. Kablosuz bağlantının açık olması, konum doğruluğunu önemli ölçüde artırabilir. Bu nedenle, kablosuz bağlantı kapalıysa uygulamanız coğrafi çitin yarıçapı, cihaz modeli veya Android sürümü gibi çeşitli ayarlara bağlı olarak coğrafi sınır uyarıları almayabilir. Android 4.3'ten (API düzeyi 18) başlayarak, kullanıcıların kablosuz bağlantıyı devre dışı bırakmasına ancak yine de iyi ağ konumu almasına olanak tanıyan "Yalnızca kablosuz ağ taraması modu" özelliğini ekledik. Her ikisi de devre dışıysa kullanıcıya istem göstermek ve kullanıcıya yalnızca kablosuz ağ veya yalnızca kablosuz ağ taraması modunu etkinleştirmesi için bir kısayol sunmak iyi bir uygulamadır. Cihazın sistem ayarlarının optimum konum algılama amacıyla doğru şekilde yapılandırıldığından emin olmak için SettingsClient kullanın.

    Not: Uygulamanız Android 10 (API düzeyi 29) veya sonraki sürümleri hedefliyorsa bir sistem uygulaması veya cihaz politikası denetleyici (DPC) olmadığı sürece doğrudan WifiManager.setEnabled() yöntemini çağıramazsınız. Bunun yerine ayarlar panelini kullanın.

  • Coğrafi sınır içinde güvenilir bir ağ bağlantısı yoktur. Güvenilir bir veri bağlantısı yoksa uyarı oluşturulmayabilir. Bunun nedeni, coğrafi sınır hizmetinin ağ konumu sağlayıcısına bağlı olmasıdır. Bu da veri bağlantısı gerektirir.
  • Uyarılar gecikebilir. Geofence hizmeti sürekli olarak konum sorgusu yapmaz, bu nedenle uyarı alınırken bir miktar gecikme yaşanabilir. Genellikle gecikme 2 dakikadan azdır. Cihaz hareket ederken bu süre daha da kısadır. Arka Planda Konum Sınırları etkinse gecikme ortalama 2-3 dakika olur. Cihaz uzun bir süre hareketsiz kalırsa gecikme süresi uzayabilir (6 dakikaya kadar).

Ek kaynaklar

Coğrafi sınır çizme hakkında daha fazla bilgi edinmek için aşağıdaki materyalleri görüntüleyin:

Numuneler

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