IOS
Primeiros Passos v2+
Recebeu a missão de integrar o AllowMeSDK no seu aplicativo e não sabe por onde começar? As instruções a seguir vão te ajudar nos primeiros passos para implantação do nosso SDK no seu aplicativo. Os passos a seguir devem ser feitos para qualquer uma das funções: Device Intelligence (Contextual), Validação de Endereço (Onboarding) ou Biometria Facial - Liveness.
Release NotesPara mais informações sobre as versões do nosso sdk iOS, acesse o portal em Release Notes iOS (opens new window).
Requisito | Versão |
---|---|
Versão do iOS* | 11.0 ou maior |
WARNING
Para aplicações com versões do iOS menores que a 11.0, é possível utilizar o AllowMeSDK, apenas sendo preciso checar a disponibilidade da versão mínima com if #available(iOS 11) ou @available(iOS 11.0) .
1. Adicionar o framework como dependência
Antes de começar, certifique-se de que esteja de posse das credenciais de acesso aos nossos repositórios!
WARNING
Caso não faça ideia de onde estejam essas credenciais, entre em contato com o nosso suporte em [email protected].
Você terá duas opções de SDK: o AllowMeSDK de homologação e o de produção. A versão de homologação deve ser usada para testes e debug, enquanto a de produção deve ser enviada para a AppStore junto ao seu aplicativo.
O nosso SDK tem suporte para Swift Package Manager e Cocoapods. Durante o processo de implementação você tem duas opções principais: usar targets e adicionar o framework correto em cada target (recomendado) ou adicionar os dois frameworks no mesmo target e separá-los por configuração de build (build configuration). Observe que, caso você precise fazer a diferenciação via configuração de build, o Swift Package Manager não oferece suporte (opens new window).
WARNING
Se você adicionar os dois frameworks no mesmo target e não fizer a diferenciação por configuração de build você pode ter problemas referentes a classes duplicadas.
Siga em frente e escolha o que for melhor para o seu projeto!
1.1. Swift Package Manager
Escolheu integrar o AllowMeSDK através do Swift Package Manager? Vamos te ensinar exatamente como fazer isso seguindo os passos abaixo, que é válido tanto para o AllowMeSDK de produção quanto para o de homologação.
As URLs de acesso aos nossos SDKs dependem do provider contratado para a biometria, elas devem ser inseridas no local adequado mostrado nas imagens abaixo:
AllowMeSDKHomolog - https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_homologIOS
AllowMeSDK - https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_productionIOS
Primeiramente, clique em File e Add Packages....

Adicione a URL na caixa de texto no canto superior da tela, como indicado na figura abaixo.

Uma caixa de autenticação irá aparecer pedindo as credenciais que foram passadas pelo nosso time! Adicione-as abaixo e pressione OK.

O próximo passo é especificar que versões do AllowMeSDK você quer importar. Nós recomendamos manter a configuração como Up to Next Major para que seu aplicativo tenha acesso sempre à versão mais atual!

Separando por targets
Selecione o target que deseja adicionar o SDK e finalize! Lembre-se de colocar o SDK de homologação em seus targets de desenvolvimento e homologação e o SDK de release no seu target de produção.

Separando por configurações de build
Como dito anteriormente, essa feature não é suportada pelo Swift Package Manager (opens new window).
Quando terminar, é possível verificar nas suas dependências:

