Skip to main content

Inicialização

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

Configuração Simplificada

Factory Pattern

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

val sdk = GoABSDKFactory.create(
context = this, // Contexto Android
accountId = 12345, // ID da conta
apiToken = "your-token", // Token de API
timeoutSeconds = 30 // Timeout das requisições
)

Parâmetros Obrigatórios

ParâmetroTipoDescrição
contextContextContexto Android
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 agora preenche automaticamente todas as informações do dispositivo e aplicação:

Informações Preenchidas Automaticamente

CampoFonteExemplo
packageNamecontext.packageNamecom.yourapp.package
packageVersionPackageManager.getPackageInfo()1.0.0
deviceIdSettings.Secure.ANDROID_IDabc123def456
deviceModelBuild.MODELSamsung Galaxy S21
osVersionBuild.VERSION.RELEASE12
screenResolutionDisplayMetrics1080x2400
networkTypeConnectivityManagerwifi ou mobile
timezoneTimeZone.getDefault().idAmerica/Sao_Paulo
countryLocale.getDefault().countryBR
languageLocale.getDefault().languagept

Parâmetros do AppContext

ParâmetroTipoObrigatórioDescrição
userIdString?NãoID único do usuário
apiTokenString?SimToken de autenticação
packageNameString?SimNome do pacote da aplicação
packageVersionString?NãoVersão da aplicação
deviceIdString?NãoID único do dispositivo
deviceModelString?NãoModelo do dispositivo
osVersionString?NãoVersão do Android
appVersionString?NãoVersão da aplicação
screenResolutionString?NãoResolução da tela (ex: "1080x2400")
networkTypeString?NãoTipo de conexão (wifi, 4g, 5g)
timezoneString?NãoFuso horário
countryString?NãoCódigo do país (ISO 3166-1)
languageString?NãoCódigo do idioma (ISO 639-1)

Inicialização

Método 1: Factory Pattern (Recomendado)

import io.goab.sdk.GoABSDKFactory

// Criar e configurar instância
val sdk = GoABSDKFactory.create(
context = this,
accountId = 12345,
apiToken = "your-api-token",
timeoutSeconds = 30
)

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

Método 2: Injeção de Dependência

Se você usa Hilt/Dagger na sua aplicação:

@Module
@InstallIn(SingletonComponent::class)
object GoABModule {

@Provides
@Singleton
fun provideGoABSDK(
@ApplicationContext context: Context
): GoABSDK {
return GoABSDKFactory.create(
context = context,
accountId = 12345,
apiToken = "your-api-token",
timeoutSeconds = 30
)
}
}

Configurações Avançadas

Configuração para Desenvolvimento

val sdk = GoABSDKFactory.create(
context = this,
accountId = 12345,
apiToken = "dev-api-token",
timeoutSeconds = 10 // Timeout menor para desenvolvimento
)

Configuração para Produção

val sdk = GoABSDKFactory.create(
context = this,
accountId = 12345,
apiToken = "prod-api-token",
timeoutSeconds = 30 // Timeout padrão para produção
)

Configuração com Timeout Personalizado

val sdk = GoABSDKFactory.create(
context = this,
accountId = 12345,
apiToken = "your-api-token",
timeoutSeconds = 60 // Timeout maior para redes lentas
)

Verificação de Inicialização

Verificar Status

if (sdk.isInitialized()) {
// SDK pronto para uso
val value = sdk.getValue("key", "default")
} else {
// SDK ainda não inicializado
Log.w("GoAB", "SDK não inicializado")
}

Aguardar Inicialização

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

// Aguardar conclusão
while (!sdk.isInitialized()) {
delay(100)
}

// SDK pronto para uso
applyExperiments()
}

Tratamento de Erros

Try-Catch na Inicialização

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

Verificação de Configuração

fun validateSDKParams(accountId: Int, apiToken: String): Boolean {
return accountId > 0 && apiToken.isNotEmpty()
}

// Usar validação
if (validateSDKParams(12345, "your-api-token")) {
val sdk = GoABSDKFactory.create(this, 12345, "your-api-token", 30)
lifecycleScope.launch {
sdk.initialize()
}
} else {
Log.e("GoAB", "Parâmetros inválidos")
}

Exemplo Completo

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

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

setupGoABSDK()
}

private fun setupGoABSDK() {
val config = createConfig()
goabSDK = GoABSDKFactory.create(this, config)

lifecycleScope.launch {
try {
goabSDK.initialize(config)
Log.d("GoAB", "SDK inicializado com sucesso")
applyExperiments()
} catch (e: Exception) {
Log.e("GoAB", "Erro ao inicializar SDK", e)
applyDefaultValues()
}
}
}

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

private fun applyExperiments() {
// Aplicar experimentos após inicialização
val buttonText = goabSDK.getValue("button_text", "Clique Aqui")
findViewById<Button>(R.id.button).text = buttonText.toString()
}

private fun applyDefaultValues() {
// Valores padrão quando SDK não está disponível
findViewById<Button>(R.id.button).text = "Clique Aqui"
}
}

Próximos Passos