drawer.kleep.ai. L’SDK espone un componente + due metodi, specchiando la surface iOS.
Installazione
Ogni release viene pubblicata come tarball npm su
cdn.kleep.ai. Sono disponibili due formati URL:
Ultima stabile (si aggiorna automaticamente con ogni nuova release stabile — le pre-release non spostano mai questo puntatore):
v1.0.0 e 1.0.0 con il tag di release desiderato. I due pacchetti elencati sono peer dependency — l’SDK li richiede ma ti lascia il controllo della versione.
Il tarball pubblicato include un SHA-256 accanto (<tarball>.sha256 / latest.tgz.sha256) se vuoi verificare l’integrità prima dell’installazione.
Expo
Entrambe le peer dep sono pre-integrate in Expo Go (SDK 54+). Non è necessaria alcuna configurazione aggiuntiva in fase di sviluppo. Per le build di produzione,expo prebuild le recupera automaticamente.
React Native puro
Permessi
Per il flusso calzature (scansione fotocamera), aggiungi a
ios/<App>/Info.plist:
android/app/src/main/AndroidManifest.xml:
Configura una volta all’avvio dell’app
| Campo | Obbligatorio | Descrizione |
|---|---|---|
publicId | sì | UUID che identifica il tuo retailer (fornito da Kleep) |
language | no | 'fr' | 'en' | 'de' | 'it' | 'es' | 'nl' | 'pt' | 'ja' | 'ko' | 'pl' | 'br' | 'dk' | 'fi' | 'se' | 'gb' |
Utilizzo
Metodo 1: Kleep.checkProduct
Chiamare sulla PDP al montaggio. Il risultato guida il CTA “Trova la mia taglia” — se renderizzarlo e quale etichetta mostrare.
| parametro | priorità | descrizione |
|---|---|---|
productId | obbligatorio | Il tuo ID prodotto presso il retailer |
recommendable | recommendedSize | Cosa renderizzare |
|---|---|---|
false | — | Nascondi il CTA (prodotto non idoneo per Kleep) |
true | assente | CTA: “Trouver ma taille” |
true | "M" | CTA: “Taille recommandée: M” |
(publicId, productId) per il gate e (publicId, productId, mid) per la taglia raccomandata. Ri-renderizzare la PDP o tornare indietro è gratuito.
Esempio di implementazione
Metodo 2: <KleepFindSizeView>
Monta questo componente per aprire il drawer del trovaglie in un Modal+WebView a schermo intero. Pattern a componente controllato: sei tu a gestire lo stato visible, l’SDK richiede la chiusura tramite onDismiss.
| prop | priorità | descrizione |
|---|---|---|
visible | obbligatorio | Controlla la visibilità del Modal |
productId | obbligatorio | Uguale a quello in checkProduct |
onDismiss | obbligatorio | Attivato quando l’utente chiude il drawer (X / swipe / indietro). Il host DEVE impostare visible a false |
variantId | opzionale | Pre-seleziona una variante per la raccomandazione |
customerId | opzionale | Identificatore CRM per il collegamento tra sessioni |
language | opzionale | Sovrascrive la lingua a livello SDK per questa apertura |
countryCode | opzionale | es. "FR", "US" — determina il sistema di unità + le impostazioni predefinite per le misure reggiseno |
stocks | opzionale | { [variantId]: number | boolean } — il drawer visualizza l’UI per indisponibile / stock parziale |
mock | opzionale | true → il drawer salta le chiamate API reali di raccomandazione (solo QA) |
forceState | opzionale | 'outOfRange' | 'unavailable' | 'error' | 'qrcode' — accesso QA per renderizzare direttamente uno stato finale |
warmRestore | opzionale | { mid, uid } — pre-carica una misurazione esistente (salta il flusso introduttivo). Il ripristino sullo stesso dispositivo è già automatico tramite AsyncStorage |
extraParams | opzionale | Record<string, string> grezzo aggiunto all’URL del drawer (escape hatch) |
onAddToCart | opzionale | (event: { variantId, size? }) => void — l’utente ha toccato il CTA “Aggiungi al carrello” nel drawer. Il host aggiunge la variante al carrello |
onSelectSize | opzionale | (event: { size }) => void — l’utente ha selezionato una taglia nella schermata Risultato. Il host dovrebbe sincronizzare il selettore di taglie della PDP |
onMessage | opzionale | Hook di debug — si attiva per ogni postMessage in arrivo analizzato dal drawer |
style | opzionale | StyleProp<ViewStyle> — sovrascrittura dello stile del contenitore |
webViewProps | opzionale | Inoltrato a react-native-webview per personalizzazioni avanzate |
- Collega il
window.parent.postMessagein stile iframe del drawer al bridge React Native - Persiste
mid/uidin AsyncStorage quando il drawer li invia - Risponde ai postMessage
getMid/getUid/getSizesdal drawer - Chiama
Kleep.checkProductall’apertura per risolvere il flusso (abbigliamento / lingerie / calzature / bambini) — usa la stessa cache da 5 minuti della tua chiamata CTA, quindi è gratuito se hai già invocatocheckProduct
Metodo 3: Kleep.track
Analisi fire-and-forget. Non genera mai eccezioni.
| parametro | priorità | descrizione |
|---|---|---|
eventName | obbligatorio | Nome dell’evento |
options.customerId | opzionale | Identificatore CRM |
options.parameters | opzionale | Record<string, unknown> — dati evento arbitrari |
| eventName | Trigger |
|---|---|
product_viewed | Alla visualizzazione della PDP |
product_added_to_cart | All’aggiunta del prodotto al carrello |
checkout_completed | Alla conferma dell’ordine dopo il pagamento |
product_viewed
product_added_to_cart
checkout_completed
Invalidazione della Cache
L’SDK mantiene due cache in memoria (TTL da 5 minuti ciascuna):
- Gate prodotto —
(publicId, productId) → { recommendable, category, productFound } - Taglia raccomandata —
(publicId, productId, mid) → etichetta taglia