Repita os passos para o AllowMeSDK e o AllowMeSDKHomolog.
1.2. Cocoapods
Escolheu integrar o AllowMeSDK através do Cocoapods? Vamos te ensinar exatamente como fazer isso, seguindo os passos abaixo. 😃
Você pode pular a seção a seguir caso já tenha o Cocoapods configurado no seu projeto. Vá direto para Adicionar dependências.
1.2.1 Configurar Cocoapods
Antes de começar, certifique-se que possui o Cocoapods instalado na sua máquina digitando no seu terminal:
pod --version
Caso esteja disponível, continue para a seção 1.1.3 (Adicionar dependências). Agora, se o Cocoapods não for encontrado, instale-o usando:
sudo gem install cocoapods
ou busque saber mais no site oficial (opens new window).
Com o Cocoapods instalado e ainda com o terminal aberto, vá até a pasta onde se encontra o arquivo .xcodeproj do seu aplicativo e digite o seguinte comando:
pod init
Você deve observar que um arquivo chamado Podfile será criado e é nele que nós vamos mexer!
1.2.2. Adicionar dependências
Abra o seu arquivo Podfile num editor de texto qualquer e adicione duas importantes linhas logo no início:
source 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_Spec'
source 'https://github.com/CocoaPods/Specs.git'
A primeira diz ao Cocoapods que ele deve buscar o AllowMeSDK dentro do repositório privado que lhe fornecemos. Já a segunda deixa claro que outras dependências que não forem encontradas no nosso repositório devem ser procuradas no repositório público do próprio Cocoapods.
Depois disso, adicione nossas dependências de acordo com o provider da biometria contratado:
pod 'AllowMeSDK', '> VERSÃO_DESEJADA'
pod 'AllowMeSDKHomolog', '> VERSÃO_DESEJADA'
Separando por targets
Observe como funciona a definição do target de instalação de cada framework no exemplo de Podfile abaixo:
source 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_Spec'
source 'https://github.com/CocoaPods/Specs.git'
# Modifique os targets de acordo com seu projeto
target 'TARGET-DESENVOLVIMENTO' do
use_frameworks!
pod 'AllowMeSDKHomolog', '> VERSÃO_DESEJADA'
end
target 'TARGET-PRODUCAO' do
use_frameworks!
pod 'AllowMeSDK', '> VERSÃO_DESEJADA'
end
Separando por configuração de build
Observe como funciona a definição da configuração de build de instalação de cada framework no exemplo de Podfile abaixo:
source 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_Spec'
source 'https://github.com/CocoaPods/Specs.git'
# Modifique as configurações de build de acordo com seu projeto
target 'UM-TARGET-SO-PARA-TUDO' do
use_frameworks!
pod 'AllowMeSDKHomolog', '> VERSÃO_DESEJADA', :configurations => ['Debug']
pod 'AllowMeSDK', '> VERSÃO_DESEJADA', :configurations => ['Release']
end
TIP
Você pode misturar as opções da forma que for necessária para se adequar ao seu projeto!
Por fim, salve e feche o arquivo, volte ao terminal e digite:
pod install
Nesse momento, deverá ser pedido que você digite as credenciais que lhe foram passadas.
WARNING
Caso não faça ideia de onde estejam essas credenciais, entre em contato com o nosso suporte em [email protected].
Se tudo estiver em ordem, o comando irá executar. Essa etapa pode demorar um pouco mais que o esperado, então não se preocupe. Ao finalizar, verifique se o xcodeproj do seu aplicativo está fechado e lembre-se de utilizar apenas o xcworkspace durante o resto do desenvolvimento!
1.3. Autenticação do SDK em Continuous Integration (CI)
Para que seja possível adicionar o nosso SDK como dependência do seu projeto utilizando CI, é necessário adicionar o comando abaixo ao seu script para realizar a autenticação com as credenciais passadas por nosso time.
WARNING
Caso não faça ideia de onde estejam essas credenciais, entre em contato com o nosso suporte em [email protected].
cat <<EOF > ~/.netrc
machine git-codecommit.us-east-1.amazonaws.com
login $(echo $ALLOWME_USUARIO)
password $(echo $ALLOWME_SENHA)
EOF
...seu script...
O comando acima é responsável por escrever as informações no arquivo ~/.netrc, local onde o Cocoapods e o Swift Package Manager buscam as credenciais para autenticação.
TIP
Essas credenciais devem ser definidas como variáveis de ambiente na sua ferramenta de CI (abaixo indicamos alguns links de como definir essas variáveis em CIs mais conhecidas), sendo FORTEMENTE INDICADO criptografá-las, para evitar que sejam recuperadas por terceiros.
- Comando 'cat'(opens new window)
- Mais sobre o arquivo netrc(opens new window)
- Gitlab CI e Cocoapods(opens new window)
- Variáveis de Ambiente:
- Gitlab CI
- GitHub Actions
- Jenkins: configurar e usar
- Travis CI
- Circle CI
- Azure DevOps
1.4. Binário (Não Recomendado)
WARNING
Utilizar o arquivo xcframework diretamente não é uma solução recomendada pois dificulta as atualizações para implementação de melhorias e correções de bugs. Tenha certeza que nenhuma outra solução se encaixa no seu cenário antes de seguir nessa seção e só siga caso seja extremamente necessário. Caso não seja o seu caso, volte para as seções Swift Package Manager, Cocoapods ou siga para Importar o AllowMeSDK.
Pra ter acesso ao arquivo xcframework diretamente, é necessário clonar a pasta hospedada nos links passados anteriormente:
AllowMeSDKHomolog - https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_homologIOS
AllowMeSDK - https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_productionIOS
No terminal, faça:
git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_homologIOS
OU
git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/allowme_productionIOS
Durante o processo provavelmente será necessário inserir suas credenciais. Após isso, aguarde a finalização.
WARNING
Caso não faça ideia de onde estejam essas credenciais, entre em contato com o nosso suporte em [email protected].
Após a finalização, ainda no terminal, entre na pasta usando o comando cd:
cd allowme_homologIOS
OU
cd allowme_productionIOS
Já dentro da pasta, será necessário usar o comando git checkout para acessar uma versão específica. Faça algo como:
git checkout VERSAO
E substituia VERSAO pelo número da versão desejada, como 3.0.1, por exemplo.
Você também pode ver todas as versões disponíveis usando git tag -l
Com a versão escolhida, vá até a pasta Sources e copie o arquivo xcframework disponível para onde desejar.
WARNING
Adicione os arquivos adicionados ao Xcode como Embed & Sign em Frameworks, Libraries, and Embedded Content
Separando por targets
Nesse caso a separação por targets pode ser feita no menu lateral direito do Xcode, ao selecionar o arquivo do xcframework será possível selecionar ou remover a seleção dos targets que você queira.

Separando por configuração de build
Com os dois frameworks adicionados ao mesmo target, vá em nas configurações do projeto, selecione o target e clique em Build Settings. Procure pela configuração EXCLUDED_SOURCE_FILE_NAMES. Adicione o framework que deve ser excluido da compilação em cada uma das suas configurações de build.

