For the complete documentation index, see llms.txt. This page is also available as Markdown.

Configurações avançadas

Introdução

Nesta seção, amplia-se a informação geral sobre o lançamento do SDK.


Informações avançadas do lançamento do SDK

Nesta seção, será ampliada a informação da seção "Lançamento simplificado do SDK".

Adicionar repositório privado

Por questões de segurança e manutenção, os novos componentes da SDKMobile são armazenados em repositórios privados que exigem credenciais específicas para acessá-los. Essas credenciais deverão ser obtidas por meio da equipe de suporte de Facephi.

Uma vez obtidas as credenciais, deverá ser incluído o seguinte trecho de código para configurar o repositório Maven no Gradle do seu projeto, ou no arquivo settings.gradle do mesmo. Recomenda-se incluí-lo após mavenCentral()

maven {
    Properties props = new Properties()
    def propsFile = new File('local.properties')
    if(propsFile.exists()){
        props.load(new FileInputStream(propsFile))
    }
    name="external"
    url = uri("https://facephicorp.jfrog.io/artifactory/maven-pro-fphi")
    credentials {
        username = props["artifactory.user"] ?: System.getenv("USERNAME_ARTIFACTORY")
        password = props["artifactory.token"] ?: System.getenv("TOKEN_ARTIFACTORY")
    }
}

Para que o projeto recupere corretamente as dependências, as credenciais (Usuário e Token) deverão estar configuradas corretamente

Há várias formas de configurar as credenciais de acesso ao repositório:

  • Como variáveis de ambiente com o seguinte nome. Por exemplo:

    Se as dependências não forem reconhecidas ao sincronizar, elas devem ser incluídas por meio de variáveis de ambiente no arquivo:

~/.zshrc

  • Incluídos no arquivo local.properties com a seguinte estrutura:

Inicialização do SDK

Deve-se evitar inicializar um controlador que não será usado.

O SDK funciona por meio de um controlador principal (SDKController) que deve ser inicializado corretamente para que se possa usar o restante da funcionalidade. Os passos a seguir na inicialização são:

  1. Incluir o objeto Application por meio da classe SdkApplication.

  2. Decidir se a licença será incluída por meio de um String ou com um serviço de licenciamento remoto (consultar seção 3.1).

  3. O controlador TrackingController caso se queira conectar com a plataforma.

O ponto 3 é opcional e exigiria o uso do componente de Tracking (mais informações sobre este módulo em sua própria documentação).

Um exemplo de inicialização sem TrackingController seria o seguinte:

Um exemplo de inicialização com TrackingController seria o seguinte:

Injeção de licenças

Como mencionado anteriormente, atualmente existem duas formas de injetar a licença:

a. Obtendo a licença por meio de um serviço

Por meio de um serviço que simplesmente exigirá uma URL e um API-KEY como identificador. Isso evitaria problemas ao manipular a licença, assim como a constante substituição dessas licenças quando surgisse algum problema com ela (malformação ou modificação indevida, expiração da licença...)

Exemplo de implementação em Kotlin:

Exemplo de implementação em Java:

b. Injetando a licença como String

A licença pode ser atribuída diretamente como uma String, da seguinte maneira:

Exemplo de implementação em Kotlin:

Exemplo de implementação em Java:

Recebimento de erros

Na parte do erro, teremos a classe SdkError.

Lista de erros:

  • EMPTY_LICENSE: Licença vazia

  • INIT_AI_MODELS(error: String): Erro obtido no serviço de download de modelos

  • INIT_FLOW (error: String): Erro obtido no serviço de download de flow

  • LICENSE_CHECKER_ERROR (error: String): Erro obtido ao verificar se a licença está correta

  • LICENSING_ERROR (error: String): Erro obtido no serviço de download de licenças

  • NETWORK_CONNECTION_ERROR: Erro de conexão com a internet

  • TRACKING_ERROR (error: String): Erro obtido ao iniciar o controlador de Tracking


Iniciar nova operação

Sempre que se desejar iniciar o fluxo de uma nova operação (exemplos de operações seriam: Onboarding, Authentication, VideoCall,...) é essencial indicar ao SDKController que ela vai começar, e assim o SDK saberá que as próximas chamadas de Componentes (também chamados Steps) farão parte dessa operação.

Ao iniciar um processo ou fluxo, sempre deverá ser realizada a chamada ao método newOperation

Este método tem os seguintes parâmetros de entrada:

  1. operationType: Indica se será feito um processo de ONBOARDING ou de AUTHENTICATION.

  2. customerId: ID único do usuário, se houver (controlado no nível da aplicação)

    1. Este parâmetro aparecerá refletido para cada operação na plataforma.

  3. steps: Lista de passos da operação, se tiverem sido definidos previamente

  4. enableTracking: Permite ativar ou desativar o envio de eventos de Tracking para esta operação. Se não for informado, considera-se true.

Há 2 maneiras de realizar este início de operação, dependendo de se são conhecidos os passos que formarão o fluxo do processo de registro ou autenticação (caso os componentes sejam executados de forma sequencial e sempre da mesma maneira) ou, em caso contrário, de que o fluxo não esteja definido e seja desconhecido (por exemplo, o cliente final é quem decide a ordem de execução dos componentes).

  • Fluxo conhecido (a operação aparecerá rastreada na plataforma com todos os passos da lista).

    Exemplo de implementação Kotlin:

Exemplo de implementação Java:

  • Fluxo desconhecido (a operação aparecerá rastreada na plataforma com reticências). Exemplo de implementação Kotlin:

Exemplo de implementação Java:

sdkResult → Contém em data as informações da operação criada.

Quando o resultado é correto, data é um OperationResult com:

Campo
Descrição

sessionId

Identificador da sessão criada ou recuperada pelo SDK.

operationId

Identificador da operação ativa.

type

Tipo de operação iniciado (ONBOARDING ou AUTHENTICATION).

customerId

Identificador do usuário associado à operação.

Uma vez criada a operação os componentes do SDK associados a esta operação poderão ser executados. Consulte a documentação específica de cada componente para saber como fazer isso.

Tipos de operação existentes

Atualmente, existem as seguintes operações, durante as quais são usados determinados Componentes (STEPS).

A seguir, é apresentada uma tabela com a relação entre operações e steps:

Operação (OperationType)

Componente (Step)

Descrição

ONBOARDING

SELPHI_COMPONENT\nSELPHID_COMPONENT

- Validação facial de uma selfie contra o rosto de um documento\n- Extração do OCR do documento\n- Detecção de vivacidade

AUTHENTICATION

SELPHI_COMPONENT

- Validação facial por meio de templates\n- Detecção de vivacidade

Esta lista será ampliada em próximas atualizações do SDK, à medida que novos componentes e casos de uso forem surgindo.

Se a criação de uma nova operação devolver um erro do tipo INTERNAL_ERROR isso se deve principalmente a um problema de segurança. Para investigar a causa, é possível recuperar o Token associado ao erro, o qual fornece informações adicionais para sua análise.


Segurança

O SDK de Android incorpora um sistema de segurança destinado a detectar e bloquear ambientes potencialmente pouco confiáveis ou que possam indicar tentativas de ataque.

Este mecanismo está habilitado por padrão, permite identificar situações que poderiam comprometer a segurança e evita a execução do SDK em contextos que não são considerados seguros:


Lançamento de componentes

A funcionalidade do SDK é dividida em diferentes componentes com controladores específicos. Esses controladores serão “lançados” a partir do controlador geral.

Uma vez criada a nova operação (seção 3), poderão ser lançados os diferentes controladores do SDK. Para consultar essas informações, deverá-se acessar a documentação de cada um dos componentes específicos.

Exemplo de lançamento em Kotlin:

Exemplo de lançamento em Java:

Opções para o lançamento do componente

Uma vez iniciado o SDK e criada uma nova operação, o componente poderá ser lançado. Há duas formas de lançá-lo:

  • [COM Tracking] Esta chamada permite lançar a funcionalidade do componente normalmente, mas os eventos internos serão enviados ao servidor de tracking:

  • [SEM Tracking] Esta chamada permite lançar a funcionalidade do componente normalmente, mas nenhum evento será enviado ao servidor de tracking:

O método launch deve ser usado por padrão. Este método permite utilizar tracking caso o componente esteja ativado, e não o usará quando estiver desativado (ou quando o componente não estiver instalado).

Por outro lado, o método launchMethod cobre um caso especial, no qual o integrador tem o Tracking instalado e ativado, mas em um Fluxo determinado dentro da aplicação não deseja rastrear informações. Nesse caso, usa-se este método para evitar que essas informações sejam enviadas à plataforma.


Retorno do resultado

O resultado de cada componente será retornado por meio do SDK, mantendo sempre a mesma estrutura por meio da classe SdkResult cuja classe é uma Sealed Class que pode ter 2 estados possíveis:

  • SdkResult.Success: Indica que a operação foi finalizada corretamente e contém internamente:

    • data: Contém o tipo de dado necessário de acordo com o processo/componente lançado.

  • SdkResult.Error

    • error: Contém o tipo de erro necessário de acordo com o processo/componente lançado.

Na documentação de cada componente específico, serão detalhados os diferentes campos que este objeto pode retornar

Exemplo de uso:


Controladores auxiliares

Nesta seção, incluem-se outros controladores e operações auxiliares, alguns deles opcionais, e que podem ser necessários para a correta finalização do Fluxo.

Esses campos são necessários para a comunicação com o serviço de Facephi, caso se queira realizar qualquer verificação e desejar realizar o tracking de uma operação determinada.

Obtenção do OperationId

Obtenção do OperationType

Obtenção do SessionId

Obtenção do CustomerID

Atribuição do CustomerID


Opções de depuração e controle de erros

Há certas opções no SDK que permitem um aumento nos logs de depuração para verificar se tudo funciona corretamente.

Controle de erros nas conexões de Tracking com a plataforma

Uma vez que o SDK tenha sido iniciado corretamente, podem ser aplicados certos ajustes para obter mais informações sobre possíveis erros em Tracking; é possível fazer um acompanhamento por meio deste lançamento de controlador:

Ativação de logs gerais de depuração


Acompanhamento e análise de eventos na aplicação

A funcionalidade de eventos permite registrar e interpretar interações-chave dentro da aplicação, como mudanças de tela e ações do usuário, facilitando a análise do comportamento em tempo real.

Cada evento é enviado com um carimbo de data e hora, tipo e detalhe específico, proporcionando um acompanhamento estruturado e otimizando a experiência do usuário com dados precisos e acionáveis.

Atualizado