Guia Detalhado de Uso
Aprofunde seu entendimento e personalize com precisão, com explicações completas que orientam cada etapa do processo.
📑 Sumário
- 📌 Visão Geral
- ✅ Requisitos de Compatibilidade
- ⚙️ Instalação
- 🔌 Criação do provedor de Liveness
4.1 ✅ Provedores Disponíveis
4.2 🧩 Provedor: IProov - 📦 Estrutura das Classes Importantes
- 🔍 Principais Classes e Métodos de Chamada
- 📱 Fluxo de Telas
7.1 📝 Tela Inicial/Instruções
7.2 📷 Tela de Permissão de Câmera
7.3 🙂 Tela de Liveness
7.4 🔄 Tela de Processamento - 🧪 Ambiente de Testes
- 🛠️ Boas Práticas
- 📜 Changelogs e Versões
📌 Visão Geral
O Oiti SDK é um SDK modular e extensível, responsável por oferecer verificação facial remota (Liveness Detection) via múltiplos provedores de biometria.
Sua arquitetura foi desenvolvida com foco em segurança, personalização e abstração de provedores, permitindo que novos fornecedores sejam incorporados no futuro com impacto mínimo na integração.
Atualmente temos suporte ao provedor IProov, mas em breve outros serão incorporados ao SDK.
✅ Requisitos de Compatibilidade
-
Target mínimo: iOS 13.0
-
Versão do Swift: 5+
-
Linguagem base: Swift (interoperável com Objective-C)
-
Gerenciador de dependência: CocoaPods
-
Ambientes suportados:
hml
: Homologaçãoprd
: Produção
⚙️ Instalação
Passo 1: Caso você não possua um arquivo Podfile
no seu projeto, basta executar o comando abaixo na raiz do projeto que um novo arquivo desse será criado:
pod init
Passo 2: No início do Podfile
, inclua a linha abaixo:
source 'https://github.com/oititec/ios-artifactory.git'
Passo 3: Em seguida, adicione as dependências necessárias:
pod 'OitiSDK', '~> x.y.z'
Substitua
x.y.z
pela versão mais recente fornecida pela Oiti.
Passo 4: Execute o comando de instalação dos pods:
pod install
🔌 Criação do provedor de Liveness
O OitiSDK
utiliza o padrão de fábrica para criar instâncias específicas de cada provedor de Liveness:
let manager = OitiSDKFactory.createLivenessManager(for: .iproov)
✅ Provedores Disponíveis
Provedor | Identificador Enum | Suporte |
---|---|---|
IProov | LivenessProvider.iproov | ✅ Suporte Atual |
[Novo Provedor] | em breve | 🔜 Planejado |
🧩 Provedor: IProov
Este é o provedor atualmente integrado ao SDK. Ele oferece uma jornada de verificação baseada em luz e detecção passiva.
🎨 Personalização Visual
Utilize a classe IProovLivenessCustomization
para configurar a interface do fluxo:
Observação: as propriedades declaradas fora dos blocos correspondem às configurações globais do iProov, enquanto aquelas definidas dentro dos blocos referem-se às personalizações de cada tela específica.
final class IProovCustomLoadingViewImpl: IProovCustomLoadingView {
// Código ...
}
let customization = IProovLivenessCustomization.builder()
.setBackgroundColor(.red)
.setPromptColors(forText: .green, backgroundColor: .white)
.setHeader(withText: "HEADER", textColor: .yellow, backgroundColor: .blue)
.setPromptRoundedCorners(enabled: false)
.setLAOvalStrokeColors(forCapturing: .cyan, completed: .systemPink)
.setGPAOvalStrokeColors(forNotReady: .yellow, completed: .blue)
.setFilter(withStyle: .vibrant, color: .purple, backgroundColor: .orange)
.setLoadingView(IProovCustomLoadingViewImpl())
.build()
🚀 Execução da Jornada
Após criar o LivenessManagerOptions
fornecendo a AppKey, o ambiente de execução, as telas customizadas e a customização do IProov, inicie a jornada com:
// MARK: - Views customizadas
final class IProovCustomLoadingViewImpl: IProovCustomLoadingView {
// Código ...
}
final class LivenessCustomInstructionViewImpl: UIView, LivenessCustomInstructionView {
var backButton: UIButton!
var continueButton: UIButton!
func changeLoadingVisibility(to visibility: Visibility) {
// Código ...
}
}
final class CustomCameraPermissionViewImpl: UIView, CustomCameraPermissionView {
var backButton: UIButton!
var checkPermissionButton: UIButton!
var openSettingsButton: UIButton!
var closeButton: UIButton!
func showBottomSheet(visibility: OitiSDK.Visibility) {
// Código ...
}
}
// MARK: - Implementação
final class ContentViewController: UIViewController {
func executeLiveness() {
let customization = IProovLivenessCustomization.builder()
.setBackgroundColor(.red)
.setPromptColors(forText: .green, backgroundColor: .white)
.setHeader(withText: "HEADER", textColor: .yellow, backgroundColor: .blue)
.setPromptRoundedCorners(enabled: false)
.setLAOvalStrokeColors(forCapturing: .cyan, completed: .systemPink)
.setGPAOvalStrokeColors(forNotReady: .yellow, completed: .blue)
.setFilter(withStyle: .vibrant, color: .purple, backgroundColor: .orange)
.setLoadingView(IProovCustomLoadingViewImpl())
.build()
let options = LivenessManagerOptions
.builder(appKey: "APP_KEY", environment: .hml)
.setCustomInstructionView(LivenessCustomInstructionViewImpl())
.setCustomCameraPermissionView(CustomCameraPermissionViewImpl())
.setIProovCustomization(customization)
.build()
let manager = OitiSDKFactory.createLivenessManager(for: .iproov)
manager.start(at: self, options: options, callback: self)
}
}
extension ContentViewController: LivenessCallback {
func onSuccess(_ result: LivenessResult) {
// Código ...
}
func onError(_ error: LivenessError) {
// Código ...
}
func onCanceled() {
// Código ...
}
}
📦 Estrutura das Classes Importantes
🧱 Core SDK
Classe | Responsabilidade |
---|---|
OitiSDKFactory | Criar o manager de acordo com o provider fornecido. |
LivenessManagerOptions | Configuração base com AppKey, ambiente, customizações comuns e específicas. |
LivenessProvider | Enum com os provedores disponíveis. |
LivenessManager | Gerencia o fluxo de verificação facial usando o provedor fornecido. |
LivenessCallback | Interface para retorno de sucesso, erro e cancelamento. |
📦 IProov (Provedor Específico)
Classe | Responsabilidade |
---|---|
IProovLivenessCustomization | Customização da interface visual para o fluxo IProov. |
As estruturas específicas só devem ser utilizadas se o provedor selecionado for o IProov.
🔍 Principais Classes e Métodos de Chamada
Método / Classe | Descrição |
---|---|
OitiSDKFactory.createLivenessManager(for:) | Cria um gerenciador do provedor escolhido. |
IProovLivenessCustomization.builder() | Disponibiliza o builder para customização do fluxo de liveness. |
LivenessManager.start(at:options:callback:) | Inicia a jornada facial do provedor fornecido. |
LivenessCallback.onSuccess(_:) | Retorno de sucesso. |
OitiResultCallback.onError(_:) | Retorno de erro. |
OitiResultCallback.onCanceled() | Retorno de cancelamento da jornada. |
📱 Fluxo de Telas
📝 Tela Inicial/Instruções (Pré-Liveness)
Tela que apresenta as instruções iniciais ao usuário antes do início do processo de verificação facial:

📷 Tela de Permissão de Câmera
Exibida quando o usuário ainda não concedeu permissão de acesso à câmera:

🙂 Tela de Liveness
Exibida durante a coleta e análise do liveness:

🔄 Tela de Processamento
Exibida durante o processamento do liveness coletado:

🧪 Ambiente de Testes
Durante o desenvolvimento, utilize o ambiente hml
com AppKeys fornecidas pela equipe Oiti.
Evite o uso do ambiente de produção para testes manuais.
🛠️ Boas Práticas
- Use o padrão de fábrica para desacoplar a implementação dos provedores.
- Customize visualmente a interface conforme a identidade do seu app.
- Trate todos os retornos com UX amigável.
- Guarde logs e tokens apenas em ambiente seguro.
📜 Changelogs e Versões
Versão | Data | Descrição |
---|---|---|
0.1.0 | 19/05/2025 | Lançamento inicial do SDK |
Sempre consulte a documentação atualizada para obter os detalhes mais recentes.
Updated about 11 hours ago