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_enter | geofence_id, geofence_name, detection |
geofence_exit | geofence_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:
| Alan | Açıklama | Varsayılan |
|---|---|---|
| Ad | App içinde tekil | Zorunlu |
| Enlem, boylam | Merkez nokta | Zorunlu |
| Yarıçap | 100–50.000 metre | 500 |
| Bekleme süresi | Son giriş olayından sonra yeni giriş olayı için beklenecek süre, 0–10.080 dakika | 60 |
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:
- Konum paylaşımı açık olmalı (
Location.setShared(true)). - Kullanıcı arka plan iznini vermeli.
- 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.
Konum tabanlı hedefleme
Kullanıcının izniyle cihaz konumunu alıp "şu noktanın X km yakınındakiler" segmentleri oluşturabilirsiniz (ADR-0025).
E-posta
E-posta kanalı — SMTP, Amazon SES ve Resend sağlayıcıları, gönderici alan adı doğrulaması, içerik alanları (MJML/HTML, Liquid), açılma/tıklama izleme, List-Unsubscribe ve gelen geri bildirim webhook'ları.