Quickstart
Quickstart
Sección titulada «Quickstart»Las definiciones de popup siempre vienen del backend, así que la forma más rápida de validar el SDK es inicializarlo con un publicKey válido y dejar que cargue tus popups en tiempo de ejecución. Las apps demo ya usan ese flujo.
1. Inicializa el SDK
Sección titulada «1. Inicializa el SDK»Android
Sección titulada «Android»val options = InitOptions( debug = true, // solo logs del SDK — NO cambia el backend environment = Environment.Development, // omite (o usa Environment.Production) para apuntar a prod popupOptions = PopupOptions( publicKey = "<your-public-key>" ), autoLaunch = true, provideLang = { "en" }, metadata = mapOf("userId" to "demo-user"))
val sdk = DeepdotsPopups().apply { initialize(options) setPath("/home")}environment controla la URL base del backend (Environment.Production → https://api.deepdots.com,
Environment.Development → https://api-dev.deepdots.com). Por defecto es Production cuando se
omite. debug controla solo los logs del SDK y es independiente del entorno.
Tras inicializar, el SDK expone una propiedad de solo lectura environment en DeepdotsPopups,
para que las apps host puedan afirmar contra qué backend apuntan y mostrarlo en sus propios
diagnósticos o logs.
Etiquetas de botones localizadas
Sección titulada «Etiquetas de botones localizadas»Los textos propios del popup (botones, Pregunta X de Y, avisos de error y etiquetas de
accesibilidad) siguen el idioma del survey en cuanto carga, y provideLang hasta entonces.
Idiomas soportados: en, es, da, fi, no, sv, ar, bn, de, pt, fr (los que ofrece la plataforma
para un survey) más zh-CN. Se aceptan etiquetas con región como es-ES, nb-NO, zh-Hans,
o variantes con guion bajo como es_419. Los idiomas no soportados caen a inglés. Los surveys en
árabe invierten el popup de derecha a izquierda. Las etiquetas definidas en
PopupDefinition.actions siempre tienen prioridad sobre los textos propios.
Swift no ve los valores por defecto de Kotlin, así que hay que pasar todos los parámetros de InitOptions y PopupOptions, en este orden. Usa nil en los que no necesites:
let options = InitOptions( debug: true, // solo logs del SDK — NO cambia el backend environment: Environment.development, // usa .production para apuntar a prod mode: nil, // se ignora: los popups siempre llegan desde Deepdots popupOptions: PopupOptions( id: nil, publicKey: "<your-public-key>", popups: nil, // se ignora: los popups siempre llegan desde Deepdots companyId: nil ), provideLang: { Locale.current.language.languageCode?.identifier ?? "en" }, autoLaunch: true, storage: nil, // nil = almacenamiento persistente (UserDefaults) trackingEnabled: true, // false para esperar al consentimiento analytics: nil, // AnalyticsKeys(...) para enviar analytics geolocation: true, contactAttributes: nil, renderChrome: true, showProgressBar: nil, // nil = lo que diga la configuración del survey metadata: ["userId": "demo-user"])
let instance = DeepdotsSDK.DeepdotsPopups()instance.initialize(options: options)instance.setPath(path: "/home")2. Adjunta un contexto de plataforma
Sección titulada «2. Adjunta un contexto de plataforma»El SDK necesita un contexto específico de plataforma para renderizar la UI del popup.
- Ejemplo Android:
sdk.attachContext(PlatformContext(this)) - Ejemplo iOS:
instance.attachContext(context: PlatformContext(viewController: root))
3. Mantén actualizado el path actual
Sección titulada «3. Mantén actualizado el path actual»Los ejemplos cambian el path actual a medida que el usuario navega:
/login/home/detail/1/detail/2/detail/3/detail/4
Las actualizaciones de path importan porque la segmentación por path y algunos flujos de trigger dependen de ellas.
4. Escucha los eventos de ciclo de vida
Sección titulada «4. Escucha los eventos de ciclo de vida»El SDK emite:
popup_shownpopup_clickedsurvey_completed
Se exponen a través del enum Event y del helper Events.
5. Dispara o muestra popups manualmente si hace falta
Sección titulada «5. Dispara o muestra popups manualmente si hace falta»El SDK también puede mostrar o disparar popups desde el código host:
sdk.show( ShowOptions( surveyId = "a9c8c170-bb1c-11f0-9d29-d5fe3dd521d0", productId = "02b809f20e024bce47c57f123cff8735" ), PlatformContext(activity))Qué validar primero
Sección titulada «Qué validar primero»- Que el
publicKeysea válido - Que la app host actualice
setPath(...)al cambiar de pantalla - Que la app host llame a
onScroll,triggerEventu otros helpers de trigger cuando corresponda - Que los listeners de eventos estén cableados para que el equipo pueda confirmar el comportamiento del ciclo de vida del popup
Antes de pasar a producción, revisa las buenas prácticas.