Skip to main content

Inicialização

Configure e inicialize o GoAB SDK com todas as opções disponíveis.

Configuração simplificada

Factory

O SDK usa uma factory que preenche automaticamente as informações do dispositivo:

let sdk = GoABSDKFactory.create(
accountId: 12345,
apiToken: "your-token",
timeoutSeconds: 30
)

Parâmetros obrigatórios

ParâmetroTipoDescrição
accountIdIntID da sua conta no GoAB
apiTokenStringToken de autenticação

Parâmetros opcionais

ParâmetroTipoPadrãoDescrição
timeoutSecondsInt30Timeout das requisições em segundos

Configuração automática

O SDK preenche automaticamente as informações do dispositivo e do app:

Informações preenchidas automaticamente

CampoFonteExemplo
bundleIdentifierBundle.main.bundleIdentifiercom.yourapp.ios
appVersionBundle.main.infoDictionary1.0.0
deviceIdIdentificador do dispositivoabc123...
deviceModelutsnameiPhone14,2
osVersionUIDevice.current.systemVersion17.0
timezoneTimeZone.currentAmerica/Sao_Paulo
countryLocale.current.regionCodeBR
languageLocale.current.languageCodept

Inicialização

Método 1: Factory (recomendado)

import GoABSDK

let sdk = GoABSDKFactory.create(
accountId: 12345,
apiToken: "your-api-token",
timeoutSeconds: 30
)

Task {
try? await sdk.initialize()
}

Método 2: Com GoABConfig

let config = GoABConfig(
accountId: 12345,
apiToken: "your-api-token",
timeoutSeconds: 30
)
let sdk = GoABSDKFactory.create(config: config)

Task {
try? await sdk.initialize()
}

Método 3: Injeção de dependência

Se você usa um container de DI (ex.: Swinject, manual):

// Exemplo com propriedade estática ou ambiente
enum DIContainer {
static let sdk: GoABSDK = {
GoABSDKFactory.create(
accountId: 12345,
apiToken: "your-api-token",
timeoutSeconds: 30
)
}()
}

Configurações avançadas

Desenvolvimento

let sdk = GoABSDKFactory.create(
accountId: 12345,
apiToken: "dev-api-token",
timeoutSeconds: 10
)

Produção

let sdk = GoABSDKFactory.create(
accountId: 12345,
apiToken: "prod-api-token",
timeoutSeconds: 30
)

Timeout maior

let sdk = GoABSDKFactory.create(
accountId: 12345,
apiToken: "your-api-token",
timeoutSeconds: 60
)

Verificação de inicialização

Status

if sdk.isInitialized() {
let value = sdk.getValue("key", defaultValue: "default") as? String ?? "default"
} else {
print("GoAB: SDK ainda não inicializado")
}

Aguardar inicialização

Task {
try? await sdk.initialize()

while !sdk.isInitialized() {
try? await Task.sleep(nanoseconds: 100_000_000) // 0.1s
}

await MainActor.run { applyExperiments() }
}

Tratamento de erros

Try/catch na inicialização

Task {
do {
try await sdk.initialize()
print("GoAB: SDK inicializado com sucesso")
} catch {
print("GoAB: Erro ao inicializar - \(error)")
applyDefaultValues()
}
}

Validação de parâmetros

func validateParams(accountId: Int, apiToken: String) -> Bool {
accountId > 0 && !apiToken.isEmpty
}

if validateParams(accountId: 12345, apiToken: "your-api-token") {
let sdk = GoABSDKFactory.create(
accountId: 12345,
apiToken: "your-api-token",
timeoutSeconds: 30
)
Task { try? await sdk.initialize() }
} else {
print("GoAB: Parâmetros inválidos")
}

Exemplo completo

class MainViewController: UIViewController {
private let sdk = GoABSDKFactory.create(
accountId: 12345,
apiToken: "your-api-token",
timeoutSeconds: 30
)

override func viewDidLoad() {
super.viewDidLoad()
setupSDK()
}

private func setupSDK() {
Task {
do {
try await sdk.initialize()
await MainActor.run { applyExperiments() }
} catch {
print("GoAB: Erro ao inicializar - \(error)")
await MainActor.run { applyDefaultValues() }
}
}
}

private func applyExperiments() {
let buttonText = sdk.getValue("button_text", defaultValue: "Clique Aqui") as? String ?? "Clique Aqui"
button.setTitle(buttonText, for: .normal)
}

private func applyDefaultValues() {
button.setTitle("Clique Aqui", for: .normal)
}
}

Próximos passos