Liveness 3D - Tema Interativo

Plataforma interativa de customizações do Liveness3DTheme() para dispositivos iOS

1. Guia Rápido

O Tema Interativo para personalização do SDK iOS é uma plataforma essencial que permite a seleção de cores, bordas, arredondamento de bordas e sombreamento. Isso simplifica a geração de código, possibilitando a fácil implementação no seu Liveness 3D.

Aprenda a personalizar o Liveness 3D iOS e integrar as propriedades customizadas em seu código de forma simples e ágil.

Siga os passos para interagir com o Tema Interativo.

Antes de começar

Primeiramente, é essencial seguir algumas etapas sequenciais.

  • Será necessário importar as fontes desejadas para uma pasta de fontes do seu ambiente Swift, criando uma pasta para as fontes e em seguida com o botão direito na pasta clique em "Add Files to [Nome do Projeto]"
Print do XCode informando como adicionar arquivos de fontes no projeto

Print do XCode informando como adicionar arquivos de fontes no projeto

  • Após efetuar essa importação você deve criar a propriedade caso não exista chamada de Fonts provided by application com as fontes desejadas no seu arquivo info.plist utilizando o "value" como nome da fonte.
Info.plist do seu projeto utilizando  a propriedade "Fonts provided by application"

Info.plist do seu projeto utilizando a propriedade "Fonts provided by application"

Telas para customização

O Tema Interativo apresenta três telas de customização que orientam o usuário durante a execução do Liveness 3D:

  • Na primeira tela, encontramos as instruções para a preparação do usuário, sendo o ponto inicial de interação com o Liveness 3D.
  • A segunda tela é destinada à retentativa. Caso o usuário precise refazer a jornada, essa tela fornece diretrizes, incluindo um exemplo de foto ideal.
  • A terceira tela consiste na tela de resultado. Nela, o usuário recebe a mensagem de conclusão do processo de Liveness.
Sequência de telas exibidas no iframe para customização.

Sequência de telas exibidas no iframe para customização.

Propriedades customizáveis

As propriedades destinadas à customização estão localizadas na segunda coluna do iframe. Nesta coluna, é possível encontrar o nome da propriedade (1) e sua respectiva descrição (2).

Coluna de propriedades customizáveis.

Coluna de propriedades customizáveis.

Para exportar o código das customizações

Passo 1: visualize o código

Após concluir todas as personalizações, é necessário clicar no botão "código" (1) para visualizar todas as modificações realizadas e, em seguida, exportá-las para incorporação no seu projeto iOS.

Localização do botão "código" para exportação das customizações.

Localização do botão "código" para exportação das customizações.

Passo 2: inicie a classe do Liveness3DTheme()

Utilize o exemplo a seguir para iniciar o builder do tema com a classe Liveness3DTheme() do módulo apartado OILiveness3D ou monolítico FaceCaptcha:

var theme = Liveness3DTheme(Liveness3DThemeType.light)

Passo 3: identifique e implemente as propriedades

A classe inclui uma série de propriedades que podem ser customizadas, divididas em categorias como Botões, Ready e Retry Screen, entre outras.

O código das propriedades customizadas também reflete essa série mencionada anteriormente. Identifique e implemente de acordo com as respetivas customizações.


2. Tema Interativo

Use a plataforma para iniciar as customizações do Liveness 3D.


3. Propriedades customizáveis

Abaixo, estão mapeadas as propriedades para customização do Liveness3DTheme.

Elementos comuns

1. Botão de cancelar

AtributoTipoDescrição
cancelButtonCustomizationCustomImageUIImageCancela a operação e retorna para view anterior.
cancelButtonCustomizationLocationCancelButtonLocationEnum que determina a posição do botão. Esquerda, deireita ou desabilitado.
public enum CancelButtonLocation: Int {
    case topLeft = 0
    case topRight = 1
    case disabled = 2
}

2. Frame

