Sorun Giderme

Anahtar, 403, olay ve sipariş sorunları

Mobil SDK'da kurulum, anahtar ve veri akışı sorunları. Kampanya, öneri, arama ya da zenginleştirmenin ekranda görünmemesi için Görünmeyen İçerik sayfasına bakın. Genel hata kodları: Hatalar ve Sınırlar.

Önce hata ayıklamayı açın

await selwise.init({ channelKey, apiKey, storage: AsyncStorage, debug: true });

debug: true her kararı Metro konsoluna [Selwise] önekiyle yazar. Aranacak satırlar:

SatırAnlamı
Initialised (channel ..., N queued event(s))init() bitti; kanal anahtarını buradan doğrulayın
Could not load /configKonfigürasyon alınamadı: anahtar, adres ya da ağ
This is a WEB channel keyWeb kanalının anahtarını uygulamaya yapıştırmışsınız
Holding N event(s): consent not grantedOnay yok; olaylar bekliyor
Sent N event(s)Parti gitti
Dropped N event(s): server rejected with 4xxSunucu partiyi kalıcı reddetti; gövdesi de yazılır
Flush failed, requeuedGeçici hata; yeniden denenecek
No storage passed to init()storage yok; her açılış yeni ziyaretçi

Ham bir istekle anahtarı sınayın (başarılıysa channel.type değeri app gelir):

curl -i -H "x-selwise-api-key: swpk_live_..." \
  "https://api.selwise.com/api/v1/public/sites/sk_.../config"

Başlatma hataları

BelirtiSebep ve çözüm
init() requires a channelKey (or siteKey)Kanal anahtarı verilmemiş. Panelde Channel Overview → Channel Key.
init() requires an apiKeyUygulama kanalının tek kimlik bilgisi anahtardır; Channels → ⋮ → API keys ile Mobile app amacıyla oluşturun.
[Selwise] call init() before using the SDKBir metot init() bitmeden çağrıldı. await initSelwise() sonrasında çağırın; trackScreenView da buna dahildir.
init() called twice günlüğüİkinci çağrı yok sayılır; sorun değildir.
Hook [Selwise] useSelwise() must be called inside SelwiseProviderBileşen SelwiseProvider dışında.

HTTP kodları

KodSebepÇözüm
403 Invalid API key or insufficient scopeAşağıdaki listeAşağıda
403 This account is closed ya da Delivery is switched off for this accountHesap kapatılmış ya da teslimat elle kapatılmışHesap yöneticinize başvurun; kanal anahtarı ve API anahtarı doğru olsa da ret sürer
404 Site not foundKanal anahtarı yanlış ya da kanal silinmişAnahtarı panelden kopyalayın
404 her çağrıdaapiUrl sürüm önekini (/api/v1) içermiyorhttps://api.selwise.com/api/v1
402Hesabın modülü yok (arama gibi)Hesap yöneticinize başvurun; ekranı panel de gizler
429Hız sınırı: sipariş IP başına dakikada 10, segment sorgusu 120, bülten 20Bekleyip yeniden deneyin; olaylarda SDK kendisi yeniden dener
400Gövdede tanınmayan alan ya da 2 KB'ı aşan metadataGövdeyi sadeleştirin

403'ün sebepleri

  1. Anahtar hiç gönderilmiyor. apiKey verilmiş mi, başında ya da sonunda boşluk var mı?
  2. Salt okunur anahtar. Yalnızca mobile_read taşıyan anahtar GET isteklerini geçirir, POST olan öneri ürünleri, sipariş, kimliklendirme, bülten, segment sorgusu ve senaryo bildirimini reddeder. Anahtarlar listesinde iki scope'u da görmelisiniz; yoksa Mobile app amacıyla yenisini oluşturun.
  3. İptal ya da döndürülmüş anahtar. Revoke ve Rotate eski anahtarı anında geçersiz kılar. Yeni anahtarı uygulamaya koyup yeni sürümü yayımlamadıysanız eski uygulama sürümleri 403 alır.
  4. Başka kanalın anahtarı. Anahtar bir kanala aittir; web kanalının ya da başka uygulamanın anahtarı bu kanalda geçmez. channelKey ile apiKey aynı kanala ait olmalı.
  5. Web kanalının anahtarı. Uygulama kanalı her zaman anahtar ister; web kanalı ise Origin ister. This is a WEB channel key satırı bunu söyler.

