Skip to main content

API Reference

Documentação completa da API do GoAB SDK.

GoABSDK

Classe principal do SDK que fornece a interface para interagir com experimentos e configurações remotas.

Construtor

class GoABSDK(
private val goabRemoteConfig: GoABRemoteConfig
)

Métodos

initialize(config: GoABConfig)

Inicializa o SDK com a configuração fornecida.

Parâmetros:

  • config: GoABConfig - Configuração do SDK

Exemplo:

lifecycleScope.launch {
sdk.initialize(config)
}

getValue(key: String, defaultValue: Any): Any

Obtém o valor de uma chave de experimento.

Parâmetros:

  • key: String - Chave do experimento
  • defaultValue: Any - Valor padrão se a chave não for encontrada (obrigatório)

Retorna:

  • Any - Valor do experimento ou valor padrão

Exemplo:

// String
val buttonText = sdk.getValue("button_text", "Clique Aqui")

// Boolean
val showFeature = sdk.getValue("show_new_feature", false)

// Number
val maxRetries = sdk.getValue("max_retries", 3)

sendEvent(eventName: String, props: Map<String, Any> = emptyMap())

Envia um evento para analytics.

Parâmetros:

  • eventName: String - Nome do evento
  • props: Map<String, Any> - Propriedades do evento

Exemplo:

// Evento simples
sdk.sendEvent("button_clicked")

// Evento com propriedades
sdk.sendEvent("purchase_completed", mapOf(
"product_id" to "prod_123",
"price" to 29.99,
"currency" to "BRL"
))

refreshExperiments()

Força a atualização dos experimentos do servidor em background.

Exemplo:

sdk.refreshExperiments()

isInitialized(): Boolean

Verifica se o SDK está inicializado.

Retorna:

  • Boolean - true se inicializado, false caso contrário

Exemplo:

if (sdk.isInitialized()) {
// SDK pronto para uso
}

setUserId(newUserId: String)

Atualiza o ID do usuário atual e recarrega os experimentos.

Parâmetros:

  • newUserId: String - Novo ID do usuário

Exemplo:

lifecycleScope.launch {
sdk.setUserId("new_user_123")
}

getCurrentUserId(): String?

Obtém o ID do usuário atual.

Retorna:

  • String? - ID do usuário atual ou null

Exemplo:

val userId = sdk.getCurrentUserId()

clearActiveUsers()

Limpa os experimentos ativos.

Exemplo:

lifecycleScope.launch {
sdk.clearActiveUsers()
}

getUserId(): String?

Obtém o ID do usuário do repositório.

Retorna:

  • String? - ID do usuário ou null

Exemplo:

lifecycleScope.launch {
val userId = sdk.getUserId()
}

GoABSDKFactory

Factory para criar instâncias do SDK.

Métodos Estáticos

create(context: Context, accountId: Int, apiToken: String, timeoutSeconds: Int): GoABSDK

Cria uma nova instância do SDK.

Parâmetros:

  • context: Context - Contexto Android
  • accountId: Int - ID da conta
  • apiToken: String - Token de autenticação
  • timeoutSeconds: Int - Timeout das requisições em segundos

Retorna:

  • GoABSDK - Instância do SDK

Exemplo:

val sdk = GoABSDKFactory.create(
context = this,
accountId = 12345,
apiToken = "your-api-token",
timeoutSeconds = 30
)

GoABConfig

Classe de configuração do SDK (usada internamente).

Construtor

data class GoABConfig(
val accountId: Int,
val apiToken: String,
val baseUrl: String,
val timeoutSeconds: Int = 30,
val appContext: AppContext? = null
)

Propriedades

PropriedadeTipoObrigatórioDescrição
accountIdIntSimID da conta
apiTokenStringSimToken de autenticação
baseUrlStringSimURL base da API
timeoutSecondsIntNãoTimeout em segundos (padrão: 30)
appContextAppContext?NãoContexto da aplicação (preenchido automaticamente)

GoABConfig.AppContext

Contexto da aplicação com informações do dispositivo e usuário.

Construtor

data class AppContext(
val userId: String? = null,
val apiToken: String? = null,
val packageName: String? = null,
val packageVersion: String? = null,
val deviceId: String? = null,
val deviceModel: String? = null,
val osVersion: String? = null,
val appVersion: String? = null,
val screenResolution: String? = null,
val networkType: String? = null,
val timezone: String? = null,
val country: String? = null,
val language: String? = null
)

Propriedades

PropriedadeTipoObrigatórioDescrição
userIdString?NãoID do usuário (gerado automaticamente se não fornecido)
apiTokenString?NãoToken de autenticação
packageNameString?NãoNome do pacote (preenchido automaticamente)
packageVersionString?NãoVersão do pacote (preenchido automaticamente)
deviceIdString?NãoID do dispositivo (preenchido automaticamente)
deviceModelString?NãoModelo do dispositivo (preenchido automaticamente)
osVersionString?NãoVersão do Android (preenchido automaticamente)
appVersionString?NãoVersão da aplicação (preenchido automaticamente)
screenResolutionString?NãoResolução da tela (preenchido automaticamente)
networkTypeString?NãoTipo de rede (preenchido automaticamente)
timezoneString?NãoFuso horário (preenchido automaticamente)
countryString?NãoPaís (preenchido automaticamente)
languageString?NãoIdioma (preenchido automaticamente)

MobileInfo

Informações do dispositivo móvel.

Construtor

data class MobileInfo(
val deviceId: String,
val deviceModel: String,
val deviceBrand: String,
val deviceManufacturer: String,
val osName: String,
val osVersion: String,
val screenWidth: Int,
val screenHeight: Int,
val screenDensity: Double,
val screenOrientation: String,
val appVersion: String,
val appBuild: String,
val packageName: String,
val networkType: String,
val carrier: String?,
val timezone: String,
val country: String,
val language: String,
val isConnected: Boolean,
val isOnline: Boolean
)

Exemplos de Uso

Configuração Simplificada

// Configuração simplificada - o SDK preenche automaticamente as informações
val sdk = GoABSDKFactory.create(
context = this,
accountId = 12345,
apiToken = "your-api-token",
timeoutSeconds = 30
)

Uso Básico

class MainActivity : AppCompatActivity() {
private lateinit var sdk: GoABSDK

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// Criar SDK
sdk = GoABSDKFactory.create(
context = this,
accountId = 12345,
apiToken = "your-api-token",
timeoutSeconds = 30
)

// Inicializar
lifecycleScope.launch {
sdk.initialize()
setupUI()
}
}

private fun setupUI() {
// Obter valores dos experimentos
val buttonText = sdk.getValue("button_text", "Clique Aqui")
val showBanner = sdk.getValue("show_banner", true)

// Aplicar na UI
findViewById<Button>(R.id.button).text = buttonText.toString()
findViewById<View>(R.id.banner).visibility =
if (showBanner as Boolean) View.VISIBLE else View.GONE
}

private fun onButtonClick() {
// Enviar evento
sdk.sendEvent("button_clicked", mapOf(
"button_id" to "main_button"
))
}
}

Gerenciamento de Usuário

// Atualizar usuário
lifecycleScope.launch {
sdk.setUserId("new_user_123")
}

// Obter usuário atual
val currentUserId = sdk.getCurrentUserId()

// Limpar experimentos ativos
lifecycleScope.launch {
sdk.clearActiveUsers()
}

Tratamento de Erros

lifecycleScope.launch {
try {
sdk.initialize(config)
// SDK inicializado com sucesso
} catch (e: Exception) {
Log.e("GoAB", "Erro ao inicializar SDK", e)
// Usar valores padrão
}
}

Próximos Passos