> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-mobile/android-sdk/componentes-modulos/terminos-y-condiciones.md).

# Términos y condiciones

## Introducción <a href="#id-1-introduccion" id="id-1-introduccion"></a>

La aceptación de términos y condiciones de uso se hace con el ***Terms Conditions Component***.

Este componente se encarga de realizar la captura de la respuesta del usuario ante unos términos y condiciones de uso. Sus principales procesos son:

* Lanzamiento de un visor de texto HTML.
* Captura de la respuesta del usuario.

En el apartado de [Lanzamiento simplificado](/sdks/sdk-mobile/android-sdk/inicializacion/lanzamiento-simplificado.md) se detallan los pasos necesarios para la integración básica del SDK. En esta sección se añade la información para el lanzamiento de este componente.

## Dependencia <a href="#id-2-dependencia" id="id-2-dependencia"></a>

La dependencia específica del componente es:

```
implementation "com.facephi.androidsdk:terms_conditions_component:$version"
```

## Controladores disponibles <a href="#id-3-controladores-disponibles" id="id-3-controladores-disponibles"></a>

<table data-header-hidden><thead><tr><th width="193.87109375"></th><th></th></tr></thead><tbody><tr><td><strong>Controlador</strong></td><td><strong>Descripción</strong></td></tr><tr><td>TermsConditionsController</td><td>Controlador principal de captura de aceptación de términos</td></tr></tbody></table>

## Lanzamiento simplificado

Una vez iniciado el SDK y creada una nueva operación se podrá lanzar el componente. Se podrá hacer uso de cualquiera de sus controladores para ejecutar su funcionalidad.

Lanzamiento de la captura:

```kotlin
val response = SDKController.launch(
    TermsConditionsController(TermsConditionsConfigurationData(...))
)
when (response) {
    is SdkResult.Error -> Napier.d("ERROR - ${response.error.name}")
    is SdkResult.Success -> response.data
}
```

## Configuración básica <a href="#id-5-configuracion-basica" id="id-5-configuracion-basica"></a>

Para lanzar el componente actual, se deberá crear un objeto *TermsConditionsConfigurationData* que será la configuración del controlador del componente.

La configuración básica necesaria para es la siguiente:

```kotlin
TermsConditionsConfigurationData(
  termsConditions = "...html..."
)
```

## Recepción del resultado <a href="#id-6-recepcion-del-resultado" id="id-6-recepcion-del-resultado"></a>

El lanzamiento devolverá la información en formato SdkResult. Pudiendo diferenciarse entre un lanzamiento correcto y uno incorrecto:

```
when (response) {
    is SdkResult.Error -> Napier.d("ERROR - ${response.error}")
    is SdkResult.Success -> Napier.d("Accepted")
}
```

### Recepción de errores <a href="#id-61-recepcion-de-errores" id="id-61-recepcion-de-errores"></a>

Los errores se devolverán como un objeto 'DisclaimerError'.

Listado de errores:

* TER\_ACTIVITY\_RESULT\_MSG\_ERROR: El resultado de la actividad es incorrecto
* TER\_APPLICATION\_CONTEXT\_ERROR: El contexto de aplicación necesario es nulo
* TER\_CANCEL\_BY\_USER: El usuario ha cancelado el proceso
* TER\_CANCEL\_LAUNCH: Se ha hecho una cancelación general del SDK
* TER\_COMPONENT\_LICENSE\_ERROR: La licencia del componente no es correcta
* TER\_EMPTY\_LICENSE: El String de licencia está vacío
* TER\_FETCH\_DATA\_ERROR: Error en la recogida del resultado
* TER\_FLOW\_ERROR: Error en el proceso de flow
* TER\_INITIALIZATION\_ERROR: Error de inicialización
* TER\_INTERNAL\_LICENSE\_ERROR: Error interno relacionado con la licencia
* TER\_MANAGER\_NOT\_INITIALIZED: Los managers son nulos
* TER\_NO\_DATA\_ERROR: Los datos de entrada son nulos
* TER\_OPERATION\_NOT\_CREATED: No hay ninguna operación en curso
* TER\_PERMISSION\_DENIED: El usuario ha rechazado los permisos
* TER\_TIMEOUT: Timeout en el proceso

### Recepción del resultado correcto - *data* <a href="#id-62-recepcion-del-resultado-correcto-data" id="id-62-recepcion-del-resultado-correcto-data"></a>

El usuario habrá aceptado las condiciones si se recibe SdkResult.Success.

***

## Información avanzada <a href="#id-7-informacion-avanzada" id="id-7-informacion-avanzada"></a>

Este apartado amplía la información del componente.

### Configuración avanzada del componente <a href="#id-71-configuracion-avanzada-del-componente" id="id-71-configuracion-avanzada-del-componente"></a>

Para lanzar el componente actual, se deberá crear un objeto *TermsConditionsConfigurationData* que será la configuración del controlador del componente.

A continuación se detallan todos los campos que forman parte de esta clase.

* `termsConditions`: Texto de condiciones y términos de uso que se mostrará al usuario
* `extractionTimeout`: Establece el tiempo máximo que se puede realizar la captura.

***

## Personalización del componente <a href="#id-8-personalizacion-del-componente" id="id-8-personalizacion-del-componente"></a>

Aparte de los cambios que se pueden realizar a nivel de SDK (los cuales se explican en el documento de [Personalización del SDK](/sdks/sdk-mobile/android-sdk/personalizacion.md)), este componente en concreto permite la modificación de su interfaz.

### Textos <a href="#id-81-textos" id="id-81-textos"></a>

Si se desea modificar los textos de la SDK habría que incluir el siguiente fichero XML en la aplicación del cliente, y modificar el valor de cada *String* por el deseado.

| **Name**                                    | **Value**                                                                           |
| ------------------------------------------- | ----------------------------------------------------------------------------------- |
| disclaimer\_widget\_agree\_button           | Aceptar                                                                             |
| disclaimer\_widget\_decline\_button         | Declinar                                                                            |
| disclaimer\_widget\_cancel\_alert\_title    | Declinar RGPD                                                                       |
| disclaimer\_widget\_cancel\_alert\_desc     | Declinando el RGPD provocará el cierre de la sesión actual. ¿Desea cerrar la sesión |
| disclaimer\_widget\_cancel\_alert\_accept   | Cerrar sesión                                                                       |
| disclaimer\_widget\_cancel\_alert \_dismiss | Cancelar                                                                            |
