API Referansı

Selwise sınıfının tüm üyeleri ve imzaları

Selwise sınıfının tüm genel üyeleri, 0.12.0 kaynak kodundan alınmış imzalarla. Konu anlatımı için ilgili sayfalara bağlanır. Dışa aktarılan diğer her şey (hook'lar, yardımcılar, tipler) Tipler ve Yardımcılar sayfasındadır.

import { Selwise } from '@selwise/react-native';   // default export da aynı sınıftır
const selwise = new Selwise();

init() bitmeden: olay üreten track ailesi (track, trackProductView, trackAddToCart, trackRemoveFromCart, trackSurfaceView, trackSurfaceClick, trackEnrichmentView, trackEnrichmentClick, trackSearchClick, trackRecommendationImpression, trackRecommendationClick) olayı sessizce atar. setScreen, trackScreenView, identify, logout, setConsent, getConsent, getSurfaces, getRecommendation*, search, trackOrder, getEnrichment, getScenarioInbox ve endpoints [Selwise] call init() before using the SDK hatası fırlatır. setCart, getCart, onCartChange ve resolveGoalBar init() öncesinde de çalışır; flush ve destroy hiçbir şey yapmaz.

Yaşam döngüsü

ÜyeİmzaNot
init(options: SelwiseInitOptions) => Promise<void>Bir kez; ikinci çağrı yok sayılır. Bkz. Kurulum
destroy() => Promise<void>Zamanlayıcıyı durdurur, kuyruğu gönderir ve yazar
isInitializedboolean
endpointsEndpointsHam uç noktalar; init() öncesi hata fırlatır
flush() => Promise<void>Kuyruğu gönderir; uçuştaki gönderimi bekler

Kimlik, onay, ekran

Üyeİmza
identify(siteUserId: string, traits?: Record<string, unknown>) => Promise<void>
logout() => Promise<void>
setConsent(snapshot: ConsentSnapshot) => Promise<void>
getConsent() => ConsentSnapshot
setScreen(pageUrl: string) => void
trackScreenView(pageUrl: string, metadata?: TrackOptions['metadata']) => void

Ayrıntı: Kimlik, Onay ve Kuyruk, Event Takibi.

Olaylar ve sipariş

Üyeİmza
track(name: string, options?: TrackOptions) => void
trackProductView(itemCode: string, metadata?) => void
trackAddToCart(itemCode: string, metadata?) => void
trackRemoveFromCart(itemCode: string, metadata?) => void
trackOrder(order: OrderInput) => Promise<{ success: boolean; created: boolean; id?: string }>

Kampanya, widget, sepet

Üyeİmza
getSurfaces(pageUrl?: string, context?: { pageType?; deviceType?; country?; behavior?; locale?: string; product?: ProductInput | null }) => Promise<Surface[]>
recordSurfaceShown(surface: Pick<Surface, 'id' | 'placement'>) => Promise<void>
trackSurfaceView(surface: Pick<Surface, 'id' | 'kind' | 'type'>) => void
trackSurfaceClick(surface, metadata?) => void
dismissSurface(surface) => Promise<void>
resetDismissals() => Promise<void>
invalidateSurfaces() => void
getExperimentAssignments() => ExperimentAssignment[]
getTheme() => Record<string, string>
getSearchStatus() => { enabled: boolean; testMode: boolean }
subscribeNewsletter(email: string, extra?: { fullName?: string; locale?: string; surfaceId?: string }) => Promise<{ success: boolean }>
setCart(cart: CartInput | null) => boolean
getCart() => DynamicCart
onCartChange(listener: (cart: DynamicCart) => void) => () => void
resolveGoalBar(surface: Pick<Surface, 'type' | 'content'>, options?: { locale?: string }) => GoalBarView
trackGoalReached(surface, detail: { step: number; threshold?: number; metric?: GoalMetric }) => boolean

Ayrıntı: Kampanya ve Widget, Sepet ve Dinamik İçerik.

Senaryo, zenginleştirme

Üyeİmza
getScenarioInbox(signal?: AbortSignal) => Promise<ScenarioInboxEntry[]>
acknowledgeScenarioDeliveries(acks: ReadonlyArray<ScenarioInboxAcknowledgement>, signal?) => Promise<void>
getEnrichment(code: string, slots: readonly string[], signal?) => Promise<EnrichmentResult>
enrichmentForSlot(result: EnrichmentResult, slot: string) => EnrichmentItem[]
getEnrichmentSlots() => string[]
trackEnrichmentView(item: Pick<EnrichmentItem, 'assignmentId' | 'placementKey'>) => void
trackEnrichmentClick(item, metadata?) => void
invalidateEnrichment() => void

Yuva adı a-z, 0-9 ve tireden oluşur, en çok 64 karakterdir; boşluk ve alt çizgi tireye, harfler küçüğe çevrilir. Sonuç ürün koduna ve yuva kümesine göre önbelleklenir (en çok 20 ürün; kural ya da blok değişince sunucu damgası değişir ve önbellek geçersiz olur). Test modu ve segment elemesi sonuçta istemcide uygulanır. Hiçbir yuva çizmeyen kanalda getEnrichmentSlots() boş döner. Ayrıntı: Zenginleştirme: uygulama; SelwiseEnrichment bileşeni App Maker'dadır (Eklenti).

Öneri ve arama

Üyeİmza
getRecommendationWidgets(pageUrl?: string) => Promise<RecommendationWidgetSummary[]>
resolveRecommendationWidget(widget: string | RecommendationWidgetSummary) => Promise<ResolvedRecommendationWidget>
getRecommendationProducts(widgetId: string, context?: RecommendationContext, signal?) => Promise<RecommendationProductsResult>
trackRecommendationImpression(widgetId: string, productItemCodes?: string[]) => void
trackRecommendationClick(widgetId: string, itemCode: string, position?: number) => void
search(query: string, options?: SearchOptions, signal?) => Promise<SearchResult>
trackSearchClick(query: string, itemCode: string, position?: number) => void

Ayrıntı: Öneriler, Arama.

Hata sınıfı

class SelwiseApiError extends Error {
  readonly status: number;      // HTTP durumu
  readonly path: string;        // örn. '/orders'
  readonly body: string | undefined;
  get isAuthError(): boolean;   // 401 ya da 403
}

Başarısız (2xx olmayan) bir cevap SelwiseApiError fırlatır; ağ hataları altta yatan hatayla gelir. Fırlatanlar: trackOrder, getRecommendationWidgets, getRecommendationProducts, search, subscribeNewsletter. Hiç fırlatmayanlar: track ailesi, identify (hata günlüğe gider), getSurfaces (/config yüklenemezse boş liste), getEnrichment (hatayı yutar, boş sonuç verir), getScenarioInbox, acknowledgeScenarioDeliveries ve olay gönderimi. isAuthError çoğu zaman anahtarda mobile_write olmadığını gösterir.

try {
  await selwise.trackOrder(order);
} catch (error) {
  if (error instanceof SelwiseApiError && error.isAuthError) {
    // anahtar eksik, iptal ya da mobile_write yok
  }
}

Hata ayıklama için Sorun Giderme.

Son güncelleme: 10 Ekim 2026