Após isso, o Xcode vai compilar apenas o framework correto para a configuração escolhida.
1.5. Importar o AllowMeSDK
Com as duas dependências do AllowMe adicionadas ao seu projeto, basta importá-las para começar a usar o nosso SDK!
Uma das formas de fazer isso é fazendo uso de diretivas de pré-compilação na hora de importar o AllowMeSDK como uma forma de garantir que usará a versão de homologação apenas durante o desenvolvimento. Nesse caso, você deve adicionar as diretivas necessárias de acordo com seu target ou sua configuração de build e importar o SDK correto usando-as.
#if DEBUG
#import "AllowMeSDKHomolog/AllowMeSDKHomolog-Swift.h"
#define ALLOWME_API_KEY @"your-homolog-api-key-here"
#else
#import "AllowMeSDK/AllowMeSDK-Swift.h"
#define ALLOWME_API_KEY @"your-prod-api-key-here"
#endif
1.6. Inicializar o SDK
WARNING
O AllowMeSDK usa criptografia de ponta, que garante a segurança e privacidade dos dados durante a comunicação com os seus servidores. Para que isso ocorra de maneira correta, é extremamente necessário que o dispositivo possua uma conexão de internet válida, sem bloqueios na rede, durante a inicialização do SDK. Caso isso não aconteça, o método setup retornará um erro e o SDK não funcionará como esperado.
O próximo passo aqui é adicionar o novo método setup(completion: _) na inicialização do seu aplicativo para preparar o AllowMeSDK. O código de exemplo pode ser visto abaixo:
import AllowMeSDK
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
do {
let allowMe = try AllowMe.getInstance(withApiKey: ALLOWME_API_KEY)
allowMe.setup { (error) in
if error != nil {
// tratar erro
} else {
// sucesso
}
}
} catch let error {
// tratar erro
}
return true
}
{...}
}
WARNING
Observe que o inicializador AllowMe(withApiKey:) usado anteriormente está depreciado e deve ser removido em versões futuras. Dê preferência ao uso do singleton para evitar problemas de concorrência e, futuramente, erros de compilação.
É isso! Agora você já pode usar o nosso SDK no seu aplicativo!
2. Configurações do Projeto
O SDK do AllowMe precisa de algumas configurações no projeto para que a coleta de fingerprint seja completa.
TIP
O AllowMeSDK funcionará independente da aceitação ou recusa das permissões necessárias, mas a acurácia poderá ser afetada. Siga as instruções definidas pela Apple em Human Interface Guidelines (opens new window)para ter certeza que está pedindo as permissões da melhor forma possível para os seus usuários, explicando o propósito e a necessidade. Isso pode ter impacto significativo no comportamento dos seus usuários diante às permissões. Além disso, as permissões poderão ser pedidas a qualquer momento, mas recomendamos que a solicitação seja feita antes da utilização do AllowMe.
2.1 Access WiFi information
De acordo com a documentação no Portal de Desenvolvedor (opens new window), a Apple determina que a partir do iOS 12 é preciso configurar o Access WiFi Information Entitlement (opens new window)para ter acesso aos dados da rede WiFi conectada.
2.1.1 No Xcode
Para isso, no seu projeto selecione o target, Signing & Capabilities e, em seguida, +.

Na nova caixa que aparecer, selecione a opção Access WiFi Information.

Ao adicioná-la, um novo arquivo chamado NomeDoProjeto.entitlements surgirá. Nele, você deve adicionar uma nova chave chamada Access WiFi Information com o valor YES.

2.1.2. Configurar Provisioning Profile
Quando terminar, existe uma boa possibilidade de aparecerem alguns warnings no seu projeto, como abaixo. 😦

O que está acontecendo? Para que essa capability funcione em um aparelho, é preciso um provisioning profile para um app id com essa opção habilitada.
Vá até o Developer Console (opens new window), entre com a sua conta e clique em Identifiers. Lá, registre um novo identifier do tipo App IDs.

Ao clicar em Continue, uma tela para registro do seu App ID como essa deve aparecer:

certifique-se de que o tipo Explicit do Bundle ID esteja marcado, assim como a capability que desejamos (Access WiFi Information) e preencha os campos conforme necessário com as informações da sua aplicação.
TIP
Caso seu app já possua um App ID registrado, você pode apenas editá-lo para adicionar o Access WiFi Information. 😉
2.2 Permissão de App Tracking Transparency
A partir do iOS 14.5 a Apple irá exigir autorização do usuário coletar o IDFA para fins de tracking, conforme o link Apple ATT documentation (opens new window). Esse ID é necessário para o funcionamento ideal do nosso SDK, sendo assim, não esqueça de realizar a solicitação de permissão de tracking ao usuário:
Adicionar o NSUserTrackingUsageDescription na Info.plist com uma descrição que será apresentada ao usuário no momento em que for solicitada a permissão.Chamar o método requestTrackingAuthorization(completionHandler:) para solicitar a permissão.
import AppTrackingTransparency
func initSDK() {
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { (status) in
// inicialização do SDK mesmo se o usuário tiver negado a solicitação
}
} else {
// inicialização do SDK
}
}
2.3 Permissão de Localização
Para acessar a localização do usuário, são necessárias algumas configurações adicionais no seu aplicativo de acordo com a documentação oficial da Apple:
- Adicionar o NSLocationAlwaysAndWhenInUseUsageDescription e NSLocationWhenInUseUsageDescription na Info.plist com uma descrição que será apresentada ao usuário no momento em que for solicitada a permissão.
- Chamar o método requestAlwaysAuthorization() para solicitar a permissão.
import CoreLocation
func initSDK() {
CLLocationManager().requestAlwaysAuthorization()
}
2.4. Configurando o Info.plist
Para realizar uma detecção de fraude ainda mais robusta, o AllowMeSDK realiza uma série de verificações. Dentre elas, verificamos a presença de alguns aplicativos suspeitos, ligados à existência de jailbreak, e que podem ser possíveis indicativos de um dispositivo comprometido. No entanto, para que essa verificação ocorra de forma correta, será necessário adicionar as seguintes URL Schemes no Info.plist do seu aplicativo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>activator</string>
<string>filza</string>
<string>zbra</string>
<string>sileo</string>
<string>undecimus</string>
<string>cydia</string>
</array>
</plist>
Para isso, copie o código acima e cole-o no Info.plist do seu aplicativo conforme a figura abaixo ou usando o atalho command + v.