Anahtar olay göndermeyi engellemez

Olay gönderimi anahtarsızdır; yanlış ya da iptal edilmiş anahtarla olaylar yine gider, yalnızca öneri, sipariş, kimlik ve segment çağrıları 403 alır. "Olaylar geliyor ama öneri gelmiyor" 403 belirtisidir. Hook'ta error alanı bir SelwiseApiError'dır (error.status, error.isAuthError).

Olaylar panele ulaşmıyor

  1. Kanal anahtarını doğrulayın. Bilinmeyen ya da doğrulanmamış kanal anahtarında olay endpoint'i 200 ile success: false döner ve SDK partiyi başarılı sayıp siler; hata görmezsiniz. Could not load /config satırı ya da yukarıdaki curl gerçeği söyler.
  2. Gecikme beklentisi. Kanalda panelden ayar yapılmamışsa SDK /config gelince 50 olaylık partiler ve 30 saniyelik aralığa geçer. Hemen görmek için flushIntervalMs ve batchSize verin ya da await selwise.flush() çağırın (Kurulum).
  3. Onay. consent: { granted: false } ile başlatıp setConsent çağırmadıysanız olaylar bekler (Holding ... consent not granted).
  4. init()'ten önce çağrı. track() o durumda olayı sessizce atar.
  5. Reddedilen parti. Tek bir olayın metadata'sı 2 KB'ı aşıyorsa ya da gövdede tanınmayan alan varsa sunucu partinin tamamını 400 ile reddeder ve SDK onu siler (Dropped N event(s)). Günlükte gövdeyi okuyun.
  6. Olay adı. Tanınmayan ad custom_event olarak yazılır; kendi adınızı raporda aramayın (Event Takibi).
  7. Ürün kodu. Ürün olayı productItemCode olmadan ya da besleme item_code ile eşleşmeden gelirse ürün raporlarında görünmez.
  8. Panelde bakın. Channels → Channel Overview → Channel activity → Data flow: olay sayısı ve son olay zamanı.

Siparişler

BelirtiSebep
Sipariş geliyor ama ciro iki katıWebView köprüsü ve kendi trackOrder çağrınız farklı sipariş kodu gönderiyor; aynı orderId kullanın
Sipariş 0 tutarlıWebView'deki sayfa value göndermiyor; kendi sisteminizden aynı orderId ile bildirin
Kalemler ürün raporunda yokproductItemCode boş ya da yanlış yazılmış; /orders yanlış alanı 201 ile kabul eder ve atar
trackOrder 429 fırlatıyorIP başına dakikada 10 sipariş sınırı (ortak operatör adresleri dahil)
Sipariş hiçbir temasa atfedilmiyortrackOrder öncesi tıklama ve gösterimler bildirilmemiş; öneri ve yüzey tıklamalarını bildirin

Kimlik

identify hiç hata fırlatmaz, bu yüzden başarısızlığı debug: true ile Identify call failed satırında arayın. Başlıca sebepler: kimlik 64 karakterden uzun, email geçerli bir adres değil, kimlik false/null gibi bir metin (SDK bunu kimlik saymaz), anahtarda mobile_write yok. Aynı müşteri web ve uygulamada farklı kimlik alıyorsa iki profil oluşur: iki tarafta da aynı kimliği gönderin. Ayrıntı: Kimlik, Onay ve Kuyruk.

Her açılış yeni ziyaretçi

storage verilmemiş. AsyncStorage'ı init()'e verin; aksi hâlde ziyaretçi, oturum, kuyruk ve onay kararı bellekte kalır ve recently_viewed ile user_history önerileri hep boş döner.

Son güncelleme: 10 Ekim 2026