Idiomas Suportados
O SDK suporta dois idiomas nativamente:// Inglês (padrão)
let localization = LivenessLocalization.default
// Português (Brasil)
let localization = LivenessLocalization.ptBR
Usando Idioma Predefinido
Método Simples
import HubLivenessSDK
// Opção 1: Português Brasileiro
let config = LivenessHubConfig(
apiBaseUrl: "https://api.yourserver.com",
apiKey: "your-api-key",
appName: "YourAppName",
cek: "your-base64-encoded-cek",
localization: .ptBR
)
// Opção 2: Inglês (padrão)
let config = LivenessHubConfig(
apiBaseUrl: "https://api.yourserver.com",
apiKey: "your-api-key",
appName: "YourAppName",
cek: "your-base64-encoded-cek",
localization: .default
)
Customização Completa de Textos
Para customizar todos os textos exibidos durante o fluxo de liveness, você pode criar um objetoHubLocalization personalizado.
Estrutura de Strings
O SDK organiza os textos nas seguintes categorias:Telas
Textos de telas (títulos, instruções, mensagens)
Feedback
Textos de feedback em tempo real
Botões
Textos dos botões e ações
Criando Localização Customizada
import HubLivenessSDK
let customLocalization = HubLocalization(
// Mensagens de carregamento
loadingMessage: "Carregando...",
preparingCamera: "Preparando câmera...",
// Instruções de posicionamento
positionFace: "Posicione seu rosto no centro",
holdStill: "Mantenha-se parado",
// Status de processamento
processing: "Processando...",
// Mensagens de resultado
success: "Verificação concluída!",
error: "Erro na verificação",
// Botões
tryAgain: "Tentar novamente",
cancel: "Cancelar"
)
let config = HubConfig(
apiBaseUrl: "https://api.yourserver.com",
apiKey: "your-api-key",
appName: "YourAppName",
cek: "your-base64-encoded-cek",
localization: customLocalization
)
- Feedback
- Telas
- Botões
Durante a captura facial, o SDK exibe feedbacks para guiar o usuário:
let localization = HubLocalization(
// Detecção de rosto
noFaceDetected: "Nenhum rosto detectado",
multipleFaces: "Múltiplos rostos detectados",
faceCentered: "Perfeito! Mantenha essa posição",
// Distância
tooClose: "Afaste-se um pouco",
tooFar: "Aproxime-se",
// Posicionamento
tooLeft: "Mova para a direita",
tooRight: "Mova para a esquerda",
tooHigh: "Abaixe a cabeça levemente",
tooLow: "Levante a cabeça levemente",
// Ângulo/Pose
faceAngleMisaligned: "Alinhe seu rosto com a câmera",
lookStraightAhead: "Olhe diretamente para a câmera",
holdHeadStraight: "Mantenha sua cabeça reta",
// Expressão
closedEyes: "Mantenha os olhos abertos",
neutralExpression: "Mantenha uma expressão neutra",
// Iluminação
tooDark: "Ambiente muito escuro",
tooBright: "Luz muito forte",
// Captura
holdSteady: "Mantenha-se parado",
frameYourFace: "Enquadre seu rosto no oval"
)
Personalize os textos das telas principais:
let localization = HubLocalization(
// Tela de preparação
getReadyTitle: "Prepare-se",
getReadySubtitle: "Vamos iniciar a verificação",
getReadyMessage: "Certifique-se de estar em um ambiente bem iluminado",
// Tela de captura
captureTitle: "Captura Facial",
captureHelpText: "Posicione seu rosto no centro da tela",
// Tela de revisão
reviewPhotoTitle: "Revise sua Foto",
reviewPhotoInstruction: "A imagem está clara e bem iluminada?",
// Tela de retry
retryTitle: "Vamos Tentar Novamente",
retrySubtitle: "A captura anterior não foi bem sucedida",
retryTip1: "Mantenha seu rosto centralizado",
retryTip2: "Evite movimentos bruscos",
// Tela de upload
uploadingMessage: "Enviando sua foto...",
successMessage: "Verificação concluída com sucesso!"
)
let localization = HubLocalization(
// Botões principais
buttonBack: "Voltar",
buttonCapture: "Capturar",
buttonRetake: "Refazer",
buttonSubmit: "Enviar",
buttonImReady: "Estou Pronto",
buttonTryAgain: "Tentar Novamente",
buttonOk: "OK",
buttonContinue: "Continuar",
buttonCancel: "Cancelar"
)
Idiomas Predefinidos Completos
- Português (pt-BR)
- English (default)
let ptBrLocalization = HubLocalization(
loadingMessage: "Carregando...",
preparingCamera: "Preparando câmera...",
positionFace: "Posicione seu rosto no centro",
holdStill: "Mantenha-se parado",
processing: "Processando...",
success: "Verificação concluída com sucesso!",
error: "Erro na verificação",
tryAgain: "Tentar novamente",
cancel: "Cancelar",
noFaceDetected: "Nenhum rosto detectado",
multipleFaces: "Múltiplos rostos detectados",
tooClose: "Afaste-se um pouco",
tooFar: "Aproxime-se",
tooDark: "Ambiente muito escuro",
tooBright: "Luz muito forte"
)
let englishLocalization = HubLocalization(
loadingMessage: "Loading...",
preparingCamera: "Preparing camera...",
positionFace: "Position your face in the center",
holdStill: "Hold still",
processing: "Processing...",
success: "Verification completed successfully!",
error: "Verification error",
tryAgain: "Try again",
cancel: "Cancel",
noFaceDetected: "No face detected",
multipleFaces: "Multiple faces detected",
tooClose: "Move away slightly",
tooFar: "Move closer",
tooDark: "Environment too dark",
tooBright: "Light too bright"
)
Classes de Localização
Resumo
| Struct | Descrição |
|---|---|
HubLocalization | Configuração principal de idioma e textos |
.default | Preset em inglês |
.ptBR | Preset em português brasileiro |
Você pode criar uma localização parcial. Os campos não especificados usarão
os valores padrão do idioma selecionado.
Exemplo Completo de Customização
import HubLivenessSDK
// Criar localização totalmente customizada
let customLocalization = HubLocalization(
// Mensagens gerais
loadingMessage: "Aguarde...",
preparingCamera: "Iniciando câmera...",
positionFace: "Centralize seu rosto",
holdStill: "Fique parado",
processing: "Analisando...",
success: "Tudo certo!",
error: "Ops! Algo deu errado",
tryAgain: "Refazer",
cancel: "Sair",
// Feedbacks de captura
noFaceDetected: "Cadê você?",
multipleFaces: "Uma pessoa por vez, por favor",
tooClose: "Dê um passo para trás",
tooFar: "Chegue mais perto",
tooDark: "Precisa de mais luz",
tooBright: "Muita luz, busque sombra"
)
// Aplicar na configuração
let config = HubConfig(
apiBaseUrl: "https://api.yourserver.com",
apiKey: "your-api-key",
appName: "MeuApp",
cek: "your-base64-encoded-cek",
localization: customLocalization
)
// Inicializar SDK
Task {
try await HubLiveness.shared.initialize(config: config)
}
Próximos Passos
Implementação
Veja como implementar a verificação
Troubleshooting
Resolução de problemas comuns