Por fim, substitua a chave gerada por LSApplicationQueriesSchemes e verifique se os itens foram inseridos corretamente na lista.

Implementação da Biometria Facial
Biometria Facial v3
Warning
A experiência da biometria facial foi aprimorada nas versões de SDK maiores que 3.0. Se você usa uma biometria facial desatualizada, atualize seu SDK e tenha acesso a um processo de captura ainda mais rápido e inclusivo.
Agora que você já está com o setup inicial pronto, vamos aprender como usar o AllowMeSDK Biometria Facial! 😉
TIP
O AllowMeSDK Biometria Facial é o nosso produto responsável por validar a identidade do usuário, aumentando a segurança do seu negócio ao mesmo tempo em que diminui a fricção. Verificamos se a foto é válida e se trata de uma pessoa real ou se é uma tentativa de falsificação, checando se o usuário corresponde ao CPF informado durante o cadastro.
Para realizar a integração da Biometria Facial do AllowMeSDK no seu aplicativo iOS, é só seguir os passos abaixo! 😄
Pré-requisitos
Requisito | Versão |
---|---|
Versão do iOS* | 11.0 ou maior |
WARNING
Para aplicações com versões do iOS menores que a 11.0, é possível utilizar o AllowMeSDK, apenas sendo preciso checar a disponibilidade da versão mínima com if #available(iOS 11) ou @available(iOS 11.0) .
1. Configuração Adicional - Permissão de Uso da Câmera
Para utilizar a biometria, o usuário precisa permitir o uso da câmera, para isso, é importante seguir as instruções definidas pela Apple em Human Interface Guidelines (opens new window)para ter certeza que está pedindo as permissões da melhor forma possível para os seus usuários, explicando o propósito e a necessidade.
TIP
O pedido de permissão aparece automaticamente quando há a tentativa de acesso à câmera do dispositivo iOS, portanto não é necessário definir uma configuração para isso, sendo apenas indicado personalizar a mensagem que aparecerá junto ao pedido.
Para personalizar a mensagem da permissão, siga o passo abaixo:
Adicionar o Privacy - Camera Usage Description na Info.plist com uma descrição que será apresentada ao usuário no momento em que for solicitada a permissão.

2. Escolha do Provider
No AllowMeSDK disponibilizamos alguns fornecedores (providers) diferentes para a biometria facial que funcionam em conjunto com a nossa análise de dispositivos. Atualmente, além do AllowMe, contamos também com a FaceTec. Abaixo explicamos melhor como ativar cada um:
- AllowMe: é o provedor padrão do AllowMeSDK, portanto, nenhum passo a mais precisa ser realizado, apenas siga com a implementação da nossa biometria.
- FaceTec: É preciso que o FaceTecSDK seja embarcado no seu app, além disso, entre em contato conosco para atualizar a configuração do seu projeto em nossos servidores, habilitando a FaceTec como provider da biometria.
WARNING
Para mais informações sobre os providers disponíveis para a biometria do AllowMeSDK, entre em contato com o nosso suporte em [email protected]
3. Inicialização da Biometria Facial
Para realizar a captura da imagem através do AllowMeSDK, utilize o método getInstance da classe AllowMe para obter a instância já criada na inicialização do sdk. Após isso, chame o método startBiometrics(viewController:delegate:config:) a partir da sua viewController.
O método startBiometrics(viewController:delegate:config:) possui apenas três parâmetros:
- viewController (UIViewController): a viewController que deverá apresentar as telas correspondentes ao processo de captura da biometria facial. Também é possível passar uma UINavigationController caso queira manter a navigation bar padrão do seu aplicativo também na tela de biometria. [obrigatório]
- delegate (AllowMeBiometricsDelegate): a classe ou struct que implementará o protocolo AllowMeBiometricsDelegate [obrigatório]
- config (AllowMeBiometricsConfig): a configuração das telas da biometria facial.
Customização da navigation bar
Se você escolher passar uma UINavigationController para o startBiometrics(viewController:delegate:config:) nossa biometria facial será apresentada dentro da sua UINavigationController. Observe que a biometria facial herda as customizações implementadas por você na sua UINavigationController e isso inclui cores de background e textos da navigation bar. Verifique as possibilidades de customização da navigation bar do seu app através da documentação oficial da Apple
O uso padrão da biometria facial foi feito para ser rápido de implementar. Antes de pensar em customizar, chame a tela padrão da biometria facial conforme mostrado abaixo:
let allowMe = try AllowMe.getInstance(withApiKey: "your-api-key-here")
allowMe.startBiometrics(viewController: yourViewController, delegate: yourDelegate, config: AllowMeBiometricsConfig())
Se a configuração padrão das telas da biometria for suficiente para o seu negócio, siga direto para a seção Implementação do AllowMeBiometricsDelegate para finalizar a implementação. Caso queira modificar algo, a seção seguinte entrará em mais detalhes a respeito da customização das telas.
4. Telas e Customização
As instruções abaixo vão lhe guiar na implementação e customização da nova biometria facial, disponível a partir das versões do SDK maiores que 3.0.
Você sabia?
O SDK iOS conta com localização de textos por padrão para três idiomas: português, inglês e espanhol. Nosso idioma base é o inglês e para ter acesso aos outros idiomas você precisa apenas ir até o menu do seu projeto e adicionar os idiomas correspondentes em Localizations como mostra a figura:
Em alguns casos você pode enfrentar problemas para usar a localização padrão do nosso SDK. Caso isso ocorra, adicione a chave CFBundleAllowMixedLocalizations com valor YES no Info.plist do seu aplicativo. Para entender melhor, veja a documentação da Apple.
Você pode também customizar todos os textos que aparecem durante todo o processo da biometria, incluindo as telas wizard. Nesse processo, você pode localizar suas strings em qualquer idioma que você deseje usando NSLocalizedString(_:). Para mais informações, veja a documentação da Apple.
4.1 Telas de Carregamento
As telas de carregamento aparecem antes da inicialização do processo de captura e após a conclusão dele. Elas são importantes porque é durante esses intervalos que o SDK realiza os procedimentos necessários para garantir a captura e o envio de fotos de maneira segura. Observe abaixo a aparência de uma tela de carregamento padrão do SDK e as possibilidades de customização.

