Senaryo Gelen Kutusu

Sitede göster adımını uygulamada teslim alma

Bir senaryo uygulamayı kapalıyken itemez. Senaryodaki Sitede göster adımı (Adımlar) bu yüzden mesajı göndermez, sunucuda bir hak bırakır; SDK bu hakkı uygulama bir sonraki kez öne geldiğinde teslim alır, sizin kodunuz kampanyayı kendi bileşenleriyle çizer ve sonucu bildirir. Web widget'ı aynı hakkı aynı uç noktadan alır; fark yalnızca çizimin sizde olmasıdır.

Teslim alma

getScenarioInbox(signal?: AbortSignal): Promise<ScenarioInboxEntry[]>

import { AppState } from 'react-native';

AppState.addEventListener('change', async (state) => {
  if (state !== 'active') return;
  const entries = await selwise.getScenarioInbox();
  // ...her biri için çiz, sonra bildir
});

Her ekranda değil, uygulama ön plana geldiğinde çağırın. Senaryo teslimi önceki bir ziyarette yapılanla ilgili bir hatırlatmadır, o an açtığınız ekrandan daha acil değildir; sunucu hakkı süresi dolana kadar tutar.

SDK, kanalın /config cevabında çalışan bir senaryonun uygulamaya bırakılabilir bir adımı olmadığını görürse hiç istek atmaz ve boş liste döner; senaryo yayımlamamış kanallar her açılışta boşuna istek ödemez. Ağ hatasında da boş liste döner, hata fırlatmaz.

interface ScenarioInboxEntry {
  deliveryId: string;
  scenarioId: string;
  runId: string;
  nodeId: string;
  campaignId: string;
  tokens: Record<string, string>;   // adımın çözdüğü birleştirme alanları, sunucuda doldurulmuş
  respectFrequencyCaps: boolean;
  expiresAt: string;                // ISO zaman
  available: boolean;               // false: kampanya durdurulmuş ya da silinmiş
  scenarioOnly: boolean;            // true: yalnızca bu senaryoya ait, getSurfaces'ta yok
  campaign?: Record<string, unknown>;
}

Çizme

  • scenarioOnly: true ise kampanya getSurfaces() içinde yoktur; çizilecek gövde entry.campaign içindedir. Değilse campaignId, getSurfaces() listesindeki yüzeyin id'sidir.
  • tokens, adımın çözdüğü birleştirme alanlarının sunucuda hazırlanmış değerleridir; kampanya metnine nasıl yerleştirileceği çizim kodunuza kalır.
  • respectFrequencyCaps: true, adımın sıklık sınırına uyulmasını istediğini söyler. SDK bu yolda sınırı kendisi denetlemez; sınırın hangi sayaçla tutulacağına siz karar verirsiniz ve engellediyseniz suppressed:frequency_cap bildirirsiniz.
  • Gösterim, tıklama ve kapatma olayları diğer yüzeylerle aynıdır: Kampanya ve Widget.

Sonucu bildirme

acknowledgeScenarioDeliveries(
  acknowledgements: ReadonlyArray<{ deliveryId: string; outcome: ScenarioInboxOutcome | string }>,
  signal?: AbortSignal
): Promise<void>

await selwise.acknowledgeScenarioDeliveries([{ deliveryId: entry.deliveryId, outcome: 'shown' }]);
outcomeAnlam
shownÇizildi; hak teslim edilmiş olarak kapanır
suppressed:frequency_capSıklık sınırı yedi
suppressed:consent_missingOnay yoktu
suppressed:entity_missingKampanya yok (available: false)
suppressed:duplicateAynı hak zaten gösterilmişti
suppressed:audience_mismatchKitle eşleşmedi

Sebep, senaryo raporunda "kimse dönmedi" ile "sıklık sınırı yedi" ayrımını mümkün kılar (Senaryo Raporlama). shown ayrıca yerelde de işaretlenir; bildirim başarısız olursa aynı hak sonraki açılışta yeniden sunulmaz. Bu kayıt yalnızca bellektedir: uygulama bildirim ulaşmadan öldürülürse hak, süresi dolana kadar yeniden gelebilir.

Test

init({ testMode: true }) ile açılan cihaz, test modundaki senaryonun haklarını da alır; test modu olmayan ziyaretçiye bu haklar verilmez. Hakları almak bir GET (mobile_read), sonucu bildirmek bir POST (mobile_write) olduğundan anahtar iki scope'u da taşımalıdır; bkz. Kurulum.

Sırada ne var

Son güncelleme: 10 Ekim 2026