Sobre el proyecto

# SDK Kotlin de TelemetryDeck Una biblioteca Kotlin para enviar señales analíticas desde aplicaciones Android a [TelemetryDeck](https://telemetrydeck.com), una plataforma de análisis priorizada en privacidad. El SDK funciona en Android API 23+ con Kotlin 2.3.x. ## Capacidades principales **Envío de señales**: Llama a `TelemetryDeck.send("eventName")` para disparar una señal analítica de inmediato, o usa `TelemetryDeck.signal("eventName")` para colarla y transmitirla después. **Seguimiento de sesiones**: Detecta automáticamente nuevas instalaciones, mide la duración de la sesión y calcula métricas de retención (segundos promedio de sesión, días distintos usados, cantidad total de sesiones). El estado de la sesión se guarda localmente y se limpia al desinstalar. **Identidad de usuario**: Genera un identificador anónimo vinculado al dispositivo por defecto. Admite identificadores personalizados mediante `defaultUser` (encriptado antes del envío) o implementaciones personalizadas de `TelemetryDeckIdentityProvider`. **Parámetros de entorno**: Enriquece cada señal automáticamente con metadatos del dispositivo (modelo, sistema operativo, resolución de pantalla, orientación, arquitectura, marca, zona horaria), metadatos de la app (versión, número de compilación) y metadatos del SDK. También captura configuraciones de accesibilidad (escala de fuentes mapeada a categorías de tamaño de iOS, texto en negrita, inversión de color, reducción de movimiento, esquema oscuro/claro). **Señales de navegación**: Rastrea el flujo del usuario entre pantallas con `TelemetryDeck.navigate(source, destination)` o llámala en cada cambio de ruta para un seguimiento automático de rutas. **Seguimiento de duración**: Inicia y detén señales nombradas de duración (`startDurationSignal` / `stopAndSendDurationSignal`) para medir el tiempo invertido en eventos específicos, como pasos de un asistente. **Ayudas de adquisición**: Métodos prácticos para `acquiredUser(channel)`, `leadStarted(leadId)` y `leadConverted(leadId)`. **Parámetros calendario**: Agrega día de la semana, día del mes, semana del año, trimestre, hora del día, indicador de fin de semana, entre otros, a cada señal enviada. **Seguimiento de compras**: `purchaseCompleted()` registra compras dentro de la app con código de país del marketplace e ID del producto. **Modo solo en memoria**: Llama a `inMemoryOnly(true)` en el constructor para ejecutar sin escritura en disco, adecuado para procesos sandboxeados. La identidad de usuario se regenera en cada lanzamiento; las detecciones de nueva instalación y las métricas de retención no están disponibles en este modo. ## Instalación Agrega a `build.gradle`: ```groovy implementation 'com.telemetrydeck:kotlin-sdk:7.2.0' ``` Agrega permiso de internet a `AndroidManifest.xml`: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` Configura mediante metadatos del manifiesto o constructor programático: ```kotlin val builder = TelemetryDeck.Builder() .appID("YOUR-APP-ID") .showDebugLogs(true) .defaultUser("anonymous-user") TelemetryDeck.start(applicationContext, builder) ``` ## Proveedores y personalización El SDK usa un sistema de plugins basado en proveedores. Los proveedores integrados incluyen `EnvironmentParameterProvider`, `PlatformContextProvider`, `AccessibilityProvider`, `SessionTrackingSignalProvider` y `CalendarParameterProvider`. Puedes agregar enriquecimiento personalizado mediante `DefaultParameterProvider`, `DefaultPrefixProvider`, o implementando `TelemetryDeckIdentityProvider`, `TelemetryDeckSessionManagerProvider` y `TelemetryDeckStorage` para backends personalizados.