A imagem mostra a implementação padrão dessas telas, caso nenhuma configuração específica seja passada, mas você tem total liberdade para customizar a tela e deixar ela com a identidade visual da sua empresa! Para isso, crie um objeto do tipo AllowMeBiometricsLoadingCustomization e modifique nele o que desejar. Abaixo, uma lista de variáveis que podem ser modificadas. Você também pode encontrá-las na imagem acima.
Nome da variável | Tipo | Descrição | Valor padrão |
---|---|---|---|
startingText | String | texto que será exibido na tela de carregamento inicial | "A seguir posicione seu rosto dentro da forma que irá aparecer" |
finalText | String | texto que será exibido na tela de carregamento final | "Analisando as imagens capturadas" |
textSize | Double | tamanho dos textos das telas de carregamento inicial e final | -1. Você pode passar um valor positivo, que deve ser usado. Valores negativos indicam o uso automático de .title3 |
textColor | UIColor | cor dos textos das telas de carregamento inicial e final | Preto |
backgroundColor | UIColor | cor do background das telas de carregamento inicial e final | Branco |
mainColorAnimation (depreciada) | UIColor | cor principal das animações das telas de carregamento inicial e final |
|
secondaryColorAnimation (depreciada) | UIColor | cor secundária das animações das telas de carregamento inicial e final |
|
enableCharacterAnimation (depreciada) | Bool | indica se a animação com o personagem está habilitada ou se será mostrada uma animação de carregamento simples | false |
animationColor | UIColor | cor da animação padrão das telas de carregamento inicial e final |
|
customAnimation | AllowMeLoadingAnimator & UIView | substitui a animação padrão (UIView que adota o protocolo AllowMeLoadingAnimator) | nil. Quando um valor diferente de nulo for passado, a sua animação customizada será mostrada no lugar da nossa animação padrão |
WARNING
A animação com o personagem foi removida das telas de carregamento para simplificar a implementação e melhorar a compatibilidade com vários tipos de design. Evite o uso das variáveis depreciadas mainColorAnimation, secondaryColorAnimation e enableCharacterAnimation pois elas serão removidas em versões futuras do SDK. Durante o período de depreciação até a remoção completa, os valores passados pra elas serão desconsiderados, com exceção do valor de mainColorAnimation que atualizará o valor de animationColor automaticamente.
O exemplo de código para customização pode ser visto abaixo:
- Swift
- Objective-C
let _ = AllowMeBiometricsLoadingCustomization(
startingText: "texto da tela de carregamento inicial",
finalText: "texto da tela de carregamento final",
textColor: .black,
backgroundColor: .white,
animationColor: .black,
textSize: 10,
customAnimation: nil
)
4.2 Telas de Captura
As telas de captura correspondem às telas que guiam o usuário para tirar a das fotos necessárias para o processo de biometria facial. Essa tela exibe instruções que podem ser lidas ou ouvidas pelos usuários e que, assim, indicam a ação que ele deve realizar.
WARNING
Se o seu provider é a FaceTec, siga para a seção Telas de Captura FaceTec.
A imagem abaixo mostra a aparência das telas de captura do provider AllowMe e as possibilidades de customização.
A imagem abaixo mostra a aparência das telas de captura do provider AllowMe e as possibilidades de customização.

