Android

AllowMeSDK v2 Primeiros Passos

Pré-requisitos

RequisitoVersão (SDK v1)Versão (SDK v2)
Target do app*15 (Android 4.0.3) ou superior18 (Android 4.3) ou superior
Versão do Android*15 (Android 4.0.3) ou superior23 (Android 6) ou superior

❗️

WARNING

O Target do app diz respeito ao target mínimo suportado pelo nosso SDK, enquanto a versão do Android é a versão mínima de funcionamento, ou seja, em versões menores que 23 o AllowMeSDK pode ser importado mas retornará o erro UnsupportedVersion que deve ser tratada pela aplicação.

Evolução do AllowMeSDK v2

A medida em que evoluimos o AllowMeSDK V2, estamos sempre em constante atualização do Kotlin, Gradle Tools bem como o Gradle Wrapper. Assim, aconselhamos que o seu projeto esteja atualizado com as ferramentas citas (e mais novas) ao utilizar determinadas versões do AllowMeSDK. Abaixo segue uma lista de quais as ferramentas estamos utilizando por versão do AllowMeSDK e onde foi modificado alguma destas ferramentas.

Versão do AllowMeSDKKotlinGradle ToolsGradle Wrapper
3.1.0+1.8.228.3.08-4
3.0.0 até 3.0.21.8.207.4.27-5
2.3.1 até 2.5.11.6.107.2.27-3.3
2.1.3 até 2.3.01.6.107.1.27-2

1. Solicite suas credenciais

Antes de começar, certifique-se de que esteja de posse das credenciais de acesso aos nossos repositórios!

👍

TIP

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 Google Play Store junto ao seu aplicativo.

2. Atualize seu build.gradle

Você deve adicionar o SDK e suas dependências nos arquivos build.gradle do projeto.

O AllowMe Device Intelligence (Contextual) SDK está hospedado em um repositório privado Maven, acessível via Gradle. Por isso, você deve adicionar ao build.gradle do seu projeto as seguintes linhas, contendo o username, password e URL mencionados na passo 1:

allprojects {
	repositories {
		jcenter()
		maven {
			url "https://maven.google.com"
		}
		maven {
			authentication {
				basic(BasicAuthentication)
			}
			credentials {
				username 'SEU_USERNAME_AQUI'
				password 'SEU_PASSWORD_AQUI'
			}
			url "https://android.allowmecloud.com/sdk"
		}
	}
}

Em seguida, você deve adicionar essas dependências ao build.gradle do seu módulo:

dependencies {
    // Para produção, adicionar
    releaseImplementation "br.com.allowme.android:allowme-sdk:3.4.9"
    // Para homologação, adicionar
    debugImplementation "br.com.allowme.android:allowme-sdk:3.4.9-stage"
}

📘

Notas Importantes

Existem diferentes SDKs para homologação e para produção. Escolha a versão de acordo com suas necessidades, se possível utilizando build variants (opens new window);O AllowMe SDK foi desenvolvido para ser compilado com minSdkVersion (Android API Level) igual ou superior a 18 (4.3.x). Entretanto, por questões de segurança o SDK funcionará como esperado a partir da versão 23 (6.0). Isto significa que o seu projeto irá compilar e executar em diferentes devices a partir do Android 18, só funcionará efetivamente em devices com versão 23 e superiores - 95% dos dispositivos no Brasil segundo statcounter-brazil-mobiles (opens new window).

2.1 Resolvendo Conflitos de Bibliotecas

O AllowMe SDK utiliza algumas bibliotecas comuns do Android em seu uso interno. Desta forma, estas bibliotecas podem acabar conflitando com as utilizadas em seu projeto. Assim, sugerimos que as bibliotecas sejam atualizadas para as versões mais novas, bem como a utilização destas dentro do código de seu projeto.

É importante que esta atualização seja feita pois quando ocorre um conflito entre bibliotecas, por padrão o sistema de prioridades de build do Gradle escolherá as bibliotecas mais atualizadas. Desta forma, se o seu projeto utilizar a biblioteca do ConstraintLayout em uma versão inferior a 2.1.0 (utilizada no AllowMe SDK), no momento da compilação o seu projeto automaticamente acabará utilizando a versão mais atualizada e isto pode ocasionar a quebra de seu projeto.

Segue abaixo a lista de algumas bibliotecas que são utilizadas bem como suas versões:

  • androidx.appcompat:appcompat:1.6.1
  • androidx.core:core-ktx:1.10.1
  • com.squareup.okhttp3:okhttp:4.11.0
  • androidx.room:room-runtime:2.5.2
  • androidx.work:work-runtime-ktx:2.8.1
  • androidx.constraintlayout:constraintlayout:2.1.4

❗️

Impossibilidade de Atualização das Bibliotecas

Se por algum motivo não for possível atualizar para as versões mais novas alguma das bibliotecas citadas acima, considere utilizar a diretiva 'exclude' no AllowMe SDK. No exemplo abaixo estamos utilizando a versão do okhttp3 do projeto, no lugar de atualizarmos para a versão utilizada pelo AllowMeSDK.

dependencies {
    // Com esta diretiva abaixo, estamos informando que 
    // não utilizaremos a versão do okhttp do AllowMeSDK
    implementation ("br.com.allowme.android:allowme-sdk:3.4.9") {
        exclude group: "com.squareup.okhttp3", module: "okhttp"
    }
}

Entretanto, o AllowMeSdk pode não funcionar muito bem nestas situações. Por isto, aconselhamos fortemente que as bibliotecas citadas sejam atualizadas.

3. Atualize seu AndroidManifest.xml

Você deve atualizar seu AndroidManifest.xml para incluir as permissões de sistema operacional usadas pelo AllowMeSDK.

