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. İ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, 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 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. Milisaniye cinsinden bir son kullanma süresi belirterek herhangi bir coğrafi sınırı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 çitleri nasıl ekleyeceğiniz ve kaldıracağınız, ardından BroadcastReceiver kullanarak coğrafi çit geçişlerini nasıl dinleyeceğiniz gösterilmektedir.

Not: Wear cihazlarda Coğrafi Sınırlama API'leri gücü verimli bir şekilde kullanmaz. Bu API'lerin Wear'da kullanılması önerilmez. Daha fazla bilgi için Güç ve pil tasarrufu yapma başlıklı makaleyi inceleyin.

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 çit geçişlerini dinlemek için BroadcastReceiver kullanmak istiyorsanız 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ırlama istemcisinin bir örneğini oluşturmanız gerekir. Müşterinizi 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ır oluşturma ve ekleme

Uygulamanızın, coğrafi çit nesneleri oluşturmak için konum API'sinin oluşturucu sınıfını ve bunları eklemek için kolaylık sınıfını kullanarak coğrafi çitler oluşturması ve eklemesi gerekir. Ayrıca, coğrafi çit geçişleri gerçekleştiğinde Konum Hizmetleri'nden gönderilen intent'leri 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, Geofence.Builder simgesini kullanarak coğrafi çit oluşturun. Coğrafi çit için istenen 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. Uygulamalar, gerçek uygulamada kullanıcının konumuna göre dinamik olarak coğrafi çitler oluşturabilir.

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

Aşağıdaki snippet, izlenecek coğrafi çitleri belirtmek ve ilgili coğrafi çit 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 çit tetikleyicinin kullanımı gösterilmektedir. GEOFENCE_TRANSITION_ENTER geçişi, bir 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. INITIAL_TRIGGER_ENTER değerini belirtmek, Konum Hizmetleri'ne, cihaz zaten coğrafi çitin içindeyse GEOFENCE_TRANSITION_ENTER değerinin tetiklenmesi gerektiğini bildirir.

Çoğu durumda, bunun yerine yalnızca kullanıcı bir coğrafi sınır içinde tanımlı bir süre boyunca durduğunda etkinlikleri tetikleyen INITIAL_TRIGGER_DWELL kullanılması 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. Coğrafi çitlerinizden en iyi sonuçları elde etmenin bir diğer stratejisi de minimum yarıçapı 100 metre olarak ayarlamaktır. 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, 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, BroadcastReceiver, coğrafi çit geçişini yönetmenin iyi bir yoludur. 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 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 çit eklemek için GeofencingClient.addGeofences() yöntemini kullanın. GeofencingRequest nesnesini ve PendingIntent öğesini 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. GeofenceBroadcastReceiver gibi bir yayın alıcı, Intent'un çağrıldığını fark eder ve ardından intent'ten coğrafi sınırlama etkinliğini elde edebilir, coğrafi sınır geçişlerinin türünü belirleyebilir ve tanımlanan coğrafi sınırlardan hangisinin tetiklendiğini belirleyebilir. 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 seviyesi 26) ve sonraki sürümlerde, bir uygulama coğrafi çiti izlerken arka planda çalışıyorsa cihaz birkaç dakikada bir coğrafi çitleme 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'te, coğrafi çit geçişi gerçekleştiğinde bildirim yayınlayan bir BroadcastReceiver özniteliğinin 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));
        }
    }
}

PendingIntent aracılığıyla geçiş etkinliğini algıladıktan sonra BroadcastReceiver, coğrafi sınır geçiş türünü alır ve bu etkinliğin, uygulamanın bildirimleri tetiklemek için kullandığı etkinliklerden biri olup olmadığını test eder. Bu durumda bu etkinlikler GEOFENCE_TRANSITION_ENTER veya GEOFENCE_TRANSITION_EXIT olabilir. Ardından hizmet bir bildirim gönderir ve geçiş ayrıntılarını günlüğe kaydeder.

Coğrafi sınır izlemeyi durdurma

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 eklemek ve kaldırmak için kullanılan ana işlemde coğrafi sınır izlemeyi durdurabilirsiniz. Coğrafi sınır kaldırıldığında izleme hemen durdurulur. 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ırma yöntemleri sağlar.

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 göz atın.

Coğrafi sınırlama 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ırlama 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, beş dakikalık bir yanıt verme değeri 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 bilgilendirileceği anlamına gelmez (örneğin, 5 saniyelik bir değer ayarlarsanız uyarının alınması biraz daha uzun sürebilir).

  • Kullanıcının önemli miktarda zaman geçirdiği konumlar (ör. ev veya iş yeri) için daha büyük bir coğrafi çit 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 çitiniz 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. 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 ağ konumu kullanılamadığında (ör. kırsal alanlarda araba kullanırken) konum doğruluğu düşer. 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 çitler oluşturmanız gerekir.

Uygulamanızın neden coğrafi sınırlama kullandığını kullanıcılara açıklayın

Coğrafi sınırlama kullandığınızda uygulamanız arka planda konuma eriştiğinden, uygulamanızın kullanıcılara nasıl avantajlar 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ı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. Uçuş süresi gecikmesi ayarlayarak süreyi seçebilirsiniz.

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

Kaydedilen coğrafi sınırlar, com.google.android.gms paketinin sahip olduğu com.google.process.location işleminde saklanır. 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 önyükleme işleminin tamamlanmasını dinlemeli ve ardından gerekli coğrafi sınırları yeniden kaydetmelidir.
  • Uygulama kaldırılıp yeniden yüklenir.
  • Uygulamanın verileri temizlenir.
  • Google Play Hizmetleri verileri temizlenir.
  • Uygulama bir GEOFENCE_NOT_AVAILABLE uyarısı aldı. Bu durum 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 bir 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 çitiniz içinde doğru konum bilgisi kullanılamıyor veya coğrafi çitiniz ç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. 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ı 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 hiçbir zaman coğrafi çit uyarısı 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 kablosuz bağlantıyı veya yalnızca kablosuz tarama modunu etkinleştirmesi için istem göstermek ve bir kısayol sağlamak 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 çitiniz içinde güvenilir ağ bağlantısı yok. 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. Gecikme genellikle 2 dakikadan kısadır. Cihaz hareket halindeyken bu süre daha da kısadır. Arka Planda Konum Sınırları etkinse gecikme ortalama 2-3 dakika olur. 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ırlar oluşturmak ve izlemek için kullanılan örnek uygulama.