> 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/inicializacion/lanzamiento-simplificado.md).

# Lançamento simplificado

## Inicializar o SDK

O SDK funciona por meio de um **controlador principal (`SDKController`)**. A Facephi fornecerá o `apiKey` da Licença necessária para a inicialização.

```swift
 import core
 import sdk
 import trackingComponent
 
 ...
 
 let trackingController = TrackingController(
     trackingError: { trackingError in
         self.log("ERRO DE TRACKING: \(trackingError)")
     },
     enableLocation: false)

SDKController.shared.initSdk(licensingUrl: SdkConfigurationManager.LICENSING_URL, apiKey: SdkConfigurationManager.APIKEY_LICENSING, output: { sdkResult in
    if sdkResult.finishStatus == .STATUS_OK {
        self.log("Licença automática configurada corretamente")
    } else {
        self.log("Ocorreu um erro ao tentar obter a Licença: \(sdkResult.errorType)")
    }
}, trackingController: trackingController)

```

## Iniciar operação

Antes de lançar qualquer componente, é obrigatório **iniciar uma operação**.

Este método tem 3 parâmetros de entrada:

* **operationType**: Indica se será realizado um processo de ONBOARDING ou de AUTHENTICATION.
* **customerId**: Identificador do usuário (controlado no nível da aplicação).
* **steps**: Lista de passos da operação, se tiverem sido definidos previamente:

**- Passos definidos**:

{% code overflow="wrap" %}

```swift
SDKController.shared.newOperation(operationType: OperationType.X, customerId: "customerId", steps: [.SELPHI, .SELPHID, .OTHER("CUSTOM_STEP")], output: { _ in })
```

{% endcode %}

**- Passos não definidos:**

{% code overflow="wrap" %}

```swift
SDKController.shared.newOperation(operationType: OperationType.X, customerId: "customerId", output: { _ in})
```

{% endcode %}

## Lançamento de componentes

Cada componente tem seu próprio controlador e é lançado a partir de `SDKController`.

{% code overflow="wrap" %}

```swift
public func launchExample(setTracking: Bool = true,viewController: UIViewController,componentConfigurationData: ComponentConfigurationData)
{
    let output: (SdkResult<ExampleResult>) -> Void = { exampleResult in
        print("exampleResult: \(exampleResult.finishStatus)")
    }
        
    let controller = ExampleController(data: exampleConfigurationData, output: output, viewController: viewController)
        
    if setTracking {
        SDKController.shared.launch(controller: controller)
    } else {
        SDKController.shared.launchMethod(controller: controller)
    }
}
```

{% endcode %}
