Kimlik, Onay ve Kuyruk
Ziyaretçi, oturum, onay ve çevrimdışı kuyruk
Ziyaretçi ve oturum kimliği, giriş yapan kullanıcının bağlanması, onay ve çevrimdışı kuyruk. Bunların hepsi init() sırasında kurulur ve ekran kodunuzdan bağımsız çalışır.
Ziyaretçi ve oturum
- Ziyaretçi kimliği ilk açılışta üretilir ve
storage'a yazılır.storagevermezseniz her açılış yeni bir ziyaretçidir: dönen ziyaretçi önerileri (recently_viewed,user_history) boş kalır ve çevrimdışı olaylar uygulama kapanınca kaybolur.debug: trueiken bu durum günlüğe düşer. - Oturum 30 dakikalık hareketsizlikle biter (
SESSION_TIMEOUT_MS); webdeki pencere ile aynıdır. Uygulama arka plana alınıp 30 dakikadan sonra döndürülürse ilk olayda yeni oturum açılır. Süresi dolmuş oturum devralınmaz, iki ziyaret tek yolculuğa karışmaz.
Kimliklendirme
Kullanıcı giriş yaptığında çağırın:
identify(siteUserId: string, traits?: Record<string, unknown>): Promise<void>
logout(): Promise<void>
await selwise.identify('MUSTERI-1001', {
email: 'musteri@example.com', // ayrı bir alana alınır
memberTier: 'gold', // geri kalanı özellik olarak saklanır
});
identify iki şey yapar: kimliği yerelde saklar (bundan sonraki her olay ve sipariş taşır) ve sunucuya bildirir; sunucu giriş öncesi toplanan anonim geçmişi bu müşteriyle birleştirir. İkinci adım olmadan kişi segmentlerde, müşteri profilinde ve yaşam boyu değer hesabında hiç görünmezdi.
- Kural: boş olmayan bir metin, en çok 64 karakter, kararlı bir değer. Web ve mobilde aynı kimliği gönderin; aynı müşteri tek profilde birleşir. Ayrıntı: Kullanıcı Kimliklendirme.
- SDK
false,true,null,undefinedmetinlerini kimlik saymaz (boolean'ın metne çevrilmiş hâlidir) ve sayıyı metne çevirir. identifyasla hata fırlatmaz: ağ çağrısı başarısız olursa yerel kimlik yine de ayarlıdır. Bu yüzden sunucunun reddettiği bir çağrı sessiz kalır;debug: trueileIdentify call failedsatırını arayın. Sunucu 64 karakteri aşan kimliği ve geçersiz biremaildeğerini400ile reddeder.- Kullanıcı değiştiğinde ya da birleşme olduğunda ayrıca bir
identifyolayı yazılır; özellikler bu olaya girmez. Aynı kişi için tekrar çağırmak yeni olay üretmez. logout()kuyruğu gönderir, giriş yapmış kullanıcıyı siler, yeni oturum açar ve yolculuk kimliğini sıfırlar; ziyaretçi kimliği aynı kalır. Cihaz aynı cihazdır ama iki kullanıcının davranışı tek oturumda birleşmemelidir.
Onay
Sunucu olay partisini onay özeti olmadan reddeder, bu yüzden SDK her partiye bir özet ekler. Varsayılan en dar dürüst iddiadır:
{ granted: true, categories: { necessary: true, analytics: false, marketing: false, preferences: false }, source: 'sdk-default' }
Dikkat: varsayılanda granted: true olduğundan takip açık başlar. Onay yönetim aracınız (CMP) karar verene kadar hiçbir şey göndermek istemiyorsanız:
await selwise.init({ /* ... */ consent: { granted: false } });
// CMP karar verince
await selwise.setConsent({ granted: true, categories: { analytics: true, marketing: false } });
const current = selwise.getConsent(); // ConsentSnapshot
- Onay gönderim anında değerlendirilir, olay üretim anında değil. Karardan önce gezilen ekranlar onay verilirse geriye dönük gönderilir; verilmezse kuyrukta tutulur, silinmez. Kuyruk kalıcıysa bekleyen olaylar depoda yaşar. Kullanıcı izlemeyi kesin olarak reddettiyse bu birikimi istemiyorsanız onay kararı gelene kadar SDK'yı başlatmayın.
granted: trueikennecessaryher zamantrueyazılır. SDK yalnızcagrantedalanını uygular;categoriesdeğerleri sunucuya taşınır ama SDK kategori bazında olay engellemez.- Karar
storage'a yazılır ve sonraki açılışta okunur;init()'e açıkçaconsentverirseniz o açılış için disktekinin yerine geçer. - Sunucu onayı verilmemiş partiyi
200yanıtıyla amasuccess: falseile düşürür; SDK yalnızca onay verildiyse gönderdiği için bunu normalde görmezsiniz.
Web tarafındaki onay modeli için: Onay Yönetimi.
Çevrimdışı kuyruk
track() olayı bir kuyruğa alır; kuyruk storage'a yazılır ve bir sonraki init() çağrısında gönderilir.
| Davranış | Değer |
|---|---|
| Gönderim tetikleri | Kuyruk batchSize'a ulaşınca, her flushIntervalMs'te, flush() çağrısında, trackOrder öncesinde, setConsent onay verdikten sonra. Değerler: Kurulum |
| Parti | Bir parti hep tek ekranın olaylarını taşır; ekran değişirse sıradaki parti ayrı istektir. Bir flush() en çok 20 istek atar, kalanı sonrakine kalır |
| Boyut sınırı | maxQueueSize; dolunca en eski olaylar silinir |
| Yeniden deneme | Ağ hatası, 5xx, 408 ve 429 yeniden denenir; olay sunucudaki yeniden deneme ayarına göre (SDK varsayılanı 5, kanal yapılandırması gelince 3) denendikten sonra silinir |
| Kalıcı reddedilen | 408 ve 429 dışındaki 4xx yanıtı kalıcı sayılır; parti silinir, aksi hâlde reddedilen bir olay arkasındaki herkesi bloke ederdi |
| Kalıcılık | Kanalın çevrimdışı kalıcılık ayarı kapatılırsa (panelde Offline Persistence) depodaki kopya da silinir |
flush() "gönderdiklerimin gittiğinden emin ol" anlamına gelir: uçuştaki bir gönderimi bekler, sonra kalanı da gönderir. Arka plana geçerken çağırın (Kurulum). destroy() zamanlayıcıyı durdurur, son kez gönderir ve yazmaları bitirir; testlerde ve uygulama kapanırken kullanılır.
Olay endpoint'i hatayı gizleyebilir
Olay gönderimi anahtarsızdır ve kanal anahtarıyla tanınır. Kanal anahtarı bilinmiyorsa ya da kanal doğrulanmamışsa sunucu 200 ile success: false döner; SDK bunu başarı sayıp partiyi siler. Kanal anahtarından şüphelendiğinizde debug: true ile Could not load /config (404) satırına bakın. Ayrıntı: Sorun Giderme.
Depoda tutulan anahtarlar
| Anahtar | İçerik |
|---|---|
selwise_vid | Ziyaretçi kimliği |
selwise_session | Oturum kimliği ve son hareket zamanı |
selwise_suid | Giriş yapmış kullanıcı kimliği |
selwise_queue | Gönderilmemiş olaylar |
selwise_consent | Son onay özeti |
selwise_dismissed | Kapatılan yüzeyler |
selwise_frequency_caps | Sıklık sınırı sayaçları |
selwise_goal_reached | Oturumda bildirilen hedef adımları |
Sepet kalıcı değildir (bkz. Sepet ve Dinamik İçerik). Depo olarak getItem, setItem ve removeItem sözü veren herhangi bir nesne çalışır; AsyncStorage olduğu gibi uyar, MMKV için üç satırlık bir uyarlayıcı yeter. Depo hata fırlatırsa SDK bunu "değer yok" sayar ve çökmez.
Sırada ne var
Son güncelleme: 10 Ekim 2026