Ir al contenido

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.

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.

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")

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))

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.

El SDK emite:

  • popup_shown
  • popup_clicked
  • survey_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)
)
  • Que el publicKey sea válido
  • Que la app host actualice setPath(...) al cambiar de pantalla
  • Que la app host llame a onScroll, triggerEvent u 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.