Para realizar a customização dessa tela é necessário criar um objeto do tipo AllowMeBiometricsCaptureCustomization que possui as seguintes variáveis:
Nome da variável | Tipo | Descrição | Valor padrão |
---|---|---|---|
textColor | UIColor | cor dos textos de instruções que serão exibidos durante a captura | Branco |
textSize | Double | tamanho das instruções exibidas durante a capture |
|
progressBarColor | UIColor | tcor da barra de progresso | Branco |
backgroundColor | UIColor | cor do background da tela de captura | Preto |
baseCoachmarkColor | UIColor | ccor da marcação de rosto de base | Cinza #ACACAE |
progressCoachmarkColor | UIColor | cor da marcação de rosto de preenchimento. Também define a cor da animação que é exibida quando uma captura é realizada. | Branco |
countdownColor | UIColor | cor do contador que será exibido antes da captura. Se não for definido, será igual a textColor | Igual a textColor |
instructionsText | AllowMeBiometricsCaptureInstructions | ios textos que serão exibidos durante o processo de captura |
Dentro do AllowMeBiometricsCaptureCustomization também há a possibilidade de customização de cada instrução que será exibida para o usuário por meio de um objeto AllowMeBiometricsCaptureInstructions. Se for necessário realizar essa personalização certifique-se de que seus textos sejam de fácil entendimento para que o processo seja efetivo.
Nome da variável | Tipo | Descrição | Valor padrão |
---|---|---|---|
moveAway | String | texto que informa ao usuário para se afastar da tela | "Afaste o aparelho do seu rosto" |
getCloser | String | texto que informa ao usuário para se aproximar da tela | "Aproxime o aparelho do seu rosto" |
wrongFaceOrientation | String | texto que informa ao usuário que a orientação do rosto na tela está incorreta | "Posição incorreta. Alinhe seu rosto" |
wrongDeviceOrientation | String | texto que informa que o dispositivo está na posição incorreta. É usado apenas em apps que possuem o suporte de multitasking ativado no iPad | "Orientação Incorreta" |
frameYourFace | String | texto que informa ao usuário para encaixar o rosto na tela | "Posicione o aparelho na direção do rosto" |
blink | String | texto que informa ao usuário que ele deve piscar | "Agora, pisque" |
smile | String | texto que informa ao usuário que ele deve sorrir | "Agora, sorria" |
delay | String | texto que informa ao usuário que ele deve segurar firme e aguardar. O countdown ocorrerá junto com esse texto. | "Tente não se mexer" |
Abaixo exemplos em código que podem ajudar na implementação:
- Swift
- Objective-C
let instructions = AllowMeBiometricsCaptureInstructions(
moveAway: "texto que informa ao usuário para se afastar da tela",
getCloser: "texto que informa ao usuário para se aproximar da tela",
wrongFaceOrientation: "texto que informa ao usuário que a orientação do rosto na tela está incorreta",
wrongDeviceOrientation: "texto que informa que a orientação do dispositivo está incorreta",
frameYourFace: "texto que informa ao usuário para encaixar o rosto na tela",
blink: "texto que informa ao usuário que ele deve piscar",
smile: "texto que informa ao usuário que ele deve sorrir",
delay: "texto que informa ao usuário que ele deve segurar firme e aguardar. O countdown ocorrerá junto com esse texto."
)
let _ = AllowMeBiometricsCaptureCustomization(
textColor: .white,
progressBarColor: .white,
backgroundColor: .black,
baseCoachmarkColor: .gray,
progressCoachmarkColor: .white,
countdownColor: .white,
instructionsText: instructions
)
4.3 Telas de Captura FaceTec
Na estrutura AllowMeBiometricsConfig existe a propriedade customBiometricsConfig, para a qual você deve passar um objeto do tipo FaceTecCustomization com os elementos customizados do layout da facetec.
TIP
Para mais informações sobre como customizar o layout do FaceTecSDK, acesse a documentação da FaceTec.
Por fim, o código para inicialização da biometria facial no seu aplicativo deverá ficar parecido com o código exibido abaixo:
- Swift
- Objective-C
import FacetecSDK
if let allowMe = try? AllowMe.getInstance(withApiKey: ALLOWME_API_KEY) {
do {
var layoutCustomization = FaceTecCustomization()
let backgroundColor = UIColor(red: 0.933, green: 0.965, blue: 0.973, alpha: 1)
layoutCustomization.overlayCustomization.backgroundColor = backgroundColor
layoutCustomization.cancelButtonCustomization.customImage = UIImage(named: "cancel_button")
//outras customizações...
let config = AllowMeBiometricsConfig(customBiometricsConfig: layoutCustomization)
try allowMe.startBiometrics(viewController: self, delegate: self, config: config)
} catch let error {
// tratar erro
}
}
4.4. Telas Wizard
As telas wizard são uma opção para facilitar o seu trabalho e tornar a integração com a biometria facial do AllowMe ainda mais rápida e fácil. Você pode optar por usar as telas wizard através da variável showWizardScreens que mostraremos na próxima seção. O fluxo do SDK com telas wizard funciona como demostrado, de maneira simplificada, na imagem abaixo. Observe que o seu aplicativo ainda receberá o resultado via delegate se o processo for concluido com sucesso ou se o usuário decidir fechar a tela de erro. Nessa última situação, a responsabilidade passa para o seu aplicativo definir um fluxo alternativo, caso seja necessário.

