# Instalar o SDK

Este guia orienta você na adição da biblioteca estática do Get Mini SDK ao seu projeto Xcode. Você configurará os build settings, vinculará os frameworks necessários e verificará se a instalação está funcionando corretamente.

## Requisitos

Antes de começar, certifique-se de ter:

- **Xcode 12.0** ou posterior instalado no seu Mac
- **iOS 11.0** ou posterior definido como seu minimum deployment target
- **Pacote do SDK** do Get Mini contendo `libTPVPC-SDK.a` e arquivos de cabeçalho (`.h`)
- **Familiaridade básica** com os build settings do Xcode

<Callout type="note">

O SDK não suporta CocoaPods ou Swift Package Manager. É necessária a integração manual.

</Callout>

## Etapas de Instalação

Siga estas etapas para integrar o SDK ao seu projeto Xcode.

### Passo 1: Adicionar Arquivos da Biblioteca ao Seu Projeto

Crie uma pasta dedicada para os arquivos do SDK e adicione-os ao seu projeto Xcode:

1. Crie uma pasta chamada `mPOS-SDK` no diretório do seu projeto
2. Copie `libTPVPC-SDK.a` e todos os arquivos de cabeçalho (`.h`) para esta pasta
3. Arraste a pasta `mPOS-SDK` para o project navigator do seu Xcode
4. Quando solicitado, marque **Copy items if needed** e selecione o seu app target

### Passo 2: Configurar os Header Search Paths

Diga ao Xcode onde encontrar os arquivos de cabeçalho do SDK:

1. Selecione seu projeto no Project Navigator
2. Escolha seu **App Target** e vá para **Build Settings**
3. Procure por **Header Search Paths**
4. Adicione `$(SRCROOT)/mPOS-SDK` e defina como **recursive**

### Passo 3: Adicionar as Linker Flags Necessárias

O SDK requer linker flags específicas para carregar corretamente. Em **Build Settings**, procure por **Other Linker Flags** e adicione todas as três flags:

| Flag | Propósito |
| :---- | :---- |
| `-ObjC` | Carrega categorias Objective-C da biblioteca estática |
| `-lstdc++` | Vincula a biblioteca padrão C++ para a lógica interna do SDK |
| `-lsqlite3` | Habilita a persistência de dados locais (SDK v3.4+) |

<Callout type="warning">

A ausência de linker flags causará travamentos (crashes) de "Selector not recognized" ou "Symbol not found".

</Callout>

### Passo 4: Vincular System Frameworks

Adicione os frameworks do iOS necessários em **General > Frameworks, Libraries, and Embedded Content**:

- `ExternalAccessory.framework` - Para comunicação com o PIN pad via Bluetooth
- `CoreBluetooth.framework` - Para descoberta e conexão de dispositivos
- `Security.framework` - Para operações criptográficas
- `UIKit.framework` - Para componentes de UI

### Passo 5: Verificar a Instalação

Teste se o SDK está devidamente integrado importando os cabeçalhos no seu código.

**Para projetos Objective-C**, adicione as importações ao seu arquivo de implementação:

```
#import "CommonUtils.h"
#import "RedsysPinpadManager.h"
```

**Para projetos Swift**, crie ou atualize seu **Bridging Header** (`ProjectName-Bridging-Header.h`) com as mesmas importações e, em seguida, verifique no Swift:

```
func checkSDKInstallation() {
    print("SDK Version: \(CommonUtils.getVersion())")
}
```

Compile seu projeto (⌘+B) para confirmar que a importação é bem-sucedida sem erros.

## Solução de Problemas

**Headers Not Found**

Verifique se **Header Search Paths** em Build Settings inclui `$(SRCROOT)/mPOS-SDK` definido como **recursive**.

**Undefined Symbol Errors**

Verifique se todas as três linker flags (`-ObjC`, `-lstdc++`, `-lsqlite3`) estão presentes em **Other Linker Flags**.

**Crash During Device Scan**

Faltam protocolos de External Accessory no Info.plist. Veja [Configurar Permissões do iOS](/pt/get-mini/ios-sdk/first-steps/configure-ios-permissions) para as strings de protocolo obrigatórias.

## Próximos Passos

Agora que a biblioteca está vinculada, configure as permissões do seu aplicativo para permitir a comunicação com o hardware:

* [Configurar Permissões do iOS](/pt/get-mini/ios-sdk/first-steps/configure-ios-permissions) - Configure as strings de protocolo obrigatórias e as permissões de Bluetooth
* [Início Rápido: Sua Primeira Venda](/pt/get-mini/ios-sdk/first-steps/ios-sdk-quickstart) - Inicialize o manager e comece a testar