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ır | Anlamı |
|---|---|
Initialised (channel ..., N queued event(s)) | init() bitti; kanal anahtarını buradan doğrulayın |
Could not load /config | Konfigürasyon alınamadı: anahtar, adres ya da ağ |
This is a WEB channel key | Web kanalının anahtarını uygulamaya yapıştırmışsınız |
Holding N event(s): consent not granted | Onay yok; olaylar bekliyor |
Sent N event(s) | Parti gitti |
Dropped N event(s): server rejected with 4xx | Sunucu partiyi kalıcı reddetti; gövdesi de yazılır |
Flush failed, requeued | Geç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ı
| Belirti | Sebep ve çözüm |
|---|---|
init() requires a channelKey (or siteKey) | Kanal anahtarı verilmemiş. Panelde Channel Overview → Channel Key. |
init() requires an apiKey | Uygulama kanalının tek kimlik bilgisi anahtardır; Channels → ⋮ → API keys ile Mobile app amacıyla oluşturun. |
[Selwise] call init() before using the SDK | Bir 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 SelwiseProvider | Bileşen SelwiseProvider dışında. |
HTTP kodları
| Kod | Sebep | Çözüm |
|---|---|---|
403 Invalid API key or insufficient scope | Aşağıdaki liste | Aşağıda |
403 This account is closed ya da Delivery is switched off for this account | Hesap 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 found | Kanal anahtarı yanlış ya da kanal silinmiş | Anahtarı panelden kopyalayın |
404 her çağrıda | apiUrl sürüm önekini (/api/v1) içermiyor | https://api.selwise.com/api/v1 |
402 | Hesabın modülü yok (arama gibi) | Hesap yöneticinize başvurun; ekranı panel de gizler |
429 | Hız sınırı: sipariş IP başına dakikada 10, segment sorgusu 120, bülten 20 | Bekleyip yeniden deneyin; olaylarda SDK kendisi yeniden dener |
400 | Gövdede tanınmayan alan ya da 2 KB'ı aşan metadata | Gövdeyi sadeleştirin |
403'ün sebepleri
- Anahtar hiç gönderilmiyor.
apiKeyverilmiş mi, başında ya da sonunda boşluk var mı? - Salt okunur anahtar. Yalnızca
mobile_readtaşıyan anahtarGETisteklerini geçirir,POSTolan ö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. - İ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.
- Başka kanalın anahtarı. Anahtar bir kanala aittir; web kanalının ya da başka uygulamanın anahtarı bu kanalda geçmez.
channelKeyileapiKeyaynı kanala ait olmalı. - Web kanalının anahtarı. Uygulama kanalı her zaman anahtar ister; web kanalı ise
Originister.This is a WEB channel keysatı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
- Kanal anahtarını doğrulayın. Bilinmeyen ya da doğrulanmamış kanal anahtarında olay endpoint'i
200ilesuccess: falsedöner ve SDK partiyi başarılı sayıp siler; hata görmezsiniz.Could not load /configsatırı ya da yukarıdakicurlgerçeği söyler. - Gecikme beklentisi. Kanalda panelden ayar yapılmamışsa SDK
/configgelince 50 olaylık partiler ve 30 saniyelik aralığa geçer. Hemen görmek içinflushIntervalMsvebatchSizeverin ya daawait selwise.flush()çağırın (Kurulum). - Onay.
consent: { granted: false }ile başlatıpsetConsentçağırmadıysanız olaylar bekler (Holding ... consent not granted). init()'ten önce çağrı.track()o durumda olayı sessizce atar.- Reddedilen parti. Tek bir olayın
metadata'sı 2 KB'ı aşıyorsa ya da gövdede tanınmayan alan varsa sunucu partinin tamamını400ile reddeder ve SDK onu siler (Dropped N event(s)). Günlükte gövdeyi okuyun. - Olay adı. Tanınmayan ad
custom_eventolarak yazılır; kendi adınızı raporda aramayın (Event Takibi). - Ürün kodu. Ürün olayı
productItemCodeolmadan ya da beslemeitem_codeile eşleşmeden gelirse ürün raporlarında görünmez. - Panelde bakın. Channels → Channel Overview → Channel activity → Data flow: olay sayısı ve son olay zamanı.
Siparişler
| Belirti | Sebep |
|---|---|
| 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 yok | productItemCode boş ya da yanlış yazılmış; /orders yanlış alanı 201 ile kabul eder ve atar |
trackOrder 429 fırlatıyor | IP başına dakikada 10 sipariş sınırı (ortak operatör adresleri dahil) |
| Sipariş hiçbir temasa atfedilmiyor | trackOrder ö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