AtributoTipoDescrição
frameCustomizationBorderWidthInt32?Modifica a largura da borda do frame.
frameCustomizationCornerRadiusInt32Modifica o tamanho do arredondamento das bordas do frame.
frameCustomizationBorderColorUIColor?Modifica a cor da borda do frame.
frameCustomizationBackgroundColorUIColor?Modifica a cor de fundo do frame.

3. Overlay

AtributoTipoDescrição
overlayCustomizationBackgroundColorUIColor?Modifica a cor de fundo da camada de overlay.
overlayCustomizationBrandingImageUIImage?Adiciona uma imagem na camada de overlay.
overlayCustomizationShowBrandingImageBoolPropriedade booleana que ativa a visualização da imagem customizada.

4 .Feedback Bar

AtributoTipoDescrição
feedbackCustomizationCornerRadiusInt32?Modifica o tamanho do arredondamento das bordas da barra.
feedbackCustomizationBackgroundColorCAGradientLayer?Modifica a cor de fundo da barra.
feedbackCustomizationTextColorUIColor?Modifica a cor do texto do feedback.
feedbackCustomizationTextFontUIFont?Adiciona uma fonte customizada para o texto do feedback.
feedbackCustomizationEnablePulsatingTextBool***

5. Oval

AtributoTipoDescrição
ovarCustomizationStrokeWidthInt32?Modifica a largura da borda da camada oval.
ovarCustomizationStrokeColorUIColorModifica a cor da borda da camada oval.
ovarCustomizationProgressStrokeWidthInt32?Modifica a largura da borda do progresso da camada oval.
ovarCustomizationProgressColor1UIColorModifica a cor da borda de progresso da camada oval.
ovarCustomizationProgressColor2UIColorModifica a cor da borda de progresso da camada oval.
ovarCustomizationProgressRadialOffsetInt32?Modifica o distânciamento da borda de progresso da camada oval.

6. Botões

AtributoTipoDescrição
guidanceCustomizationButtonFontUIFont?Adiciona uma fonte customizada para o texto do botão.
guidanceCustomizationButtonTextNormalColorUIColor?Modifica a cor do texto do botão na sua condição padrão.
guidanceCustomizationButtonBackgroundNormalColorUIColorModifica a cor de fundo do botão na sua condição padrão.
guidanceCustomizationButtonTextHighlightColorUIColor?Modifica a cor do texto do botão na sua condição de destaque.
guidanceCustomizationButtonBackgroundHighlightColorUIColor?Modifica a cor de fundo do botão na sua condição de destaque.
guidanceCustomizationButtonTextDisabledColorUIColor?Modifica a cor do texto do botão na sua condição de desabilitado.
guidanceCustomizationButtonBackgroundDisabledColorUIColorModifica a cor de fundo do botão na sua condição de desabilitado.
guidanceCustomizationButtonBorderColorUIColor?Modifica a cor da borda do botão.
guidanceCustomizationButtonBorderWidthInt32?Modifica a largura da borda do botão.
guidanceCustomizationButtonCornerRadiusInt32?Modifica o tamanho do arredondamento das bordas do botão.

7. Frame Background

AtributoTipoDescrição
guidanceCustomizationBackgroundColors[UIColor]?Modifica a cor de fundo e caso receba duas cores diferentes cria um degradê.

8. Guidance

AtributoTipoDescrição
guidanceCustomizationForegroundColorUIColor?Modifica a cor de fundo quando estiver em primeiro plano.
guidanceCustomizationHeaderFontUIFont?Adiciona uma fonte customizada para o header.
guidanceCustomizationSubtextFontUIFont?Adiciona uma fonte customizada para o subtext.

Tela de pronto para começar

1. Header

AtributoTipoDescrição
guidanceCustomizationReadyScreenHeaderFontUIFont?Adiciona uma fonte customizada para o header.
guidanceCustomizationReadyScreenHeaderTextColorUIColor?Modifica a cor da fonte do texto.

2. Subtext

