> ## Documentation Index
> Fetch the complete documentation index at: https://docs-platform.services-valid.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Instalação

> Como instalar e configurar o Liveness Hub SDK em projetos iOS

## Requisitos

| Requisito | Versão Mínima |
| --------- | ------------- |
| iOS       | 17.0+         |
| Xcode     | 15.0+         |
| Swift     | 6.1+          |

## Permissões Necessárias

O SDK requer a permissão de câmera no `Info.plist`:

```xml theme={"theme":"catppuccin-latte"}
<key>NSCameraUsageDescription</key>
<string>Este aplicativo precisa acessar a camera para realizar a verificacao de prova de vida.</string>
```

<Info>
  O SDK solicita automaticamente a permissão de câmera quando necessário. Se o
  usuário negar a permissão, o SDK retornará o erro `cameraPermissionDenied`.
</Info>

## Instalação

<Steps>
  <Step title="Adicionar os XCFrameworks">
    Copie os arquivos `HubLivenessSDK.xcframework` e `FaceTecSDK.xcframework` para a raiz do seu projeto:

    ```
    seu-projeto/
      Frameworks/
        HubLivenessSDK.xcframework/
        FaceTecSDK.xcframework/
      SeuApp/
        SeuApp.xcodeproj
    ```
  </Step>

  <Step title="Adicionar ao Xcode">
    1. Abra seu projeto no Xcode
    2. Selecione o target da sua aplicação
    3. Vá para a aba **General**
    4. Na seção **Frameworks, Libraries, and Embedded Content**, clique em **+**
    5. Clique em **Add Other...** → **Add Files...**
    6. Selecione os arquivos `.xcframework` adicionados
    7. Configure como **Embed & Sign** para cada framework
  </Step>

  <Step title="Configurar Build Phases">
    No target do app, vá em **Build Phases**:

    #### Link Binary With Libraries

    Adicione ambos os frameworks:

    * `HubLivenessSDK.xcframework`
    * `FaceTecSDK.xcframework`

    #### Embed Frameworks

    Crie (ou edite) a fase **"Embed Frameworks"** e adicione ambos os xcframeworks com as opções:

    | Opção                  | Valor      |
    | ---------------------- | ---------- |
    | Code Sign On Copy      | Habilitado |
    | Remove Headers On Copy | Habilitado |
  </Step>

  <Step title="Build Settings">
    Verifique a seguinte configuração no target:

    ```
    LD_RUNPATH_SEARCH_PATHS = @executable_path/Frameworks
    ```
  </Step>
</Steps>

## Configuração do Info.plist

Adicione as seguintes chaves ao seu `Info.plist`:

```xml theme={"theme":"catppuccin-latte"}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- Permissão de câmera (obrigatório) -->
    <key>NSCameraUsageDescription</key>
    <string>Este aplicativo precisa acessar a camera para realizar a verificacao de prova de vida.</string>

    <!-- Outras configurações recomendadas -->
    <key>UIRequiresFullScreen</key>
    <true/>

    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
</dict>
</plist>
```

<Warning>
  A orientação Portrait é recomendada para melhor experiência de captura facial.
</Warning>

## Configuração Inicial

O SDK deve ser inicializado antes de qualquer uso. A inicialização é assíncrona e deve ser feita com `async/await`:

```swift theme={"theme":"catppuccin-latte"}
import HubLivenessSDK

@MainActor
func initializeLivenessSDK() async {
    let config = HubConfig(
        apiBaseUrl: "https://api.yourserver.com",
        apiKey: "your-api-key",
        appName: "YourAppName",
        cek: "your-base64-encoded-cek",
        localization: .ptBR
    )

    do {
        try await HubLiveness.shared.initialize(config: config)
        print("SDK inicializado com sucesso!")
    } catch {
        print("Erro ao inicializar SDK: \(error)")
    }
}
```

<Info>
  O SDK utiliza o padrão Singleton. Use `HubLiveness.shared` para acessar a instância.
</Info>

## Parâmetros de Configuração

| Parâmetro      | Tipo            | Descrição                                  |
| -------------- | --------------- | ------------------------------------------ |
| `apiBaseUrl`   | String          | URL base da API de liveness                |
| `apiKey`       | String          | Chave de API para autenticação             |
| `appName`      | String          | Nome da aplicação para identificação       |
| `cek`          | String          | Chave CEK codificada em Base64             |
| `localization` | HubLocalization | Configuração de idioma e textos (opcional) |

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Implementação" icon="code" href="/plataforma/liveness/hub/sdk/ios/implementation">
    Veja como implementar a verificação de liveness
  </Card>

  <Card title="Customização" icon="palette" href="/plataforma/liveness/hub/sdk/ios/customization">
    Personalize idiomas, textos e níveis de risco
  </Card>
</CardGroup>
