Pular para o conteúdo principal

SDK Android

Repositorio: github.com/Puerix/puerix-sdk-android

Requisitos

  • Android API 21+ (Android 5.0)
  • Kotlin 1.8+
  • Java 17
  • API key — solicite em puerix.com

Instalacao

1. Adicionar o repositorio Maven

// settings.gradle
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url 'https://raw.githubusercontent.com/Puerix/puerix-sdk-android/main/maven-repo' }
}
}

2. Adicionar a dependencia

// app/build.gradle
dependencies {
implementation 'com.puerix:puerix-sdk:0.2.0'
}

3. Sincronizar o projeto

./gradlew sync

Nota: Se estiver usando Kotlin 2.0+, adicione ao app/build.gradle:

kotlinOptions {
freeCompilerArgs += ['-Xskip-metadata-version-check']
}

Uso rapido

1. Inicializar o SDK

Chame uma vez, idealmente no Application.onCreate():

import com.puerix.puerix_sdk.PuerixSDK
import com.puerix.puerix_sdk.PuerixConfig
import com.puerix.puerix_sdk.PuerixEnvironment

PuerixSDK.initialize(PuerixConfig(
apiKey = "SUA_API_KEY",
environment = PuerixEnvironment.PRODUCTION, // ou DEVELOPMENT
enableLogging = true // false em producao
))

2. Verificacao completa (recomendado)

Inicia o fluxo completo: sessao → liveness → upload → documento (se necessario) → resultado.

class MainActivity : AppCompatActivity() {

companion object {
private const val RC_VERIFICATION = 1234
}

private fun startVerification() {
PuerixSDK.startVerification(
activity = this,
requestCode = RC_VERIFICATION,
subject = "user-123",
ageLimit = 18,
)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
PuerixSDK.handleVerificationResult(
requestCode, resultCode, data,
myRequestCode = RC_VERIFICATION
) { result ->
if (result.isApproved) {
Log.d("Puerix", "Aprovado! Session: ${result.sessionId}")
} else {
Log.d("Puerix", "Nao aprovado: ${result.status}")
result.errorMessage?.let { Log.e("Puerix", "Erro: $it") }
}
}
}
}

Customizacao visual

As telas nativas usam a paleta Puerix por padrao. Para adequa-las a identidade visual do seu app, defina PuerixTheme.active antes do initialize:

PuerixTheme.active = PuerixTheme(
primary = Color.parseColor("#6750A4"), // acoes primarias
accent = Color.parseColor("#9A82DB"), // destaque / "detectando"
success = Color.parseColor("#2E7D32"), // sucesso / step OK
text = PuerixTheme.DEFAULT.text, // mantem o padrao Puerix
background = PuerixTheme.DEFAULT.background, // mantem o padrao Puerix
)

PuerixSDK.initialize(PuerixConfig(apiKey = "SUA_API_KEY"))

Tokens de cor

TokenDefault PuerixOnde aparece
primary#2C7DA0Acoes primarias, captura de documento
accent#61C0BFBorda "detectando", destaques
success#468C8BBorda OK, steps concluidos, textos de sucesso
text#1A3B5DLabels escuros sobre fundo claro
background#F4F7F6Fundos claros

Referencia da API

PuerixConfig

ParametroTipoPadraoDescricao
apiKeyStringChave de API (obrigatorio)
environmentPRODUCTION / DEVELOPMENTPRODUCTIONAmbiente da API
baseUrlString?nullURL customizada (usa o padrao do environment)
timeoutMsLong30000Timeout de rede em milissegundos
enableLoggingBooleanfalseHabilita logs no Logcat

startVerification

fun startVerification(
activity: Activity,
requestCode: Int,
subject: String, // Identificador do usuario
ageLimit: Int = 18, // Idade minima (10-21)
steps: List<PuerixLivenessStep>, // Passos do liveness
stepDuration: Long = 10_000L, // Duracao por passo (ms)
)

PuerixVerificationResult

PropriedadeTipoDescricao
sessionIdStringID da sessao no backend
statusStringapproved, denied, requires_doc, cancelled
isApprovedBooleanSe a verificacao foi aprovada
errorMessageString?Mensagem de erro (se houver)

PuerixLivenessStep

StepKeyDescricao
LOOK_AT_CAMERAlookAtCameraOlhar para a camera
TURN_HEAD_LEFTturnHeadLeftVirar a cabeca para a esquerda
TURN_HEAD_RIGHTturnHeadRightVirar a cabeca para a direita

Fluxo de verificacao

┌─────────────┐     ┌──────────┐     ┌──────────────┐     ┌──────────────┐
│ Iniciar │────>│ Liveness │────>│ Upload │────>│ Resultado │
│ Verificacao │ │ (3 steps)│ │ Frames │ │ approved/ │
└─────────────┘ └──────────┘ └──────┬───────┘ │ denied │
│ └──────────────┘
│ requires_doc
v
┌──────────────┐ ┌──────────────┐
│ Documento │────>│ Validacao │
│ (frente+verso│ │ CPF + foto │
│ + OCR CPF) │ └──────────────┘
└──────────────┘

Permissoes

O SDK declara as permissoes automaticamente no AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />

A permissao de camera e solicitada em runtime automaticamente pelo SDK.

Troubleshooting

ErroCausaSolucao
401 UnauthorizedAPI key invalidaVerifique a chave no painel Puerix
403 ForbiddenLimite atingido ou conta bloqueadaVerifique seu plano
Incompatible classes in dependenciesVersao Kotlin incompativelAdicione -Xskip-metadata-version-check
Session token nao disponivelstartVerification sem initializeChame initialize() primeiro
Camera permission deniedUsuario negou acessoO SDK solicita automaticamente