> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-sdk/caf-sdk-pt-br/ios/standalone-modules/cafsmartauth/builder.md).

# Compilando o SDK

## Criando uma instância do SDK CafSmartAuth

Para criar uma `CafSmartAuth` instância, use o `CafBuilder` classe. Esta classe fornece um conjunto de métodos para configurar a instância do SDK.

### Propriedades do Builder

| Propriedade   | Tipo   | Descrição                              | Obrigatório |
| ------------- | ------ | -------------------------------------- | :---------: |
| `mobileToken` | String | Token móvel fornecido pela plataforma. |      ✅      |

### Métodos do Builder

| Método                                            | Tipo                      | Descrição                                                                                       | Obrigatório |
| ------------------------------------------------- | ------------------------- | ----------------------------------------------------------------------------------------------- | :---------: |
| <p><code>setStage(\_:)</code><br></p>             | `CAFStage`                | Define a etapa do ambiente (por exemplo, `.prod`, `.beta`). O padrão é `.prod`.                 |      ❌      |
| <p><code>setEmailURL(\_:)</code><br></p>          | `URL`                     | Define a URL de autenticação de e-mail. Deve usar o protocolo HTTPS.                            |      ❌      |
| <p><code>setPhoneURL(\_:)</code><br></p>          | `URL`                     | Define a URL de autenticação de telefone. Deve usar o protocolo HTTPS.                          |      ❌      |
| <p><code>setPlatform(\_:)</code><br></p>          | `CafSdkPlatform`          | Define a plataforma na qual o SDK está sendo executado. O padrão é `.nativeIos`.                |      ❌      |
| <p><code>setLivenessSettings(\_:)</code><br></p>  | `CafFaceLivenessSettings` | Define as configurações de autenticação de prova de vida facial.                                |      ❌      |
| <p><code>setThemeConfigurator(\_:)</code><br></p> | `CafThemeConfigurator`    | Define a configuração de tema para o SDK. Personalize a aparência para os modos claro e escuro. |      ❌      |

### Configuração do Tema

Para personalizar a aparência do SDK, use os métodos do configurador de tema. Duas estruturas são usadas para a configuração do tema: `CafThemeConfigurator` e `CafTheme`.

#### CafThemeConfigurator

```swift
public struct CafThemeConfigurator {
    public var lightTheme: CafTheme
    public var darkTheme: CafTheme

    public init(lightTheme: CafTheme = CafTheme(),
                darkTheme: CafTheme = CafTheme()) {
        self.lightTheme = lightTheme
        self.darkTheme = darkTheme
    }
}
```

Esta estrutura permite definir temas separados para os modos claro e escuro. Cada tema é definido por uma estrutura CafTheme.

```swift
public struct CafTheme {
    public var backgroundColor: UIColor
    public var textColor: UIColor
    public var linkColor: UIColor
    public var boxBorderColor: UIColor
    public var boxFilledBorderColor: UIColor
    public var boxBackgroundColor: UIColor
    public var boxFilledBackgroundColor: UIColor
    public var boxTextColor: UIColor
    public var progressColor: UIColor

    public init(backgroundColor: String = "#FFFFFF",
                textColor: String = "#FF000000",
                linkColor: String = "#004AF7",
                boxBorderColor: String = "#cbcbcb",
                boxFilledBorderColor: String = "#004AF7",
                boxBackgroundColor: String = "#D3D3D3",
                boxFilledBackgroundColor: String = "#D3D3D3",
                boxTextColor: String = "#004AF7",
                progressColor: String = "#004AF7") {
        self.backgroundColor = UIColor(hex: backgroundColor)
        self.textColor = UIColor(hex: textColor)
        self.linkColor = UIColor(hex: linkColor)
        self.boxBorderColor = UIColor(hex: boxBorderColor)
        self.boxFilledBorderColor = UIColor(hex: boxFilledBorderColor)
        self.boxBackgroundColor = UIColor(hex: boxBackgroundColor)
        self.boxFilledBackgroundColor = UIColor(hex: boxFilledBackgroundColor)
        self.boxTextColor = UIColor(hex: boxTextColor)
        self.progressColor = UIColor(hex: progressColor)
    }
}
```

Esta estrutura define vários atributos de aparência para o SDK. Você pode personalizar cores de fundos, texto, links, bordas e indicadores de progresso fornecendo valores de string hexadecimais.

### Exemplo

```swift
import CafSmartAuth

let smartAuth: CafSmartAuthSdk?

private func setupCafSmartAuth() {
    smartAuth = CafSmartAuthSdk.CafBuilder(mobileToken: "myMFAToken")
        .setStage(.prod)
        .setEmailURL(URL(string: "https://myEmailUrl.com")) // Não obrigatório
        .setPhoneURL(URL(string: "https://myPhoneUrl.com")) // Não obrigatório
        .setLivenessSettings(
            CafFaceLivenessSettings(
                faceLivenessToken: "myFaceAuthToken",
                useLoadingScreen: false,
                filter: .lineDrawing
            )
        )
        .setThemeConfigurator(
            CafThemeConfigurator(
                lightTheme: CafTheme(
                    backgroundColor: "#FFFFFF",
                    textColor: "#000000"
                ),
                darkTheme: CafTheme(
                    backgroundColor: "#000000",
                    textColor: "#FFFFFF"
                )
            )
        )
        .build()
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-sdk/caf-sdk-pt-br/ios/standalone-modules/cafsmartauth/builder.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
