Pular para o conteúdo principal

SDK iOS

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

Requisitos

  • iOS 13.0+
  • Xcode 14+
  • Swift 5.7+
  • API key — solicite em puerix.com

Instalacao

CocoaPods

# Podfile
pod 'PuerixSDK', :git => 'https://github.com/Puerix/puerix-sdk-ios.git', :tag => '0.2.0'

Depois execute:

pod install

O Google ML Kit e baixado automaticamente como dependencia.

Swift Package Manager

No Xcode: File > Add Package Dependencies e insira:

https://github.com/Puerix/puerix-sdk-ios.git

Nota: Google ML Kit nao suporta SPM. Instale separadamente via CocoaPods:

pod 'GoogleMLKit/FaceDetection', '~> 6.0'

Uso rapido

import PuerixAuth

1. Inicializar o SDK

Chame uma vez, idealmente no AppDelegate:

PuerixSDK.shared.initialize(config: PuerixConfig(
apiKey: "SUA_API_KEY",
environment: .production, // ou .development
enableLogging: true // false em producao
))

2. Verificacao completa (recomendado)

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

PuerixSDK.shared.startVerification(
from: viewController,
subject: "user-123",
ageLimit: 18
) { result in
if result.isApproved {
print("Aprovado! Session: \(result.sessionId)")
} else {
print("Nao aprovado: \(result.status)")
if let error = result.errorMessage {
print("Erro: \(error)")
}
}
}

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: UIColor(red: 0.85, green: 0.11, blue: 0.38, alpha: 1), // acoes primarias
accent: UIColor(red: 1.00, green: 0.43, blue: 0.00, alpha: 1), // destaque / "detectando"
success: UIColor(red: 0.00, green: 0.78, blue: 0.33, alpha: 1), // sucesso / step OK
text: PuerixTheme.default.text, // mantem o padrao Puerix
background: PuerixTheme.default.background // mantem o padrao Puerix
)

PuerixSDK.shared.initialize(config: 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)
environment.production / .development.productionAmbiente da API
baseUrlString?nilURL customizada (usa o padrao do environment)
timeoutTimeInterval30Timeout de rede em segundos
enableLoggingBoolfalseHabilita logs no console

startVerification

func startVerification(
from viewController: UIViewController,
subject: String, // Identificador do usuario
ageLimit: Int = 18, // Idade minima (10-21)
steps: [PuerixLivenessStep], // Passos do liveness
stepDuration: TimeInterval = 3,// Duracao por passo
callbackUrl: String? = nil, // URL de callback (opcional)
cancelUrl: String? = nil, // URL de cancelamento (opcional)
completion: @escaping (PuerixVerificationResult) -> Void
)

PuerixVerificationResult

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

PuerixLivenessStep

StepDescricao
.lookAtCameraOlhar para a camera
.turnHeadLeftVirar a cabeca para a esquerda
.turnHeadRightVirar 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

Adicione ao Info.plist:

<key>NSCameraUsageDescription</key>
<string>Necessario para verificacao de identidade</string>

Troubleshooting

ErroCausaSolucao
401 UnauthorizedAPI key invalidaVerifique a chave no painel Puerix
403 ForbiddenLimite atingido ou conta bloqueadaVerifique seu plano
Session token nao disponivelstartVerification sem initializeChame initialize() primeiro
Camera permission deniedUsuario negou acessoAdicione NSCameraUsageDescription