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

var theme = Liveness3DTheme(.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
frameCustomizationBorderWidthInt32Modifica a largura da borda do frame.
frameCustomizationBorderColorUIColorModifica a cor da borda do frame.
frameCustomizationBackgroundColorUIColorModifica a cor de fundo do frame.
frameCustomizationCornerRadiusInt32Modifica o tamanho do arredondamento das bordas do frame.
frameCustomizationShadowLiveness3DShadow?Adiciona um efeito de sombreamento no componente visual.

3. Overlay

AtributoTipoDescrição
overlayCustomizationBackgroundColorUIColorModifica 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
feedbackCustomizationCornerRadiusInt32Modifica o tamanho do arredondamento das bordas da barra.
feedbackCustomizationBackgroundColorUIColorModifica a cor de fundo da barra.
feedbackCustomizationTextColorUIColorModifica a cor do texto do feedback.
feedbackCustomizationTextFontUIFont?Adiciona uma fonte customizada para o texto do feedback.
feedbackCustomizationShadowLiveness3DShadow?Adiciona um efeito de sombreamento no componente visual.

5. Oval

AtributoTipoDescrição
ovalCustomizationStrokeColorUIColorModifica a cor da borda da camada oval.
ovalCustomizationStrokeWidthInt32Modifica a largura da borda da camada oval.
ovalCustomizationProgressColor1UIColorModifica a cor da borda de progresso da camada oval.
ovalCustomizationProgressColor2UIColorModifica a cor da borda de progresso da camada oval.
ovalCustomizationProgressStrokeWidthInt32Modifica a largura da borda do progresso da camada oval.
ovalCustomizationProgressRadialOffsetInt32Modifica o distânciamento da borda de progresso da camada oval.

6. Botões

AtributoTipoDescrição
guidanceCustomizationButtonBackgroundNormalColorUIColorModifica a cor de fundo do botão na sua condição padrão.
guidanceCustomizationButtonBackgroundHighlightColorUIColorModifica a cor de fundo do botão na sua condição de destaque.
guidanceCustomizationButtonBackgroundDisabledColorUIColorModifica a cor de fundo do botão na sua condição de desabilitado.
guidanceCustomizationButtonTextNormalColorUIColorModifica a cor do texto do botão na sua condição padrão.
guidanceCustomizationButtonTextHighlightColorUIColorModifica a cor do texto do botão na sua condição de destaque.
guidanceCustomizationButtonTextDisabledColorUIColorModifica a cor do texto do botão na sua condição de desabilitado.
guidanceCustomizationButtonFontUIFont?Adiciona uma fonte customizada para o texto do botão.
guidanceCustomizationButtonBorderColorUIColorModifica a cor da borda do botão.
guidanceCustomizationButtonBorderWidthInt32Modifica a largura da borda do botão.
guidanceCustomizationButtonCornerRadiusInt32Modifica o tamanho do arredondamento das bordas do botão.

8. Guidance

AtributoTipoDescrição
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
readyScreenCustomizationHeaderFontUIFont?Adiciona uma fonte customizada para o header.
readyScreenCustomizationHeaderTextColorUIColorModifica a cor do texto.

2. Subtext

AtributoTipoDescrição
readyScreenCustomizationSubtextFontUIFont?Adiciona uma fonte customizada para o subtext.
readyScreenCustomizationSubtextTextColorUIColorModifica a cor do texto.

3. Textos

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

AtributoTipoDescrição
readyScreenCustomizationTextBackgroundColorUIColor?Modifica a cor de fundo.
readyScreenCustomizationTextBackgroundCornerRadiusInt32Modifica o tamanho do arredondamento das bordas.

Tela de resultado

1. Animação de carregamento

AtributoTipoDescrição
resultScreenCustomizationAnimationRelativeScaleFloatDetermina o escalonamento da animação.
resultScreenCustomizationAnimationStyleResultAnimationStyleDetermina o tipo de animação que será utilizada juntamente com sua customização.
public enum ResultAnimationStyle {
    case blob(appearance: BlobAnimationAppearance)
    case spinner(appearance: SpinnerAnimationAppearance)
    case image(appearance: ImageAnimationAppearance)
    case custom(delegate: CustomResultAnimationDelegate)
}

Mais detalhes na seção Animação

A propriedade resultScreenCustomizationAnimationStyle customiza ambos os itens 1 e 3.

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.

4. Mensagem de sucesso

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

Tela de tente novamente

1. Header

AtributoTipoDescrição
retryScreenCustomizationHeaderFontUIFont?Adiciona uma fonte customizada para a mensagem do header.
retryScreenCustomizationHeaderTextColorUIColorModifica a cor do texto.

2. Subtext

AtributoTipoDescrição
retryScreenCustomizationSubtextFontUIFont?Adiciona uma fonte customizada para a mensagem do subtext.
retryScreenCustomizationSubtextTextColorUIColorModifica a cor do texto.

4. Imagem

AtributoTipoDescrição
retryScreenCustomizationImageBorderColorUIColorModifica a cor da borda do preview da imagem de retentativa.
retryScreenCustomizationImageBorderWidthInt32Modifica a largura da borda do preview da imagem de retentativa.
retryScreenCustomizationImageCornerRadiusInt32Modifica o tamanho do arredondamento das bordas.

Animação

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

var theme = Liveness3DTheme(.light)

theme.resultScreenCustomizationAnimationStyle = .blob(appearance: CustomAppearance())
theme.resultScreenCustomizationAnimationStyle = .spinner(appearance: CustomAppearance())
theme.resultScreenCustomizationAnimationStyle = .image(appearance: CustomAppearance())
theme.resultScreenCustomizationAnimationStyle = .custom(delegate: CustomDelegate())

Blob Animation

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

BlobAnimationAppearance

IndicePropriedadeTipoDescrição
(1)blobColorUIColorAltera a cor do blob
(2)checkmarkForegroundColorUIColorAltera a cor do checkmark ao final
da animação de carregamento.
(3)checkmarkBackgroundColorUIColorAltera a cor do circulo do checkmark
ao final da animação de carregamento.

Código de customização

let appearance = BlobAnimationAppearance(
    blobColor: .blue,
    checkmarkForegroundColor: .systemPink,
    checkmarkBackgroundColor: .yellow
)
theme.resultScreenCustomizationAnimationStyle = .blob(appearance: appearance)

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

SpinnerAnimationAppearance

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

Código de customização

let appearance = SpinnerAnimationAppearance(
    spinnerColor: .red,
    indicatorForegroundColor: .yellow,
    indicatorBackgroundColor: .blue
)
theme.resultScreenCustomizationAnimationStyle = .spinner(appearance: appearance)

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.resultScreenCustomizationAnimationStyle = .custom(delegate: CustomResultAnimation())

Resultado