> 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/docs.facephi-pt-br/sdks/sdk-mobile/ios-sdk/modulos/terminos-y-condiciones-de-uso.md).

# Termos e condições

## Introdução

A aceitação dos termos e condições de uso é realizada por meio do ***TermsConditions Component***.

Este componente é responsável por gerenciar a captura da resposta do usuário diante de termos e condições de uso. Seus principais processos são:

* Lançamento de um visualizador de texto HTML.
* Captura da resposta do usuário.

Na seção de [Lançamento simplificado](/docs.facephi-pt-br/sdks/sdk-mobile/ios-sdk/inicializacion/lanzamiento-simplificado.md) são detalhados os passos necessários para a integração básica do SDK. Nesta seção, é adicionada a informação específica para o lançamento deste componente.

***

## Dependências

Para evitar conflitos e problemas de compatibilidade, caso se queira instalar o componente em um projeto que contenha uma versão antiga das bibliotecas de Facephi, elas deverão ser removidas completamente antes de instalar os componentes de **SDK Mobile**.

### CocoaPods

* As dependências obrigatórias que deverão ter sido instaladas previamente (adicionando-as no arquivo `Podfile` do projeto) são:

```swift
pod 'FPHISDKMainComponent', '~> $VERSION'
```

* Para instalar o componente de termos e condições de uso, adicione a seguinte dependência no `Podfile` do projeto:

```swift
pod 'FPHISDKTermsConditionsComponent', '~> $VERSION'
```

### Swift Package Manager (SPM)

* As dependências obrigatórias que deverão ter sido instaladas previamente são:

```swift
//HTTPS
https://github.com/facephi-clienters/SDK-SdkPackage-SPM.git
//SSH
git@github.com:facephi-clienters/SDK-SdkPackage-SPM.git
```

* Para instalar o componente de termos e condições de uso, inclua-o nos módulos do projeto:

```swift
//HTTPS
https://github.com/facephi-clienters/SDK-TermsConditionsComponent-SPM.git
//SSH
git@github.com:facephi-clienters/SDK-TermsConditionsComponent-SPM.git
```

***

## Controladores disponíveis

| **Controlador**           | **Descrição**                                           |
| ------------------------- | ------------------------------------------------------- |
| TermsConditionsController | Controlador principal de captura de aceitação de termos |

***

## Lançamento simplificado

Depois que o SDK for iniciado e uma nova operação for criada, o componente pode ser lançado usando seu controlador principal.

```swift
let controller = TermsConditionsController(
    data: termsConditionsConfigurationData,
    output: { sdkResult in
        // Do whatever with the result
        ...
    }
)
SDKController.shared.launch(controller: controller)
```

***

## Configuração básica

Para lançar o componente, deve-se criar um objeto `TermsConditionsConfigurationData`, que define a configuração do controlador.

A configuração básica necessária é a seguinte:

```swift
TermsConditionsConfigurationData(
    termsConditions: "...html..."
)
```

Os parâmetros disponíveis são:

* `termsConditions`: texto HTML de termos e condições de uso que será mostrado ao usuário.
* `extractionTimeout`: tempo máximo permitido para concluir o processo.
* `orientation`: orientação da tela do SDK.

***

## Recebimento do resultado

O lançamento retornará as informações no formato `SdkResult`. É possível diferenciar entre um lançamento correto e um incorreto.

### Recebimento de erros

Na parte do erro, estará disponível a classe comum `ErrorType`.

Lista de erros:

* `TER_APPLICATION_CONTEXT_ERROR`: O contexto de aplicação necessário é nulo.
* `TER_CANCEL_BY_USER`: O usuário cancelou o processo.
* `TER_CANCEL_LAUNCH`: Foi feito um cancelamento geral do SDK.
* `TER_COMPONENT_LICENSE_ERROR`: A licença do componente não está correta.
* `TER_EMPTY_LICENSE`: A String da licença está vazia.
* `TER_FLOW_ERROR`: Erro no processo de flow.
* `TER_INITIALIZATION_ERROR`: Erro de Inicialização.
* `TER_MANAGER_NOT_INITIALIZED`: Os managers são nulos.
* `TER_NO_DATA_ERROR`: Os dados de entrada são nulos.
* `TER_OPERATION_NOT_CREATED`: Não há nenhuma operação em andamento.
* `TER_PERMISSION_DENIED`: O usuário rejeitou as permissões.
* `TER_TIMEOUT`: Timeout no processo.
* `TER_UNKNOWN_ERROR`: Erro desconhecido.

### Recebimento do resultado correto - data

Na parte de `SdkResult.Success - data`, teremos a classe `TermsConditionsResult`.

`TermsConditionsResult` não expõe campos adicionais. Se o usuário aceitar os termos, o componente retorna um resultado correto; se os rejeitar, retorna um erro `OTHER("USER_REJECTED_TERMS_AND_CONDITIONS")`.

***

## Informações avançadas

### Configuração avançada do componente

Para lançar o componente, deve-se criar um objeto `TermsConditionsConfigurationData`.

A seguir, são detalhados os campos desta classe:

* `termsConditions`: texto de termos e condições de uso que será mostrado ao usuário.
* `extractionTimeout`: define o tempo máximo que a captura pode durar.
* `orientation`: orientação da interface do SDK.

***

## Personalização do componente

Além das alterações que podem ser feitas no nível de SDK, este componente permite a personalização de sua interface por meio do sistema de temas do wrapper iOS.

### Tema

A personalização visual é definida por `ThemeTermsConditionsProtocol`.

Os temas disponíveis no wrapper são:

* `ThemeTermsConditions`: tema padrão do componente.
* `ThemeTermsConditionsFlow`: tema aplicado quando a personalização externa é resolvida.

Os recursos de cor e dimensões do componente são resolvidos a partir das chaves do sistema de personalização do SDK:

* `sdkPrimaryColor`
* `sdkSecondaryColor`
* `sdkBackgroundPrimaryColor`
* `sdkErrorColor`
* `sdkSuccessColor`
* `sdkNeutralColor`
* `sdkAccentColor`
* `sdkTitleTextColor`
* `sdkBodyTextColor`
* `sdkTopIconsColor`
* `sdkButtonTextColor`

A dimensão configurável disponível é:

* `radiusCorner`

***
