# Inicio rápido de Android

> El botón nativo Guía de tallas (Compose y Views), la talla recomendada del cliente y la ventana de prueba virtual.

Source: https://docs.tryyoursize.com/es/quickstarts/android/

> **Para tu equipo de desarrollo**
>
> **Qué hace:** Añade un botón nativo «Guía de tallas» junto al selector de tallas de nuestra app de Android. Quien tiene sesión iniciada ve «Tu talla: M»; al tocarlo se abre la ventana de TryYourSize. La app solo recibe tallas.
>
> **Tiempo necesario:** Alrededor de un día, incluido el registro de la app.
>
> **Qué enviarle:** La clave publicable de prueba (pk_test_…) y el nombre de paquete de nuestra app, que hay que registrar como android-app://<package>.

minSdk 24. Jetpack Compose y Views.

> **Caution: De momento, solo modo de prueba para apps**
>
> Los orígenes de app (`android-app://…`) se aceptan en modo de prueba. El modo real para apps requiere verificar la app (asset links), que llegará pronto. La publicación en nuestro repositorio Maven también llegará pronto: durante el piloto te compartimos la biblioteca.

## 1. Instalación

```kotlin
dependencies { implementation("com.tryyoursize:tryyoursize-android:0.1.0") }
```

## 2. Registra tu app

En Studio, añade `android-app://<tu paquete>` (en minúsculas, por ejemplo `android-app://com.brand.shop`) a los sitios permitidos de tu tienda para el **modo de prueba**.

## 3. Úsalo

La ventana necesita una `ComponentActivity` de androidx (por ejemplo, `AppCompatActivity`).

```kotlin
val tys = TryYourSize(context, "pk_test_…")              // una clave secreta lanza un error: guarda sk_ en tu servidor

// Compose, donde estaba tu enlace "Size guide":
Row(verticalAlignment = Alignment.CenterVertically) {
    Text("Size"); Spacer(Modifier.weight(1f))
    SizeGuide(tys, "SKU-123", textStyle = MaterialTheme.typography.bodyMedium) { rec ->
        // Al mostrarse y en cada cambio. Preselecciona, pero nunca por encima de la elección del cliente.
        if (rec.status == Recommendation.Status.READY && !touched) selected = rec.size
    }
}

// Views
val guide = SizeGuideView(context).apply { client = tys; product = "SKU-123"; variant = SizeGuideVariant.BUTTON }

// Sin botón
val rec = tys.recommendation("SKU-123")                  // suspend; o getRecommendation("SKU-123") { result -> }
tys.present(activity, "SKU-123")
tys.on { e -> if (e is TryYourSize.Event.Size) select(e.selection.size) }
```

Llama al SDK desde el hilo principal.

**Estados del botón:** «Guía de tallas» → «Calculando tu talla…» → «Tu talla: **M**» (con el punto de conectado), o «Guía de tallas · conectado». Los textos siguen `locale` (en, es, fr, de, it).

**`Recommendation`:** `status` (`READY`, `COMPUTING`, `NO_SIZE`, `SIGNED_OUT`, `UNAVAILABLE`), `size` con tus etiquetas, `studioSize`, `wearableSizes`. Nunca inicia una simulación.

## 4. Apariencia

Por defecto (`INHERIT`), el botón y la ventana toman los colores de texto y de fondo de tu tema; el botón toma el `textStyle` que le pases.

```kotlin
val tys = TryYourSize(context, "pk_test_…", TryYourSize.Configuration(
    appearance = Appearance(colorPrimary = 0xFF3F51B5.toInt(), fontFamily = "Inter, Roboto", borderRadius = 12f,
        fonts = listOf("https://fonts.googleapis.com/css2?family=Inter:wght@400;600"))))
tys.appearance = tys.appearance.copy(colorPrimary = Color.BLACK)   // en directo: una ventana abierta cambia de estilo al instante
```

## 5. Eventos y errores

- **Eventos:** `Ready`, `Open`, `Close`, `Size(SizeSelection)`, `LoadError(TryYourSizeException)`.
- **Códigos de error** (`TryYourSizeException.code`): `SECRET_KEY_IN_APP`, `INVALID_KEY`, `INVALID_APP_IDENTIFIER`, `INVALID_OPTION`, `WINDOW_UNREACHABLE`, `APP_NOT_ALLOWED`, `SIGN_IN_CANCELLED`, `SIGN_IN_UNAVAILABLE`.
- **Atrás** consulta primero a la ventana: si hay medidas sin guardar, el cliente tiene que confirmarlo.

## Inicio de sesión

Los clientes inician sesión dentro de la ventana (correo electrónico y un código de 6 dígitos), una vez por app. Pronto se podrá iniciar sesión a través de Custom Tabs con llaves de acceso.
