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).


RequisitoVersã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.

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.

SwiftObjective-C

#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:

  1. 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.
  2. 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


RequisitoVersã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

002DD1

secondaryColorAnimation (depreciada)

UIColor

cor secundária das animações das telas de carregamento inicial e final

1CD1A4

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

002DD1

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

  1. Você pode passar um valor positivo, que deve ser usado. Valores negativos indicam o uso automático de .title1

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ávelTipoDescriçãoValor padrão
moveAwayStringtexto que informa ao usuário para se afastar da tela"Afaste o aparelho do seu rosto"
getCloserStringtexto que informa ao usuário para se aproximar da tela"Aproxime o aparelho do seu rosto"
wrongFaceOrientationStringtexto que informa ao usuário que a orientação do rosto na tela está incorreta"Posição incorreta. Alinhe seu rosto"
wrongDeviceOrientationStringtexto 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"
frameYourFaceStringtexto que informa ao usuário para encaixar o rosto na tela"Posicione o aparelho na direção do rosto"
blinkStringtexto que informa ao usuário que ele deve piscar"Agora, pisque"
smileStringtexto que informa ao usuário que ele deve sorrir"Agora, sorria"
delayStringtexto 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

002DD1

titleSize

Double

tamanho do título de todas as telas wizard

  1. Você pode passar um valor positivo, que deve ser usado. Valores negativos indicam o uso automático de .title1

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.



Nome da variável

Tipo

Descrição

Valor padrão

titleColor

UIColor

cor do título da tela de instruções

1E437A

bodyColor

UIColor

cor do texto do corpo da tela de instruções e do botão de fechar

5E6976

backgroundColor

UIColor

cor do fundo da tela de instruções

Branco

titleText

String

título da tela de instruções

"Autenticação facial"

image

UIImage?

imagem exibida na tela de instruções

Mulher segurando celular (ver imagem acima)

nextButtonText

String

texto do botão responsável por iniciar a captura

"Avançar"

firstInstruction

AllowMeBiometricsInstructionCustomization

customizações da primeira instrução

ver imagem acima

secondInstruction

AllowMeBiometricsInstructionCustomization

customizações da segunda instrução

acima

thirdInstruction

AllowMeBiometricsInstructionCustomization

customizações da terceira instrução

ver imagem acima

fourthInstruction

AllowMeBiometricsInstructionCustomization

customizações da quarta instrução

ver imagem acima

  • 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:


Nome da variável

Tipo

Descrição

Valor padrão

titleColor

String

texto da instrução

Muda para cada instrução

icon

UIImage

ícone da instrução

Muda para cada instrução

iconColor

UIColor

cor do ícone da instrução

2A5595

  • 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.


Nome da variável

Tipo

Descrição

Valor padrão

titleColor

UIColor

cor dos títulos de todas as telas de erro

384553

bodyColor

UIColor

cor dos textos do corpo de todas as telas de erro

5E6976

backgroundColor

UIColor

cor do fundo das telas de erro (onde fica a imagem)

F1F1F1

textsBackgroundColor

UIColor

cor de fundo dos textos e botão das telas de erro

Branco

genericErrorScreenCustomization

AllowMeBiometricsErrorCustomization

customizações da tela de erro genérica

ver abaixo

nextButtonText

String

texto do botão responsável por iniciar a captura

ver abaixo

timeoutErrorScreenCustomization

AllowMeBiometricsInstructionCustomization

customizações da tela de erro timeout

ver abaixo

serverErrorScreenCustomization

AllowMeBiometricsErrorCustomization

customizações da tela de erro de servidor

ver abaixo

connectionErrorScreenCustomization

AllowMeBiometricsErrorCustomization

customizações da tela de erro de conexão

ver abaixo

cameraPermissionScreenCustomization

AllowMeBiometricsErrorCustomization

customizações da tela de erro de permissão de câmera

ver abaixo

  • 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ávelTipoDescriçãoValor padrão
titleTextStringtexto do título da tela de errover imagens anteriores
bodyTextStringtexto do corpo da tela de erro, descrevendo o errover imagens anteriores
imageUIImage?imagem ilustrativa do errover imagens anteriores
buttonTitleStringtexto 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:


Nome da variável

Tipo

Descrição

Valor padrão

titleText

String

texto do título da tela de confirmação de saída

"Você deseja sair?"

bodyText

String

ttexto do título da tela de confirmação de saída

"Se sair agora você terá que fazer o processo novamente"

confirmButtonText

String

texto do botão de confirmar saída

"Sim, quero sair"

closeButtonText

String

texto do botão de desistir da saída e fechar modal

"Continuar por aqui

textColor

UIColor

cor de todos os textos da tela de confirmação de saída

5E6976

image

UIImage?

imagem da tela de confirmação de saída

ver imagens anteriores

backgroundColor

UIColor

texto do título da tela de erro

Branco


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ávelProviderTipoDescriçãoValor padrão
screenTitleAllowMeStringtítulo mostrado na navigation bar, se existir"" (string vazia)
showCancelButtonAllowMeBoolindica se o botão para fechar o processo da biometria deve existir ou nãotrue. A configuração é desabilitada automaticamente quando há uma navigation bar com o botão de voltar.
timeoutInSecondsAllowMeDoubleo tempo, em segundos, que o usuário terá para finalizar o processo180
voiceInstructionsEnabledAllowMeBoolindica se as instruções em áudio estarão habilitadastrue
textFontAllowMeUIFontfonte e tamanho que será usado em todos os textos da biometriaSan Francisco (fonte padrão do iOS). O tamanho dessa fonte será sobrescrito por outras configurações
loadingScreenCustomizationTodosiconfigurações das telas de carregamentomostrado nas seções anteriores
captureScreenCustomizationAllowMeconfigurações das telas de capturamostrado nas seções anteriores
wizardScreenCustomizationTodosconfigurações das telas wizardmostrado nas seções anteriores
showWizardScreensTodosBoolindica se as telas wizard devem aparecerfalse
enableDebugModeAllowMeBoolativa o modo debug da biometria facial APENAS no SDK de homologação. Não tem efeito no SDK de release.false
customBiometricsConfigFaceTecAnyconfigurações das telas de captura da FaceTecnil

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ávelProviderDescrição
biometricsTimeoutAllowMeo timeout foi atingido e o usuário não realizou a captura
biometricsCameraErrorAllowMeo dispositivo não possui uma câmera frontal disponível.
biometricsCancelledByUserAllowMeo usuário cancelou a biometria facial
biometricsCapturingErrorTodoserro genérico ao tentar realizar uma captura
biometricsAllowMeResultErrorTodoserro ao tentar gerar um objeto do tipo AllowMeBiometricsResult
collectErrorTodoserro ao tentar realizar uma coleta
biometricsInvalidImagesErrorTodoserro ao tentar retornar as imagens capturadas
biometricsSetupErrorTodoserro ao tentar inicializar o processo de biometria facial
biometricsCameraPermissionErrorTodoserro ao tentar iniciar a captura de fotos com a permissão de câmera negada pelo usuário
providerErrorFaceTecindica 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 🤩