O AllowMe SDK funciona com um conjunto de permissões que devem ser gerenciadas no app host. A maioria das permissões são opcionais, porém para melhor acurácia dos serviços segue uma lista ideal de configuração. Entretanto, ela pode ser ajustada de acordo com as políticas de privacidade do seu app:

<manifest>
    <!-- Permissão obrigatória para acesso à internet -->
    <uses-permission android:name="android.permission.INTERNET" />

    <!-- Permissões não obrigatórias, mas importantes -->
    <!-- Precisamos da permissão de localização ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   
    <!-- Opcionais -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

    <!-- Só é necessário se a feature de biometria facial estiver sendo utilizada -->
    <uses-permission android:name="android.permission.CAMERA" />
    (...)
</manifest>

Segue abaixo uma lista das permissões que são importantes para o AllowMeSdk e são classificadas como MUST (Deve Ter), SHOULD (Importantes) e HAVE (opcionais). As permissões SHOULD e HAVE, mesmo sendo importantes não são obrigatórias, mas podem aumentar a capacidade do Allowme de gerar um fingerprint mais robusto.


PermissãoTipo de Classificação
android.permission.INTERNETMUST
android.permission.ACCESS_FINE_LOCATION ou android.permission.ACCESS_COARSE_LOCATIONSHOULD
com.google.android.gms.permission.AD_IDSHOULD
android.permission.READ_PHONE_STATESHOULD
android.permission.ACCESS_NETWORK_STATESHOULD
android.permission.ACCESS_WIFI_STATESHOULD
android.permission.CHANGE_WIFI_STATEHAVE
android.permission.CAMERAHAVE
android.permission.READ_EXTERNAL_STORAGEHAVE

Entre em contato com o [email protected] para verificar quais permissões são necessárias para os recursos que você precisa no seu modelo de negócio

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


  1. Para utilizar o SDK, é preciso inicializar uma instância da classe AllowMe. Sugerimos que esta inicialização seja realizada em uma classe Application - Android Application (opens new window)e que esta instância esteja disponível ao longo do aplicativo (ex.: Utilização de injeção de dependência como Hilt, Dagger ou Koin). A criação do objeto AllowMe leva em conta o contexto da aplicação e a ApiKey (que pode ser adquirida com nosso time de suporte).
  2. Em seguida é necessário chamar o método setup para que o SDK seja configurado de forma correta.Este método pode ser chamado através de duas variantes das quais você pode escolher:

2.1 Utilizando Callback

2.2 Utilizando Lambda (Kotlin)

allowMe.setup(
    {
        // Inicializado com Sucesso
    },

    { throwable ->
        // Algum erro aconteceu
    }
)

AllowMeSDK Biometria Facial

Agora que você já está com o setup inicial pronto, vamos aprender como usar o AllowMeSDK Biometria Facial! 😉

📘

O que é e para que serve o AllowMeSDK Biometria Facial?

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 android, é só seguir os passos abaixo! 😄

1. Pré-requisitos


RequisitoVersão (SDK v3)
Target do app*18 (Android 4.3) ou superior
Versão do Android*23 (Android 6) ou superior
Biometria*Dispositivo com Câmera Frontal

❗️

Atenção

O Target do app diz respeito ao target mínimo suportado pelo nosso SDK, enquanto a versão do Android é a versão mínima de funcionamento, ou seja, em versões menores que 23 o AllowMeSDK pode ser importado mas retornará o erro UnsupportedVersion que deve ser tratada pela aplicação.

Além dos pré-requisitos de versão de sistema operacional, o hardware do dispositivo deve possuir câmera frontal para a captura da biometria. Caso o dispositivo não tenha esta feature, o AllowMe SDK irá retornar um erro que deve ser tratado pela aplicação (favor verificar o tópico - Tipos de Erros)

1.1 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. Seguem abaixo os providers e como ativar cada um deles:

AllowMe: provedor padrão do AllowMeSDK, portanto, nenhum passo adicional precisa ser realizado, apenas siga com a implementação da nossa biometria.

FaceTec: provedor que é utilizado pelo SDK que é distribuído de forma conjunta entre o SDK Device Intelligence e o SDK Facetec. Assim é necessário modificar o arquivo build.gradle adicionando a biblioteca br.com.serasaexperian.android.facetec:serasa-sdk:<versao> no lugar da versão standalone do AllowMe SDK br.com.allowme.android:allowme-sdk:<versao>

❗️

Providers

Para mais informações sobre os providers disponíveis para a biometria do AllowMeSDK e se o produto está corretamente configurado para a sua integração junto ao AllowMe, entre em contato com o nosso suporte em [email protected]

2. Inicializando a Biometria Facial

Com sua instância da classe AllowMe pronta, basta chamar o método startBiometrics fornecendo os seguintes parâmetros:

  • appCompatActivity: A activity que está realizando essa chamada.
  • onResult: ((result: BiometricsResult) -> Unit): Callback com o retorno da chamada da biometria. O objeto biometricsResult contém o payload, o path e o errorType (caso tenha ocorrido algum erro).Exemplos de como realizar esta chamada:

Caso prefira, o método startBiometrics possui um método em overload que suporta os seguintes parâmetros:

  • activity: A activity que está realizando essa chamada.
  • biometricsCallback: Objeto com funções de callback.
// Assinatura do método startBiometrics usando estratégia de um objeto de callback
fun startBiometrics(
    activity: ComponentActivity,
    callback: BiometricsCallback
)

Exemplo de como realizar esta chamada pode ser realizada:

// Exemplo de chamada usando callback em kotlin
allowMe.startBiometrics(this, object : BiometricsCallback {
    override fun onResult(biometricsResult: BiometricsResult) {
        if (biometricsResult.errorType == null) {
            handleSuccessResult(it)
        } else {
            handleError(it.errorType!!)
        }
    }
})