AtributoTipoDescrição
guidanceCustomizationReadyScreenSubtextFontUIFont?Adiciona uma fonte customizada para o subtext.
guidanceCustomizationReadyScreenSubtextTextColorUIColor?Modifica a cor da fonte do texto.

3. Textos

Observação:
As propriedades abaixo só serão aplicadas em telas pequenas.

AtributoTipoDescrição
guidanceCustomizationReadyScreenOvarFillColorUIColor?***
guidanceCustomizationReadyScreenTextBackgroundColorUIColor?Modifica a cor de fundo.
guidanceCustomizationReadyScreenTextBackgroundCornerRadiusInt32?Modifica o tamanho do arredondamento das bordas.

Tela de resultado

1. Activity

AtributoTipoDescrição
resultScreenCustomizationForegroundColorUIColor?Modifica a cor de fundo quando estiver em primeiro plano.
resultScreenCustomizationBackgroundColors[UIColor]?Modifica a cor de fundo e caso receba duas cores diferentes cria um degradê.
resultScreenCustomizationActivityIndicatorColorUIColorModifica a cor do activity indicator.
resultScreenCustomizationCustomActivityIndicatorImageUIImage?Adiciona uma imagem customizada para o activity indicator.
resultScreenCustomizationCustomActivityIndicatorRotationIntervarInt32***
resultScreenCustomizationCustomActivityIndicatorAnimationInt***
resultAnimationStyleResultAnimationStyleDetermina o tipo de animação será utilizada juntamente com sua customização.
public enum ResultAnimationStyle {
    case blob
    case spinner(SpinnerAnimationCustomization)
    case custom(CustomResultAnimationDelegate)
}

public struct SpinnerAnimationCustomization {
    let spinnerColor: UIColor
    let indicatorForegroundColor: UIColor
    let indicatorBackgroundColor: UIColor
}

public protocol CustomResultAnimationDelegate {
    func createActivityIndicatorView() -> UIView?
    func createSuccessAnimationView() -> UIView?
}

2. Barra de carregamento

AtributoTipoDescrição
resultScreenCustomizationShowUploadProgressBarBoolPropriedade booleana que ativa a visualização da barra de progresso.
resultScreenCustomizationUploadProgressFillColorUIColorModifica a cor do preenchimento da barra de progresso.
resultScreenCustomizationUploadProgressTrackColorUIColorModifica a cor da barra de progresso.

3. Animação

AtributoTipoDescrição
resultScreenCustomizationAnimationRelativeScaleFloat***
resultScreenCustomizationResultAnimationBackgroundColorUIColorModifica a cor de fundo da imagem que aparece após a animação finalizar.
resultScreenCustomizationResultAnimationForegroundColorUIColorModifica a cor do icone que vai aparecer em primeiro plano após a animação finalizar.
resultScreenCustomizationResultAnimationSuccessBackgroundImageUIImage?Adiciona uma imagem customizada após a animação finalizar com sucesso.
resultScreenCustomizationResultAnimationUnSuccessBackgroundImageIntAdiciona uma imagem customizada após a animação finalizar com erro.
resultScreenCustomizationCustomResultAnimationSuccessInt***
resultScreenCustomizationCustomResultAnimationUnSuccessInt***
resultScreenCustomizationCustomStaticResultAnimationSuccessInt***
resultScreenCustomizationCustomStaticResultAnimationUnSuccessInt***

4. Mensagem de sucesso

AtributoTipoDescrição
resultScreenCustomizationMessageFontUIFont?Adiciona uma fonte customizada para a mensagem de sucesso.

Tela de tente novamente

1. Header

AtributoTipoDescrição
guidanceCustomizationRetryScreenHeaderFontUIFont?Adiciona uma fonte customizada para a mensagem do header.
guidanceCustomizationRetryScreenHeaderTextColorUIColor?Modifica a cor da fonte do header.

2. Customização do Subtext