De maneira simples, as telas wizard lidam com todos os processos necessários para que a biometria facial ocorra de maneira satisfatória, garantindo a experiência do seu usuário. Elas são totalmente customizáveis para se adaptar a qualquer design. Dentro desse conjunto, temos:
- Tela de Instruções
- Telas de Erros
- Tela de Confirmação de Saída
Algumas customizações dessas telas são comuns a todas as telas wizard, o que torna o design coeso. Essas configurações comuns estão dentro de AllowMeBiometricsWizardCustomization:
Nome da variável | Tipo | Descrição | Valor padrão |
---|---|---|---|
buttonColor | UIColor | cor dos botões de todas as telas wizard |
|
titleSize | Double | tamanho do título de todas as telas wizard |
|
bodySize | Double | tamanho do título de todas as telas wizard | Você pode passar um valor positivo, que deve ser usado. Valores negativos indicam o uso automático de .title1 |
instructionsScreenCustomization | AllowMeBiometricsInstructionsScreenCustomization | customizações da tela de instruções | "- |
errorsScreensCustomization | AllowMeBiometricsErrorsScreensCustomization | tcustomizações das telas de erros | |
exitScreenCustomization | AllowMeBiometricsExitScreenCustomization | customizações da tela de confirmação de saída |
- Swift
- Objective-C
let _ = AllowMeBiometricsWizardCustomization(
buttonColor: .blue,
titleSize: 20.0,
bodySize: 10.0,
instructionsScreenCustomization: AllowMeBiometricsInstructionsScreenCustomization(),
errorsScreensCustomization: AllowMeBiometricsErrorsScreensCustomization(),
exitScreenCustomization: AllowMeBiometricsExitScreenCustomization()
)
Com base nisso, partimos para as customizações específicas de cada tela. Nas imagens abaixo, observe o nome da estrutura para identificar se a configuração vem da customização geral ou das específicas.
4.4.1. Tela de Instruções
A tela de instruções é exibida antes da tela de carregamento, quando a opção showWizardScreens está ativada. Nela, são exibidas informações importantes para o usuário antes de iniciar a captura. Como dito antes, essa tela deve ser customizada usando as configurações gerais mencionadas na seção anterior, a AllowMeBiometricsInstructionsScreenCustomization e a AllowMeBiometricsInstructionCustomization. Abaixo, é possível ver todas as customizações disponíveis.

- Swift
- Objective-C
let _ = AllowMeBiometricsInstructionsScreenCustomization(
titleColor: .blue,
bodyColor: .black,
backgroundColor: .white,
titleText: "título da tela de instruções",
image: nil,
nextButtonText: "botão avançar",
firstInstruction: AllowMeBiometricsInstructionCustomization(),
secondInstruction: AllowMeBiometricsInstructionCustomization(),
thirdInstruction: AllowMeBiometricsInstructionCustomization(),
fourthInstruction: AllowMeBiometricsInstructionCustomization()
)
Para cada instrução, nós permitimos customizar, além da cor do texto (bodyColor), os seguintes atributos da estrutura AllowMeBiometricsInstructionCustomization:
- Swift
- Objective-C
let _ = AllowMeBiometricsInstructionCustomization(
text: "texto da instrução",
icon: nil,
iconColor: .black
)
4.4.2. Tela de Erros
As telas de erro garantem o tratamento adequado de erros dentro da biometria facial e a tomada de decisões adequadas para cada erro. As telas possíveis são mostradas abaixo.

Como mostrado na imagem, dentro da tela de erro o usuário pode se manter dentro do fluxo do SDK ou desistir do processo usando o botão de fechar. No segundo caso, nós retornamos o erro para o aplicativo do cliente através do processo exposto na seção Implementação do AllowMeBiometricsDelegate, e é responsabilidade do aplicativo do cliente tratar esse erro de acordo com o fluxo ideal.
No total, são 5 telas de erros existentes, cada uma delas sendo totalmente personalizável através das estruturas AllowMeBiometricsErrorsScreensCustomization e AllowMeBiometricsErrorCustomization.
- Swift
- Objective-C
let _ = AllowMeBiometricsErrorsScreensCustomization(
titleColor: .blue,
bodyColor: .black,
backgroundColor: .white,
textsBackgroundColor: .grey,
genericErrorScreenCustomization: AllowMeBiometricsErrorCustomization(),
timeoutErrorScreenCustomization: AllowMeBiometricsErrorCustomization(),
serverErrorScreenCustomization: AllowMeBiometricsErrorCustomization(),
connectionErrorScreenCustomization: AllowMeBiometricsErrorCustomization(),
cameraPermissionScreenCustomization: AllowMeBiometricsErrorCustomization()
)

Nome da variável | Tipo | Descrição | Valor padrão |
---|---|---|---|
titleText | String | texto do título da tela de erro | ver imagens anteriores |
bodyText | String | texto do corpo da tela de erro, descrevendo o erro | ver imagens anteriores |
image | UIImage? | imagem ilustrativa do erro | ver imagens anteriores |
buttonTitle | String | texto do botão de ação da tela | "Tentar novamente" ou "Permitir acesso" (apenas para erro da câmera) |
- Swift
- Objective-C
let _ = AllowMeBiometricsErrorCustomization(
titleText: "texto do título",
bodyText: "texto do corpo",
image: nil,
buttonTitle: "texto do botão"
)
4.4.3. Tela de Confirmação de Saída
Sempre que o usuário clicar no botão de fechar ou cancelar, será exibido um modal de confirmação para garantir que o usuário não realize essa ação indevidamente. O modal também alerta o usuário que o processo será todo perdido caso ele realmente feche as telas do SDK. A customização desse modal se dá através da estrutura AllowMeBiometricsExitScreenCustomization:

4.5. Configurações Gerais
Como demostrado na seção 2, o método startBiometrics(viewController:delegate:config:) recebe um objeto do tipo AllowMeBiometricsConfig. Esse objeto reúne algumas configurações globais do processo de biometria e os objetos mencionados acima. Observe as possibilidades de customização desse objeto abaixo.
Nome da variável | Provider | Tipo | Descrição | Valor padrão |
---|---|---|---|---|
screenTitle | AllowMe | String | título mostrado na navigation bar, se existir | "" (string vazia) |
showCancelButton | AllowMe | Bool | indica se o botão para fechar o processo da biometria deve existir ou não | true. A configuração é desabilitada automaticamente quando há uma navigation bar com o botão de voltar. |
timeoutInSeconds | AllowMe | Double | o tempo, em segundos, que o usuário terá para finalizar o processo | 180 |
voiceInstructionsEnabled | AllowMe | Bool | indica se as instruções em áudio estarão habilitadas | true |
textFont | AllowMe | UIFont | fonte e tamanho que será usado em todos os textos da biometria | San Francisco (fonte padrão do iOS). O tamanho dessa fonte será sobrescrito por outras configurações |
loadingScreenCustomization | Todos | iconfigurações das telas de carregamento | mostrado nas seções anteriores | |
captureScreenCustomization | AllowMe | configurações das telas de captura | mostrado nas seções anteriores | |
wizardScreenCustomization | Todos | configurações das telas wizard | mostrado nas seções anteriores | |
showWizardScreens | Todos | Bool | indica se as telas wizard devem aparecer | false |
enableDebugMode | AllowMe | Bool | ativa o modo debug da biometria facial APENAS no SDK de homologação. Não tem efeito no SDK de release. | false |
customBiometricsConfig | FaceTec | Any | configurações das telas de captura da FaceTec | nil |
Observe também o código de exemplo:
- Swift
- Objective-C
let _ = AllowMeBiometricsConfig(
screenTitle: "",
showCancelButton: true,
timeoutInSeconds: 180,
voiceInstructionsEnabled: true,
textFont: UIFont.preferredFont(forTextStyle: .title1),
loadingScreenCustomization: AllowMeBiometricsLoadingCustomization(),
captureScreenCustomization: AllowMeBiometricsCaptureCustomization(),
showWizardScreens: true,
wizardScreenCustomization: AllowMeBiometricsWizardCustomization(),
enableDebugMode: false
)
5. Implementação do AllowMeBiometricsDelegate
O AllowMeBiometricsDelegate possui a implementação da função biometricsDidFinish(biometricsObject:error:) que é chamada quando ocorre a finalização do processo de biometria facial pelo AllowMeSDK. Como pode ser visto no código abaixo, o método retorna um AllowMeBiometricsResult ou um error do tipo AllowMeError.
- Swift
- Objective-C
extension BiometricsViewController: AllowMeBiometricsDelegate {
func biometricsDidFinish(biometricsObject: AllowMeBiometricsResult?, error: Error?) {
if let biometricsObject = biometricsObject {
// enviar para o backend
} else {
// tratar erro
}
}
}
O AllowMeBiometricsResult é uma estrutura que possui um payload (String) e as images ([Data?]) capturadas pelo AllowMeSDK. O payload e as images serão usadas na criação de uma transação. Caso algum erro ocorra durante a captura, é retornado um error do tipo AllowMeError que poderá ser:
Nome da variável | Provider | Descrição |
---|---|---|
biometricsTimeout | AllowMe | o timeout foi atingido e o usuário não realizou a captura |
biometricsCameraError | AllowMe | o dispositivo não possui uma câmera frontal disponível. |
biometricsCancelledByUser | AllowMe | o usuário cancelou a biometria facial |
biometricsCapturingError | Todos | erro genérico ao tentar realizar uma captura |
biometricsAllowMeResultError | Todos | erro ao tentar gerar um objeto do tipo AllowMeBiometricsResult |
collectError | Todos | erro ao tentar realizar uma coleta |
biometricsInvalidImagesError | Todos | erro ao tentar retornar as imagens capturadas |
biometricsSetupError | Todos | erro ao tentar inicializar o processo de biometria facial |
biometricsCameraPermissionError | Todos | erro ao tentar iniciar a captura de fotos com a permissão de câmera negada pelo usuário |
providerError | FaceTec | indica que um erro foi retornado pelo FaceTecSDK, mais informações abaixo |
Para mais detalhes sobre o providerError retornado, deve-se utilizar a variável detailedError.
- Swift
- Objective-C
AllowMe.detailedError.error: o status que é retornado pela FaceTec em casos de erro durante o processo da biometria (mais informações abaixo).
O status é um enum e pode ser de um dos dois tipos abaixo:
- FaceTecSDKStatus: Indica se houve falha e sua causa durante o processo de inicialização do sdk da FaceTec.
- FaceTecSessionStatus: Indica se houve falha e sua causa durante o processo de captura da FaceTec.
O código para o tratamento de erros da FaceTec no seu aplicativo pode ser feito como no código abaixo:
- Swift
- Objective-C
if let error = error as? AllowMeError {
switch error {
case .providerError:
guard let status = AllowMe.detailedError?.error else {
return
}
if let status = status as? FaceTecSDKStatus {
//tratar erro
} else if let status = status as? FaceTecSessionStatus {
//tratar erro
}
default:
errorDescription = error.errorDescription
//tratar erro
}
}
Para mais detalhes sobre os status citados acima, siga os passos dessa seção.
Pronto! Agora você já tem tudo para iniciar o uso da biometria facial dentro do seu app 🤩
Updated 1 day ago