2.1 Iniciando a Biometria Facial da Facetec

O SDK AllowMe agora disponibiliza dois provedores para a biometria facial: um proprietário e a biometria facial da Facetec. Para inicializar a Facetec será necessário algumas modificações:

Para facilitar a integração, o SDK AllowMe e o SDK Facetec são distribuídos juntos através de outro SDK. Assim, é necessário importar no build.gradle a biblioteca br.com.serasaexperian.android.facetec:serasa-sdk:<versao> no lugar da versão standalone do AllowMe SDK br.com.allowme.android:allowme-sdk:<versao>.

dependencies {
    // Importanto a última versão do SDK que engloba o SDK AllowMe e o SDK Facetec

    // No lugar da versão do SDK AllowMe Standalone
    // implementation ("br.com.allowme.android:allowme-sdk:3.4.9-stage")
    // Homologação
    implementation ("br.com.serasaexperian.android.facetec:serasa-sdk:3.4.9-stage")

    // No lugar da versão do SDK AllowMe Standalone
    // implementation ("br.com.allowme.android:allowme-sdk:3.4.9")
    // Produção
    implementation ("br.com.serasaexperian.android.facetec:serasa-sdk:3.4.9")
}

Após esta config inicial, a biometria da Facetec está funcional. Entretanto será necessário tratar os possíveis erros específicos que podem ocorrer com a utilização da Facetec. Por favor, verifique a seção Tratando erros de Provedor - Facetec.

Além disso é possível customizar a biometria facial da Facetec. Por favor, verifique a seção Customização de Layout - Facetec

2.2 Modelo do BiometricsResult que será retornado

Abaixo segue o objeto que será retornado pela biometria facial (para qualquer um dos providers existentes).

@Parcelize
data class BiometricsResult(
    val payload: String = "",
    val paths: List<String> = listOf(),
    val errorType: BiometricsErrors? = null
) : Parcelable
  • payload: é o fingerprint da transação biométrica.
  • paths: é a lista contendo o caminho de cada uma das imagens que foi capturada pela biometria. Para o provider AllowMe (provider default) a quantidade de imagens é igual a quatro fotos. Caso a aplicação esteja utilizando o provider Facetec a quantidade de imagens é igual a duas fotos.
  • errorType: caso tenha acontecido algum erro durante o processo de biometria facial este valor (enum), é retornado. Caso contrário ele deverá ser nulo.

3.Tipos de erros

O BiometricsResult é o objeto retornado para a sua activity após o processo de biometria facial. Dentro deste objeto, podemos destacar o atributo errorType, um enum que contém o tipo de erro que pode ter acontecido no fluxo da Biometria. Seguem os possíveis valores que este enum pode assumir:

  • PERMISSION_NOT_GRANTED_EXCEPTION: A permissão para acessar a câmera foi negada pelo usuário
  • SDK_IS_NOT_READY_EXCEPTION: Sdk não foi inicializado antes de abrir o fluxo da biometria.
  • GOOGLE_PLAY_SERVICES_EXCEPTION: O dispositivo que está executando a aplicação possui uma versão do Google Play Services antiga (mínima exigida, versão 16) ou está com o Google Play Services desativado.
  • TIMEOUT_EXCEPTION: O tempo total de captura foi atingido e o usuário não realizou a captura neste período.
  • INTERNAL_RESULT_ERROR: Erro interno na captura da imagem.
  • CAMERA_ERROR: Erro na ativação / preview da câmera.
  • TAKE_PICTURE_ERROR: Erro genérico no momento da captura.
  • FACE_DETECTION_ERROR: Erro no momento de processar e analisar um rosto / face.
  • CAN_NOT_SAVE_IMAGE: Erro no salvamento da imagem.
  • CAN_NOT_OPEN_FRONT_CAMERA: Câmera frontal não pode ser aberta neste momento (não existe câmera frontal ou outra aplicação não fez o release da câmera de maneira correta).
  • CANCELED_BY_USER: O Usuário cancelou o fluxo de Biometria Facial (apertou no botão voltar / back)
  • PROVIDER_ERROR: Erro com um provedor externo (ex: facetec).

Desta forma, a aplicação poderá tratar estes erros e retonar a mensagem adequada ao usuário. Abaixo segue um exemplo de como o objeto biometricsResult pode ser tratado para extrair as informações de erro.

📘

Erros Específicos Provider

Caso um erro ocorra com um provedor externo (ex.: Facetec), a propriedade detailedError que possuí tipo Any / Object será preenchida com o valor do erro específico deste provider.

3.1 Tratando erros gerados pelo provedor (Facetec)

Caso o erro tenha sido gerado por um provedor de biometria externo como Facetec, por exemplo, o erro será reencaminhado através da propriedade detailedError e o biometricsError assumirá o valor de PROVIDER_ERROR.

Os erros do provider Facetec são classificados em dois grandes tipos:

  • FaceTecSDKStatus: podem ocorrer no momento da inicialização do SDK Facetec.
  • FaceTecSessionStatus: podem ocorrer no momento da captura da biometria facial da Facetec.

Podemos tratar cada um dos erros específicos do provider como mostrado no método de exemplo abaixo:

❗️

Tratamento de Erros

Não é necessário tratar todos os tipos de erros do provider. Sugerimos que os erros mais específicos que fizerem sentido a aplicação sejam tratados em fluxos alternativos e o restante como um único fluxo genérico.

4. Customização de Layout

4.1 Telas e Customização

📘

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

É possível customizar o layout da AllowMeBiometricsActivity de forma que a tipografia, o tempo em segundos que a AllowMeBiometricsActivity vai esperar pelo usuário antes de retornar um erro e as cores da nossa Activity sigam a mesma identidade visual do seu aplicativo.

4.2 Configurações Gerais