AtributoTipoDescrição
guidanceCustomizationRetryScreenSubtextFontUIFont?Adiciona uma fonte customizada para a mensagem do subtext.
guidanceCustomizationRetryScreenSubtextTextColorUIColor?Modifica a cor da fonte do subtext.

4. Imagem

AtributoTipoDescrição
guidanceCustomizationRetryScreenImageBorderColorUIColorModifica a cor da borda do preview da imagem de retentativa.
guidanceCustomizationRetryScreenImageBorderWidthInt32?Modifica a largura da borda do preview da imagem de retentativa.
guidanceCustomizationRetryScreenImageCornerRadiusInt32?Modifica o tamanho do arredondamento das bordas.
guidanceCustomizationRetryScreenOvarStrokeColorUIColor?Modifica a cor da borda do preview oval da imagem de retentativa.

Animação

A animação da tela de resultado pode assumir três valores: blob, spinner() ou custom(), esses valores são atribuídos a propriedade resultAnimationStyle do Liveness3DTheme. Caso nenhum valor seja atribuído a essa propriedade o valor spinner() será aplicado por padrão.

var theme = Liveness3DTheme(.light)

theme.resultAnimationStyle = .blob
theme.resultAnimationStyle = .spinner(customization)
theme.resultAnimationStyle = .custom(delegate)

Blob Animation

DescriçãoCustomização
Exemplo da AnimaçãoA customização da animação de Blob é definida
pelos parâmetros do Liveness3DTheme listados
na tabela abaixo:
IndicePropriedadeTipoDescrição
(1)resultScreenCustomizationActivityIndicatorColorUIColorAltera a cor do blob
(2)resultScreenCustomizationResultAnimationForegroundColorUIColorAltera a cor do checkmark ao final
da animação de carregamento.
(3)resultScreenCustomizationResultAnimationBackgroundColorUIColorAltera a cor do circulo do checkmark
ao final da animação de carregamento.

Código de customização

theme.resultScreenCustomizationActivityIndicatorColor = .blue
theme.resultScreenCustomizationResultAnimationForegroundColor = .systemPink
theme.resultScreenCustomizationResultAnimationBackgroundColor = .yellow
theme.resultAnimationStyle = .blob

Resultado


Spinner Animation

DescriçãoAnimaçãoCustomização
Exemplo da
Animação
A customização da animação de Spinner é feita através do
objeto do tipo SpinnerAnimationCustomization.

SpinnerAnimationCustomization

IndicePropriedadeTipoDescrição
(1)spinnerColorUIColorAltera a cor do spinner
(2)indicatorForegroundColorUIColorAltera a cor do checkmark ao final
da animação de carregamento.
(3)indicatorBackgroundColorUIColorAltera a cor do circulo do checkmark
ao final da animação de carregamento.

Código de customização

let customization = SpinnerAnimationCustomization(
    spinnerColor: .red,
    indicatorForegroundColor: .yellow,
    indicatorBackgroundColor: .blue
)
theme.resultAnimationStyle = .spinner(customization)

Resultado


Custom Animation

DescriçãoAnimaçãoCustomização
Exemplo da
Animação
A animação personalizada é feita através de um
objeto que deve estar em conformidade com o
protocolo CustomResultAnimationDelegate.

CustomResultAnimationDelegate

IndiceMétodoTipo de retornoDescrição
(1)createActivityIndicatorView()UIView?Altera a cor do spinner
(2)createSuccessAnimationView()UIView?Altera a cor do checkmark ao final
da animação de carregamento.

Código de customização

class CustomResultAnimation: CustomResultAnimationDelegate {
    func createActivityIndicatorView() -> UIView? {
        let activityIndicator = UIView()
        activityIndicator.backgroundColor = .red
        return activityIndicator
    }
    
    func createSuccessAnimationView() -> UIView? {
        let successAnimation = UIView()
        successAnimation.backgroundColor = .blue
        return successAnimation
    }
}
theme.resultAnimationStyle = .custom(CustomResultAnimation())

Resultado