Tipler ve Yardımcılar
Dışa aktarımlar, tipler, HTTP uç noktaları ve scope
@selwise/react-native paketinin dışa aktardığı hook'lar, sınıflar, yardımcılar, tipler ve SDK'nın konuştuğu HTTP uç noktaları. Selwise sınıfının üyeleri API Referansı sayfasındadır.
İki giriş noktası
| İçe aktarma | İçerik |
|---|---|
@selwise/react-native | İstemci, köprü, depolar, yardımcılar, tipler. React'e bağlı değildir; servis, saga ve middleware'den de kullanılır. |
@selwise/react-native/react | İsteğe bağlı React bağlamaları: SelwiseProvider, useSelwise, useRecommendationWidget, useSelwiseSearch. react 17 ya da üstü gerekir. |
Pakette arayüz bileşeni yoktur; kartı, şeridi ve çubuğu uygulamanız çizer.
React bağlamaları
SelwiseProvider(props: { client: Selwise; children: ReactNode })
useSelwise(): Selwise // sağlayıcı dışında hata fırlatır
useRecommendationWidget(widgetId: string, options?: { currentProductId?: string; enabled?: boolean })
useSelwiseSearch(options?: SearchOptions & { debounceMs?: number; minChars?: number })
Dönüş şekilleri Öneriler ve Arama sayfalarındadır.
Sınıflar ve sabitler
| Dışa aktarım | Ne |
|---|---|
Selwise (ve default) | İstemci sınıfı |
SDK_VERSION | Çalışan sürüm (0.12.0) |
Endpoints | Tipli ham uç nokta bağlamaları (selwise.endpoints) |
WebViewBridge, WEBVIEW_BRIDGE_SCRIPT | WebView köprüsü |
SelwiseApiError | 2xx olmayan cevapta fırlatılan hata |
RecommendationWidgetLoader, CART_REFRESH_DEBOUNCE_MS, EMPTY_RECOMMENDATION_WIDGET_STATE | Hook'suz öneri şeridi, sepeti izleyen; 0.10.0'dan beri |
MemoryStorage, STORAGE_KEYS | Bellek deposu ve depo anahtarları |
DEFAULT_CONSENT, SESSION_TIMEOUT_MS, generateId | Varsayılan onay, 30 dakikalık oturum süresi, kimlik üretici |
DismissalStore, FrequencyCapStore, SegmentGate, ExperimentGate, ScenarioSeenStore, EnrichmentCache | Dahili depolar; kendi çizim katmanınızı yazıyorsanız kullanılır |
COUNTDOWN_MODES, CUTOFF_TIME_ZONES | Geri sayım kipleri ve saat dilimleri |
Yardımcı fonksiyonlar
| Fonksiyon | Ne yapar |
|---|---|
goalStepsCrossed(previous, next) | İki görünüm arasında geçilen hedef adımları (number[]) |
countdownTarget(content, now), nextDailyCutoff, parseDailyCutoff | Geri sayım hedef anı |
normalizeSurface, normalizeSurfaces, normalizePlacement, selectSurfaces, resolveConflicts, resolveSurfaceContent | /config kaydını çizilebilir yüzeye çevirir ve eler |
normalizeCartInput, withCartSignals, normalizeProductInput | Sepet ve ürün girdisini doğrular |
evaluateTargeting, evaluatePageTargeting, matchUrlPattern | Panelle aynı hedefleme değerlendirici |
normalizeRemoteConfig, normalizeScenarioInbox, normalizeEnrichment, normalizeEnrichmentItem, normalizePlacementKey(s), itemsForSlot, selectByTestMode, deepMerge, normalizeSegmentIds | Cevap normalleştiriciler |
Tipler
SelwiseInitOptions, SelwiseStorage, SelwiseProduct, TrackOptions, EntityType, ConsentSnapshot, ConsentCategory, OrderInput, OrderItemInput, RecommendationContext, RecommendationCartContext, RecommendationWidgetSummary, RecommendationProductsResult, ResolvedRecommendationWidget, RecommendationExperiment, RecommendationWidgetState, RecommendationWidgetSource, SearchOptions, SearchResult, Surface, SurfaceFilter, SurfaceKind, SurfacePlacement, TriggerStrategy, ExperimentAssignment, FrequencyCapConfig, SegmentContext, SegmentTargetingMode, RemoteConfig, RemoteTrackingConfig, CartInput, ProductInput, DynamicCart, DynamicProduct, GoalBarView, GoalBarState, GoalProgress, GoalMetric, GoalReachedDetail, CountdownMode, ScenarioInboxEntry, ScenarioInboxAcknowledgement, ScenarioInboxOutcome, EnrichmentItem, EnrichmentResult.
Önemli tipler:
interface SelwiseStorage {
getItem(key: string): Promise<string | null>;
setItem(key: string, value: string): Promise<void>;
removeItem(key: string): Promise<void>;
}
interface ConsentSnapshot {
granted: boolean;
categories?: Partial<Record<'necessary' | 'analytics' | 'marketing' | 'preferences', boolean>>;
timestamp?: number;
source?: string;
}
interface Surface {
id: string; kind: 'campaign' | 'widget'; type: string; isTestMode: boolean;
content: Record<string, unknown>; styles: Record<string, unknown>;
placement: SurfacePlacement;
segmentTargetingMode: string; segmentIds: string[];
customCss: string; customJs: string;
experiment: { experimentId: string; variantId: string } | null;
stateId: string | null;
}
interface SurfacePlacement {
position: string; placementType: string;
triggerStrategy: 'immediate' | 'delay' | 'scroll' | 'exit_intent' | 'event';
triggerDelaySeconds: number; triggerScrollPercent: number; triggerEventName: string | null;
frequencyCap: { perSession?: number; perDay?: number; perWeek?: number; total?: number; minInterval?: string } | null;
conflictBehavior: string | null; priority: number;
}
interface OrderInput {
orderId: string; total: number; currency?: string;
subtotal?: number; discountTotal?: number; shippingTotal?: number; taxTotal?: number;
status?: string; placedAt?: string; items?: OrderItemInput[]; metadata?: Record<string, unknown>;
}
interface OrderItemInput {
productItemCode: string; name?: string; quantity?: number; unitPrice?: number; totalPrice?: number;
metadata?: Record<string, unknown>;
}
interface EnrichmentItem {
assignmentId: string; placementKey: string; order: number;
html: string; css: string; reservedHeightPx?: number;
}
Surface.kind değeri artık hep campaign'dir; widget yalnızca eski kayıtlar için tipte durur. EntityType değerleri Event Takibi sayfasındadır.
HTTP uç noktaları ve anahtar
SDK yalnızca public API'yi çağırır. Tüm yollar apiUrl altındadır; kanal anahtarı yolun içindedir (/public/sites/KANAL_ANAHTARI/...). İki uç nokta yol yerine sorguda taşır: /public/segments/evaluate ve /public/experiments/* (?siteKey=). Her istekte x-selwise-client-platform ve x-selwise-client-version başlıkları gider.
| Uç nokta | Yöntem | x-selwise-api-key | Scope |
|---|---|---|---|
config | GET | Gönderilir | mobile_read |
recommendations | GET | Gönderilir | mobile_read |
recommendations/:widgetId/products | POST | Gönderilir | mobile_write |
search, search-config, search/suggestions | GET | Gönderilir | mobile_read |
app/enrichments | GET | Gönderilir | mobile_read |
scenarios/inbox | GET | Gönderilir | mobile_read |
scenarios/inbox/ack | POST | Gönderilir | mobile_write |
orders | POST | Gönderilir | mobile_write |
newsletter | POST | Gönderilir | mobile_write |
users/identify | POST | Gönderilir | mobile_write |
segments/evaluate | POST | Gönderilir | mobile_write |
experiments/assign | GET | Gönderilir | Anahtar denetlenmez, kanal anahtarı yeter |
events/batch | POST | Gönderilmez | Anahtar aranmaz |
experiments/track | POST | Gönderilmez | Anahtar aranmaz |
Scope kuralı: GET için mobile_read, geri kalan her yöntem için mobile_write. Uygulama kanalında anahtar her zaman zorunludur; Origin başlığı gönderilse bile geçerlilik yerine geçmez. Anahtar swpk_live_ ve 64 onaltılık karakterdir. Hata kodlarının anlamı: Sorun Giderme, genel kurallar: Hatalar ve Sınırlar.
Olay partisi gövdesi requestId, sessionId, consentSnapshot (zorunlu), visitorId, siteUserId, pageUrl, journeyId, testMode ve events[] taşır; parti en çok 200 olay içerir. Sunucu /events/batch gövdesinde tanımadığı alanı 400 ile reddeder (forbidNonWhitelisted), bu yüzden olay gövdesine kendi alanlarınızı eklemeyin. /orders ise tanımadığı alanı sessizce yok sayar (yalnızca eski id alanı 400 verir): yanlış yazılmış bir productItemCode 201 ile kabul edilir ve kalem kodsuz kalır.
Son güncelleme: 10 Ekim 2026