As configurações gerais tem efeito em todo o processo da biometria (todas as telas). Para isso, você pode criar um arquivo dentro do diretório de resources (/res) com as cores e textos que desejar. Abaixo, uma lista de variáveis que podem ser modificadas.


variávelTipoDescriçãoValor padrão
allowMeBiometricsConfig_screenTitleStringTítulo que se apresenta na tela de biometria na actionbar" "
allowMeBiometricsConfig_timeoutInSecondsInteiroTempo em segundos máximo para que a biometria seja finalizada180
allowMeBiometricsConfig_alignTitleCenterBoleanoValor que determina se o título da actionbar deve ficar ao centro ou nãofalse
allowMeBiometricsConfig_voiceInstructionsEnabledBoleanoControla se o áudio com as instruções será ativado (caso a linguagem esteja em português, inglês ou espanhol)true
allowMeBiometricsConfig_textFontStringTipo da fonte (font-family) dos textos mostrados durante o processo de biometriasans-serif-black
allowMeBiometricsConfig_textSizeDimensTamanho dos textos apresentados24sp
allowMeBiometricsConfig_enableInstructionsCloseButtonBoleanoValor que determina se o botão superior direito para fechar o fluxo na tela de instruções pode ser mostradotrue
allowMeBiometricsConfig_enableCaptureCloseButtonBoleanoValor que determina se o botão superior direito para fechar o fluxo na tela de captura pode ser mostradotrue
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Título da action bar -->
    <string name="allowMeBiometricsConfig_screenTitle"> </string>

    <!-- Tempo em segundos total do processo de Biometria. Depois do tempo estitulado, a biometria é finalizada e retorna TIMEOUT_EXCEPTION -->
    <integer name="allowMeBiometricsConfig_timeoutInSeconds">180</integer>

    <!-- Referente ao título da actionbar se ele deve ser centralizado ou não -->
    <bool name="allowMeBiometricsConfig_alignTitleCenter">false</bool>

    <!-- Habilita / Desabilita as instruções de voz -->
    <bool name="allowMeBiometricsConfig_voiceInstructionsEnabled">true</bool>

    <!-- Fonte dos textos apresentados no processo de biometria -->
    <string name="allowMeBiometricsConfig_textFont">sans-serif-black</string>

    <!-- Tamanho da Fonte dos textos apresentados no processo de biometria -->
    <dimen name="allowMeBiometricsConfig_textSize">24sp</dimen>

    <!-- Habilita / Desabilitar botão de fechar na tela de Instruções -->
    <dimen name="allowMeBiometricsConfig_enableInstructionsCloseButton">true</dimen>

    <!-- Habilita / Desabilitar botão de fechar na tela de Captura -->
    <dimen name="allowMeBiometricsConfig_enableCaptureCloseButton">true</dimen>
</resources>

4.3 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, você pode criar arquivos de cores (colors.xml), textos (strings.xml) ou até mesmo imagens dentro do diretório /res/resources/drawable com as cores e textos que desejar. Abaixo, uma lista de variáveis que podem ser modificadas.


variável

Tipo

Descrição

Valor padrão

allowMeBiometricsLoadingCustomization_startingText

String

texto que será exibido na tela de carregamento inicial

"Se prepare, posicione o aparelho na direção do rosto"

allowMeBiometricsLoadingCustomization_finalText

String

texto que será exibido na tela de carregamento final

"Analisando as imagens capturadas"

allowMeBiometricsLoadingCustomization_textColor

Cor

cor dos textos das telas de carregamento inicial e final

5E6976

allowMeBiometricsLoadingCustomization_backgroundColor

Cor

cor do background das telas de carregamento inicial e final

FFFFFF

allowMeBiometricsLoadingCustomization_mainColorAnimation

Cor

cor principal das animações das telas de carregamento inicial e final

002DD1

allowMeBiometricsLoadingCustomization_secondaryColorAnimation

Cor

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

1CD1A4

📘

TIP

