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: trueise kampanyagetSurfaces()içinde yoktur; çizilecek gövdeentry.campaigniçindedir. DeğilsecampaignId,getSurfaces()listesindeki yüzeyinid'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 engellediysenizsuppressed:frequency_capbildirirsiniz.- 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' }]);
outcome | Anlam |
|---|---|
shown | Çizildi; hak teslim edilmiş olarak kapanır |
suppressed:frequency_cap | Sıklık sınırı yedi |
suppressed:consent_missing | Onay yoktu |
suppressed:entity_missing | Kampanya yok (available: false) |
suppressed:duplicate | Aynı hak zaten gösterilmişti |
suppressed:audience_mismatch | Kitle 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