PushizoDocs
Kanallar

Bölgeler (geofence)

Konum paylaşan kullanıcılar tanımladığınız bir alana girip çıktığında otomasyon başlatın. Karar kaydı: ADR-0064. Önce konum paylaşımını açmanız gerekir.

Konum paylaşan kullanıcılar tanımladığınız bir alana girip çıktığında otomasyon başlatın. Karar kaydı: docs/adr/0064-geofence-tetigi.md. Önce konum paylaşımını açmanız gerekir.

Nasıl çalışır

SDK uygulama açıkken konumu en sık 5 dakikada bir gönderir. Sunucu bu konumu açık bölgelerinizle karşılaştırır ve geçiş olduğunda olay yazar:

OlayÖzellikler
geofence_entergeofence_id, geofence_name, detection
geofence_exitgeofence_id, geofence_name, detection

Yeni SDK sürümü veya ek izin gerekmez; konum paylaşan tüm SDK'larda çalışır.

Varsayılan davranış: Yalnızca uygulama açıkken gönderilen konum değerlendirilir. Uygulaması kapalı kullanıcının geçişi görülmez; kullanıcı bölgedeyken uygulamayı açarsa giriş o anda oluşur. Uygulama kapalıyken de çalışması için aşağıdaki arka plan izlemeyi açın.

Bölge oluşturma

Dashboard → Bölgeler → Yeni bölge:

AlanAçıklamaVarsayılan
AdApp içinde tekilZorunlu
Enlem, boylamMerkez noktaZorunlu
Yarıçap100–50.000 metre500
Bekleme süresiSon giriş olayından sonra yeni giriş olayı için beklenecek süre, 0–10.080 dakika60

App başına en fazla 500 bölge tanımlanabilir.

Otomasyonda kullanma

Otomasyon tetikleyicisinde Olay türünü seçin, Bölge tetiği listesinden bölgeyi ve giriş ya da çıkışı seçin. Olay adı ve filtre otomatik dolar:

{ "kind": "event", "event_name": "geofence_enter", "property_filters": [{ "property": "geofence_id", "op": "eq", "value": "gfn_..." }] }

Olayın kullanıcıya bağlı olması gerekir: kimliği belli olmayan abonelikte olay yazılır ama otomasyon başlamaz.

Bölgeye son 7 günde girenleri segmentte de seçebilirsiniz:

{ "all": [{ "field": "event", "name": "geofence_enter", "op": "count_gte", "value": 1, "days": 7, "where": { "key": "geofence_id", "value": "gfn_..." } }] }

Giriş ve çıkış kuralları

  • Merkeze uzaklık yarıçaptan küçük veya eşitse giriş olur.
  • Çıkış için uzaklığın yarıçapı en az 50, doğruluğa göre en çok 200 metre aşması gerekir. Bu pay, GPS oynamasının sınırda sürekli olay üretmesini önler.
  • Doğruluğu 1000 metreden kötü konum geçiş üretmez.
  • Bekleme süresi dolmadan yapılan giriş olay üretmez, o kalışın çıkışı da olay üretmez.

Arka plan izleme

İsteğe bağlıdır, varsayılan kapalıdır ve yerel Android ile iOS SDK'larında vardır. İzlemeyi işletim sistemi yapar. Sunucuya koordinat gitmez, yalnızca bölgeye girildiği veya çıkıldığı bildirilir. Karar kaydı: docs/adr/0065-arka-plan-bolge-izleme.md.

Gerekenler:

  1. Konum paylaşımı açık olmalı (Location.setShared(true)).
  2. Kullanıcı arka plan iznini vermeli.
  3. Uygulama setGeofencingEnabled(true) çağırmalı.
// build.gradle: implementation("com.google.android.gms:play-services-location:21.3.0")
// AndroidManifest.xml: ACCESS_FINE_LOCATION ve ACCESS_BACKGROUND_LOCATION
Pushizo.Location.requestBackgroundPermission(activity)
Pushizo.Location.setGeofencingEnabled(true)
// Info.plist: NSLocationWhenInUseUsageDescription ve NSLocationAlwaysAndWhenInUseUsageDescription
Pushizo.Location.requestAlwaysPermission { granted in
    if granted { Pushizo.Location.setGeofencingEnabled(true) }
}

Bilmeniz gerekenler:

  • "Her zaman" konum izni App Store ve Google Play'de ek beyan ister, aydınlatma metninizde de yer almalıdır. Bu izinleri SDK eklemez, siz eklersiniz.
  • iOS en yakın 20, Android en yakın 90 bölgeyi izler. Liste uygulama açıkken en az 6 saatte bir veya cihaz 5 km uzaklaşınca yenilenir.
  • Android yeniden başlatınca kayıtlar silinir, sonraki uygulama açılışında yeniden yapılır.
  • Play Services olmayan cihazda (HMS, ADM) veya bağımlılığı eklemeyen uygulamada arka plan izleme başlamaz, uygulama açıkken çalışan tetik devam eder.
  • İşletim sistemi bildirimi geciktirebilir veya pil tasarrufunda kısıtlayabilir.
  • Flutter, React Native, Capacitor, Cordova, MAUI, Unity ve KMP köprülerinde bu API henüz yoktur. Web'de arka plan izleme yoktur.

Olayların detection özelliği arka plan bildiriminde device, uygulama açıkken gönderilen konumda location değerini alır.

API

curl -X POST "https://api.pushizo.com/v1/apps/$APP_ID/geofences" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Kadıköy mağazası","lat":40.9903,"lng":29.0292,"radius_m":300}'
UçKapsam
GET /v1/apps/{appId}/geofences, GET .../{geofenceId}analytics:read
POST /v1/apps/{appId}/geofences, PATCH ve DELETE .../{geofenceId}admin

Yanıtta enter_count, exit_count toplam olay sayısı, inside_count şu an içeride olduğu bilinen abonelik sayısıdır.

Gizlilik

Bölge durumu koordinat içermez. Kullanıcı konum paylaşımını kapatınca bölge durumları olay üretmeden silinir, cihazdaki izleme durur ve sonraki bildirimler yok sayılır. Abonelik veya kullanıcı silinince de silinir.

Bu sayfada