Ex.: Resource da Tela de Carregamento (strings.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Título da tela de Carregamento -->
    <string name="allowMeBiometricsLoadingCustomization_startingText">A seguir posicione seu rosto dentro da forma que irá aparecer</string>

    <!-- Título da tela final de análise -->
    <string name="allowMeBiometricsLoadingCustomization_finalText">Analisando as imagens capturadas</string>
</resources>

📘

TIP

Ex.: Resource da Tela de Carregamento (colors.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Cor dos textos das telas de carregamento e de análise -->
    <color name="allowMeBiometricsLoadingCustomization_textColor">#5E6976</color>

    <!-- Background das telas de carregamento e de análise -->
    <color name="allowMeBiometricsLoadingCustomization_backgroundColor">#FFFFFF</color>

    <!-- Cor principal da animação -->
    <color name="allowMeBiometricsLoadingCustomization_mainColorAnimation">#002DD1</color>

    <!-- Cor secundária da animação -->
    <color name="allowMeBiometricsLoadingCustomization_secondaryColorAnimation">#1CD1A4</color>
</resources>

4.4 Telas de Captura

As telas de captura correspondem às telas que guiam o usuário no 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. A imagem abaixo também mostra a aparência das telas de captura e as possibilidades de customização.

Para isso, você pode criar um arquivo dentro do diretório de resources (dentro do diretório /res) com as cores. Abaixo, uma lista de variáveis que podem ser modificadas.


variávelTipoDescriçãoValor padrão
allowMeBiometricsCaptureCustomization_textColorCorcor dos textos de instruções que serão exibidos durante a captura(Branco) #FFFFFF
allowMeBiometricsCaptureCustomization_progressBarColorCorcor da barra de progresso(Preto) #FFFFFF
allowMeBiometricsCaptureCustomization_backgroundColorCorcor do background da tela de captura(Preto) #000000
allowMeBiometricsCaptureCustomization_baseCoachmarkColorCorcor da marcação de rosto de base(Cinza) #ACACAE
allowMeBiometricsCaptureCustomization_progressCoachmarkColorCorcor da marcação de rosto de preenchimento. Também define a cor da animação que é exibida quando uma captura é realizada.(Branco) #FFFFFF
allowMeBiometricsCaptureCustomization_countdownColorCorcor do contador que será exibido antes da captura. Se não for definido, será igual a textColor(Igual ao TextColor caso não definido) #FFFFFF

📘

TIP

Ex.: Resource relativo a cores da Tela de Captura (colors.xml)

<resources>
    <!-- Cor dos textos informativos da tela de captura -->
    <color name="allowMeBiometricsCaptureCustomization_textColor">#FFFFFF</color>

    <!-- Cor dos elementos do progress view (step view) -->
    <color name="allowMeBiometricsCaptureCustomization_progressBarColor">#FFFFFF</color>

    <!-- Background da tela de captura (Obs.: a propriedade alfa será aplicada juntamente com esta cor) -->
    <color name="allowMeBiometricsCaptureCustomization_backgroundColor">#000000</color>

    <!-- Cor principal do coachmark onde a face deve ser posicionada -->
    <color name="allowMeBiometricsCaptureCustomization_baseCoachmarkColor">#ACACAE</color>

    <!-- 
        Cor do progresso do coachmark usado pela animação a medida que o usuário for
        fazendo os passos corretos 
    -->
    <color name="allowMeBiometricsCaptureCustomization_progressCoachmarkColor">#FFFFFF</color>

    <!-- 
        Cor do texto que apresenta o contador (3, 2, 1). 
        Por padrão, esta propriedade tem o mesmo valor do texto informativo.
    -->
    <color name="allowMeBiometricsCaptureCustomization_countdownColor">@color/allowMeBiometricsCaptureCustomization_textColor</color>
</resources>

Em relação aos textos da captura, também é possível modificá-los. Para isso, você pode criar um arquivo dentro do diretório de resources (dentro do diretório /res) com os textos que deseja modificar. Abaixo, uma lista de variáveis que podem ser modificadas:


variávelTipoDescriçãoValor padrão
allowMeBiometricsCaptureInstructions_moveAwayStringtexto que informa ao usuário para se afastar da tela"Afaste o aparelho do seu rosto"
allowMeBiometricsCaptureInstructions_getCloserStringtexto que informa ao usuário para se aproximar da tela"Aproxime o aparelho do seu rosto"
allowMeBiometricsCaptureInstructions_wrongOrientationStringrtexto que informa ao usuário que a orientação do rosto na tela está incorreta"Posição incorreta, alinhe seu rosto"
allowMeBiometricsCaptureInstructions_frameYourFaceStringtexto que informa ao usuário encaixar o rosto na tela"Posicione o aparelho na \ndireção do rosto"
allowMeBiometricsCaptureInstructions_blinkStringrtexto que informa ao usuário que ele deve piscar"Agora, pisque"#FFFFFF
allowMeBiometricsCaptureInstructions_smileStringtexto que informa ao usuário que ele deve sorrir"Agora, sorria"
allowMeBiometricsCaptureInstructions_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"

📘

TIP

Ex.: Resource relativo a textos da Tela de Captura (strings.xml)

<resources>
    <!-- Texto referente a instrução quando o usuário precisa se afastar da câmera -->
    <string name="allowMeBiometricsCaptureInstructions_moveAway">Afaste o aparelho do seu rosto</string>

    <!-- Texto referente a instrução quando o usuário precisa se aproximar da câmera -->
    <string name="allowMeBiometricsCaptureInstructions_getCloser">Aproxime o aparelho do seu rosto</string>

    <!-- Texto referente a instrução quando o usuário está na posição (orientaçã) incorreta em relação ao device -->
    <string name="allowMeBiometricsCaptureInstructions_wrongOrientation">Posição incorreta, alinhe seu rosto<string>

    <!-- Texto referente a instrução quando a face do usuário não foi encontrada -->
    <string name="allowMeBiometricsCaptureInstructions_frameYourFace">Posicione o aparelho na \ndireção do rosto<string>

    <!-- Texto referente a instrução solicitando para piscar -->
    <string name="allowMeBiometricsCaptureInstructions_blink">Agora, pisque</string>

    <!-- Texto referente a instrução solicitando para sorrir -->
    <string name="allowMeBiometricsCaptureInstructions_smile">Agora, sorria</string>

    <!-- Texto referente a instrução para que o usuário não se mova durante alguns segundos (para capturar a fotografia) -->
    <string name="allowMeBiometricsCaptureInstructions_delay">Tente não se mexer</string>
</resources>

📘

Você sabia?

Os textos também podem ser customizados em outras linguas. Por padrão, todos os textos descritos acima já estão traduzidos para Inglês e Espanhol. Caso queira adicionar mais traduções, adicione os recursos corretos no diretório /res correspondente


variávelPortuguêsInglêsEspanhol
allowMeBiometricsCaptureInstructions_moveAwayAfaste o aparelho do seu rostoBring the device away from your faceAleja el dispositivo de tu rostro
allowMeBiometricsCaptureInstructions_getCloserAproxime o aparelho do seu rostoBring the device closer to your faceAcerca el dispositivo a tu rostro
allowMeBiometricsCaptureInstructions_wrongOrientationPosição incorreta, alinhe seu rostoIncorrect position, line up your facePosición incorrecta, alinea tu rostro
allowMeBiometricsCaptureInstructions_frameYourFacePosicione o aparelho na direção do rostoFit your face into the shape belowPosiciona el dispositivo hacia tu rostro
allowMeBiometricsCaptureInstructions_blinkAgora, pisqueNow, blinkAhora, parpadea
allowMeBiometricsCaptureInstructions_smileAgora, sorriaNow, smileAhora, sonríe
allowMeBiometricsCaptureInstructions_delayTente não se mexertHold tightTrata de no moverte

4.5 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 criação do recurso allowMeBiometricsConfig_enableWizardInstructions 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 através activity result se o processo for concluido com sucesso ou se o usuário decidir fechar alguma das telas 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

4.5.1 Configurações Gerais

As telas wizard são habilitadas / desabilitadas através de um recurso boleano. Por padrão o SDK deixa as telas desativadas, mas você pode ativá-las definindo o atributo allowMeBiometricsConfig_enableWizardInstructions dentro de um arquivo bools.xml (do seu projeto) como mostrado abaixo:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Ativa todas as telas wizard -->
    <bool name="allowMeBiometricsConfig_enableWizardInstructions">true</bool>
</resources>

4.5.2 Tela de Instruções

A tela de instruções é exibida antes da tela de carregamento, quando o boleano é definido como true para o nome de recurso allowMeBiometricsConfig_enableWizardInstructions. Nela, são exibidas informações importantes para o usuário antes de iniciar a captura. Abaixo, é possível ver todas as customizações disponíveis.

Valores dos Recursos


variávelTipoDescriçãoValor padrão
allowMeBiometricsWizard_titleStringTítulo da tela de instruções"Autenticação facial"
allowMeBiometricsWizard_firstStringTexto referente a primeira instrução`"Procure um local iluminado"
allowMeBiometricsWizard_secondStringrTexto referente a segunda instrução"Retire todos os acessórios"
allowMeBiometricsWizard_thirdStringTexto referente a terceira instrução"Câmera na direção do rosto"
allowMeBiometricsWizard_fourthStringrTexto referente a quarta instrução"Siga as instruções"
allowMeBiometricsWizard_nextStringTexto do botão"Avançar"
allowMeBiometricsWizardCustomization_titleColorCorCor do título da tela de instruções"#1E437A"
allowMeBiometricsInstructionsCustomization_commonTextColorCorCor dos textos das instruções"#5E6976"
allowMeBiometricsInstructionsCustomization_iconColorCorCor dos ícones das instruções"#2A5595"
allowMeBiometricsInstructionsCustomization_advanceButtonColorCorCor do botão Avançar"#002DD1"
allowMeBiometricsInstructionsWizard_titleSizedimensTamanho do Título (em Sp)Tem diferentes tamanhos baseado na densidade
allowMeBiometricsInstructionsWizard_commonTextSizedimensTamanho dos Textos (em Sp)Tem diferentes tamanhos baseado na densidade
allowme_biometrics_wizard_instructions_devicedrawableImagem apresentada na tela de instruçõesImage gerenciada pelo SDK
allowme_biometrics_wizard_first_icondrawableImagem relativa a primeira instrução na tela de instruçõesImage gerenciada pelo SDK
allowme_biometrics_wizard_second_icondrawableImagem relativa a segunda instrução na tela de instruçõesImage gerenciada pelo SDK
allowme_biometrics_wizard_third_icondrawableImagem relativa a terceira instrução na tela de instruçõesImage gerenciada pelo SDK
allowme_biometrics_wizard_fourth_icondrawableImagem relativa a quarta instrução na tela de instruçõesImage gerenciada pelo SDK

Ex.: Customizações dos textos no strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="allowMeBiometricsWizard_title">Autenticação facial</string>
    <string name="allowMeBiometricsWizard_first">Procure um local iluminado</string>
    <string name="allowMeBiometricsWizard_second">Retire todos os acessórios</string>
    <string name="allowMeBiometricsWizard_third">Câmera na direção do rosto</string>
    <string name="allowMeBiometricsWizard_fourth">Siga as instruções</string>
    <string name="allowMeBiometricsWizard_next">Avançar</string>
</resources>

Ex.: Customizações das cores no colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="allowMeBiometricsWizardCustomization_titleColor">"#1E437A"</color>
    <color name="allowMeBiometricsInstructionsCustomization_commonTextColor">#5E6976</color>
</resources>

Ex.: Customizações das dimensões no dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="allowMeBiometricsInstructionsWizard_titleSize">30sp</color>
    <dimen name="allowMeBiometricsInstructionsWizard_commonTextSize">12sp</color>
</resources>

Ex.: Customizações do drawable

Devem ser criados imagens (com os nomes dos drawable vistos em Valores dos Recursos) dentro do diretórios:

  • /res/drawable,
  • /res/drawable-hdpi,
  • /res/drawable-xhdpi,
  • /res/drawable-xxhpi,
  • etc

📘

Você Sabia?

Os textos também podem ser customizados em outras linguas. Por padrão, todos os textos descritos acima já estão traduzidos para Inglês e Espanhol. Caso queira adicionar mais traduções, adicione os recursos corretos no diretório /res correspondente

Tabela Traduções (Instruções Iniciais)


variávelPortuguêsInglêsEspanhol
allowMeBiometricsWizard_titleAutenticação facialFacial authenticationAutenticación facial
allowMeBiometricsWizard_firstProcure um local iluminadoFind a well lit placeBusca un lugar luminoso
allowMeBiometricsWizard_secondRetire todos os acessóriosRemove all accessoriesRetira todos los accesorios
allowMeBiometricsWizard_thirdCâmera na direção do rostoCamera at your face levelCámara mirando hacia el rostro
allowMeBiometricsWizard_fourthSiga as instruçõesFollow the instructionsSigue las instrucciones
allowMeBiometricsWizard_nextAvançarNextSiguiente

4.5.3 Tela de Confirmação de Saída

Sempre que o usuário apertar no botão back ou clicar no botão de fechar ou cancelar (botão "X" que aparece na tela), 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 dos seguintes recursos:


variávelTipoDescriçãoValor padrão
allowMeBiometricsConfirmation_title_dialogStringTítulo da tela de dialog"Você deseja sair?"
allowMeBiometricsConfirmation_message_dialogStringTexto referente a mensagem do dialog"Se sair agora você terá que fazer o processo novamente"
allowMeBiometricsConfirmation_exitStringTexto do botão pare confirmar sair"Sim, quero sair"
allowMeBiometricsConfirmation_continueStringTexto do botão para continuar no processo"Continuar por aqui"
allowMeBiometricsDialogBackground_colorCorCor do background onde estão o título e a mensagem de erro são apresentados"#FFFFFF"
allowMeBiometricsDialogConfirmationTitleText_colorCorCor do título"#384553"
allowMeBiometricsDialogConfirmationText_colorCorCor do texto"#5E6976"
allowMeBiometricsDialogConfirmationTitleText_sizedimensTamanho do Título (em Sp)Tem diferentes tamanhos baseado na densidade
allowMeBiometricsDialogConfirmationText_sizedimensTamanho do Texto (em Sp)Tem diferentes tamanhos baseado na densidade
allowme_biometrics_warningdrawableImagem apresentada na tela de erros de timeoutImage gerenciada pelo SDK

📘

Você Sabia?

Os textos também podem ser customizados em outras linguas. Por padrão, todos os textos descritos acima já estão traduzidos para Inglês e Espanhol. Caso queira adicionar mais traduções, adicione os recursos corretos no diretório /res correspondente

Tabela Traduções (Dialog)


ChavePortuguêsInglêsEspanhol
allowMeBiometricsConfirmation_title_dialogVocê deseja sair?Do you want to quit?¿Quieres salir?
allowMeBiometricsConfirmation_message_dialogSe sair agora você terá que fazer o processo novamenteIf you leave now, all progress will be lostSi sales ahora tendrás que repetir el proceso.
allowMeBiometricsConfirmation_exitSim, quero sairYes, I doSi, quiero salir
allowMeBiometricsConfirmation_continueContinuar por aquiStay hereContinuar aquí

4.5.4 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 2. Chamada da Activity responsável pela biometria, e é responsabilidade do aplicativo do cliente tratar esse erro de acordo com o fluxo ideal.

No total, são 3 telas de erros existentes, cada uma delas sendo totalmente personalizável através dos recursos como cores, textos e imagens (dentros do diretório /res)

4.5.4.1 Tela de Erros - Erro Genérico (Processo não concluído)


Esta tela de erros é apresentada caso algum dos erros aconteça:

  • BiometricsErrors.INTERNAL_RESULT_ERROR
  • BiometricsErrors.CAMERA_ERROR
  • BiometricsErrors.TAKE_PICTURE_ERROR
  • BiometricsErrors.FACE_DETECTION_ERROR
  • BiometricsErrors.CAN_NOT_SAVE_IMAGE
  • BiometricsErrors.CAN_NOT_OPEN_FRONT_CAMERA

Neste tela, caso o usuário aperte no botão "Tentar novamente" o processo de biometria irá recomeçar.

As opções de customização desta tela podem ser feitas por você levando em conta os seguintes atributos:


variávelTipoDescriçãoValor padrão
allowMeBiometricsError_generic_error_titleStringTítulo da tela de erro genérico"Processo não concluído"
allowMeBiometricsError_generic_error_messageStringTexto referente a mensagem de erros genérica"Ocorreu uma falha ao concluir o processo. Por favor, tente novamente"
allowMeBiometricsError_nextStringTexto do botão para tentar novamente"Tentar Novamente"
allowMeBiometricsError_backgroundColorCorCor de background superior"#F1F1F1"
allowMeBiometricsCustomization_backgroundColorCurvedEdgeCorCor do background onde estão o título e a mensagem de erro"#FFFFFF"
allowMeBiometricsInstructionsCustomization_advanceButtonColorCorCor do botão avançar"#002DD1"
allowMeBiometricsError_textTitleSizedimensTamanho do Título (em Sp)Tem diferentes tamanhos baseado na densidade
allowMeBiometricsErrorText_colordimensTamanho do Texto (em Sp)Tem diferentes tamanhos baseado na densidade
allowme_biometrics_generic_errordrawableImagem apresentada na tela de erros genéricoImage gerenciada pelo SDK

4.5.4.2 Tela de Erros - Erro de Permissão


Esta tela de erros é apresentada caso o usuário não tenha dado permissão de acesso a câmera no momento em que a biometria é inicializada, ou seja, quando o SDK devolve o erro BiometricsErrors.PERMISSION_NOT_GRANTED_EXCEPTION.

Neste tela, caso o usuário aperte no botão "Permitir Acesso" o usário será enviado para a tela de configurações (Settings) para que este possa permitir o recurso de câmera e assim dar continuidade ao processo de biometria.

As opções de customização desta tela podem ser feitas por você levando em conta os seguintes atributos:


variávelTipoDescriçãoValor padrão
allowMeBiometricsPermission_titleStringTítulo da tela de erro permissão"Acesso à câmera"
allowMeBiometricsPermission_messageStringTexto referente a mensagem de erros de permissão"Para continuar é necessário liberar o acesso à câmera do seu dispositivo"
allowMeBiometricsPermission_nextStringTexto do botão permitir acesso a câmera"Permitir Acesso"
allowMeBiometricsError_backgroundColorCorCor de background superior"#F1F1F1"
allowMeBiometricsCustomization_backgroundColorCurvedEdgeCorCor do background onde estão o título e a mensagem de erro"#FFFFFF"
allowMeBiometricsInstructionsCustomization_advanceButtonColorCorCor do botão avançar"#002DD1"
allowMeBiometricsError_textTitleSizedimensTamanho do Título (em Sp)Tem diferentes tamanhos baseado na densidade
allowMeBiometricsErrorText_colordimensTamanho do Texto (em Sp))Tem diferentes tamanhos baseado na densidade
permission_biometrics_errordrawableImagem apresentada na tela de erros de permissãoImage gerenciada pelo SDK

4.5.4.3 Tela de Erros - Erro de Timeout

Esta tela de erros é apresentada quando o processo de biometria não ocorre no tempo esperado, ou seja, o usuário não foi capaz ou não terminou o processo no tempo definido em allowMeBiometricsConfig_timeoutInSeconds (padrão 180 segundos).

Ou seja, esta tela é mostrada quando o SDK devolve o erro BiometricsErrors.TIMEOUT_EXCEPTION.

Neste tela, caso o usuário aperte no botão "Tentar novamente" o processo de biometria irá recomeçar.


variávelTipoDescriçãoValor padrão
allowMeBiometricsTimeout_titleStringTítulo da tela de erro de timeout"Reinicie o processo"
allowMeBiometricsTimeout_messageStringTexto referente a mensagem de erros de permissão"O tempo para concluir o processo\nexpirou. Será necessário começar novamente."
allowMeBiometricsTimeout_nextStringTexto do botão pare reiniciar o processo"Tentar Novamente"
allowMeBiometricsError_backgroundColorCorCor de background superior"#F1F1F1"
allowMeBiometricsCustomization_backgroundColorCurvedEdgeCorCor do background onde estão o título e a mensagem de erro"#FFFFFF"
allowMeBiometricsInstructionsCustomization_advanceButtonColorCorCor do botão avançar"#002DD1"
allowMeBiometricsError_textTitleSizedimensTamanho do Título (em Sp)Tem diferentes tamanhos baseado na densidade
allowMeBiometricsErrorText_colordimensTamanho do Texto (em Sp)Tem diferentes tamanhos baseado na densidade
allowme_biometrics_timeout_errordrawableImagem apresentada na tela de erros de timeoutImage gerenciada pelo SDK

📘

TIP

Os textos também podem ser customizados em outras linguas. Por padrão, todos os textos descritos acima já estão traduzidos para Inglês e Espanhol. Caso queira adicionar mais traduções, adicione os recursos corretos no diretório /res correspondente

Tabela Traduções (Telas de Erros e Dialog)

ChavePortuguêsInglêsEspanhol
allowMeBiometricsError_generic_error_titleProcesso não concluídoOperation could not be completedSomething went wrong. Please, try again
allowMeBiometricsError_generic_error_messageOcorreu uma falha ao concluir o processo. Por favor, tente novamente.Find a well lit placeBusca un lugar luminoso
allowMeBiometricsPermission_titleAcesso à câmeraCamera access requiredSe requiere acceso a la cámara
allowMeBiometricsPermission_messagePara continuar é necessário liberar o acesso à câmera do seu dispositivoTo continue, you must allow access to your device's cameraPara continuar, debes permitir el acceso a la cámara de tu dispositivo
allowMeBiometricsTimeout_titleReinicie o processoCamera access requiredSe requiere acceso a la cámara
allowMeBiometricsTimeout_messagePara continuar é necessário liberar o acesso à câmera do seu dispositivoTo continue, you must allow access to your device's cameraPara continuar, debes permitir el acceso a la cámara de tu dispositivo
allowMeBiometricsTimeout_nextPermitir AcessoAllow accessPermitir el acceso

4.6 Adicionando Header (ActionBar)

Também é possível adicionar ou remover o título (ActionBar) utilizando o tema que você desejar.Desta forma, pode-se modificar o título da ActionBar bem como se ela estará visível.

Para isto é necessário, dentro de sua aplicação, fazer as seguintes modificações:

Modificando AndroidManifest.xmlA primeira atividade a ser feita é adicionar o namespace tools (xmlns:tools) diretamente ao seu manifest:

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="your_package_name">

Em seguida, dentro de "Application", adicionar o seguinte bloco:

<application>
  <!-- ... -->

  <activity
    android:theme="@style/AppTheme"
    android:name="br.com.allowme.android.allowmesdk.biometrics.view.AllowMeBiometricsActivity"
    tools:replace="android:theme"
  />
</application>

Assim, a tela AllowMeBiometricsActivity será configurada para utilizar o tema da aplicação.

5. Customização de Layout - Facetec

Por padrão a biometria facial da Facetec já é pré-configurada em nosso SDK, mas possibilitamos que a aplicação possa customizar temas, cores, textos pré-definidos etc.

Caso queira modificar estas configurações podemos passar como parâmetro do método startBiometrics a customização da Facetec através do objeto faceTecCustomization:

Exemplo: Modificando a customizações da Facetec

val allowMe = AllowMe.getInstance(applicationContext, "your-api-key-here")

// Criando o objeto FacetecCustomization que será passado por parâmetro
val facetecCustomization = FaceTecCustomization()

// Customizando a cor de background da facetec
facetecCustomization.frameCustomization.backgroundColor = Color.parseColor("#C0C0C0")

// Customizando as bordas onde a câmera mostra a captura de tela.
facetecCustomization.frameCustomization.borderWidth = 3

// Outras configs 
// facetecCustomization ...
// Fim de outras configs

// Chamada a biometria utilizando as customizações realizadas acima
allowMe.startBiometrics(this, facetecCustomization) { biometricsResult ->
    // ... mesma manipulação feita na biometria facial do AllowMe.
}

📘

Customizações e Opções - Facetec

Para mais informações sobre como customizar o layout do FaceTecSDK, acesse a documentação da Facetec - ui customization (opens new window)bem como os textos que podem ser modificados documentação da Facetec - Text & Language Editing