Liveness 3D - Tema Interativo

Plataforma interativa de customizações do tema do Liveness 3D para Flutter

1. Guia Rápido

O Tema Interativo para personalização da biblioteca do Liveness 3D é 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 no Flutter para 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

  • Além disso, será necessário importar as fontes desejadas para a pasta de fontes do seu ambiente Android e iOS, nativamente arrastando e soltando seus arquivos .tff na pasta "assets/fonts" no Android, e no iOS registrando nos assets da aplicação.

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.

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

Passo 2: importe as fontes

Coloque os arquivos de fontes na pasta "assets res/fonts.xml" no Android ou registre nos assets caso seja iOS

Passo 3: inicie o builder do ThemeBuilder e das fontes Liveness3dFonts.

Utilize o exemplo a seguir para iniciar as funções do tema com as propriedades desejadas.

	 ThemeBuilder _themeCustomization() {
    return ThemeBuilder()
      ..guidanceCustomizationButtonBackgroundNormalColor = '#8e9334'
      ..ovalCustomizationStrokeColor = '#8e9334';
  }

  Liveness3dFonts _fontsCustomization() {
    return Liveness3dFonts()
      ..guidanceCustomizationHeaderFont = 'Lobster'
      ..guidanceCustomizationSubtextFont = 'Lobster'
      ..readyScreenCustomizationHeaderFont = 'Lobster'
      ..guidanceCustomizationButtonFont = 'Lobster'
      ..feedbackCustomizationTextFont = 'Lobster';
  }

Passo 4: identifique e implemente as propriedades

O objeto de cores inclui uma série de propriedades que podem ser customizadas, divididas em categorias como Guidance, 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 - Flutter

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 objeto ThemeBuilder.

Customizações de telas Liveness3D

Guidance

AtributoTipoDescrição
guidanceCustomizationBackgroundColors (Android)String?Define as cores de fundo da tela de guidance no Android.
guidanceCustomizationForegroundColor (Android)String?Define a cor dos elementos em primeiro plano (texto/ícones).

Botões

AtributoTipoDescrição
guidanceCustomizationButtonTextNormalColorString?Cor do texto do botão no estado normal.
guidanceCustomizationButtonBackgroundNormalColorString?Cor de fundo do botão no estado normal.
guidanceCustomizationButtonTextHighlightColorString?Cor do texto do botão no estado pressionado.
guidanceCustomizationButtonBackgroundHighlightColorString?Cor de fundo do botão no estado pressionado.
guidanceCustomizationButtonTextDisabledColorString?Cor do texto do botão quando desativado.
guidanceCustomizationButtonBackgroundDisabledColorString?Cor de fundo do botão quando desativado.
guidanceCustomizationButtonBorderColorString?Cor da borda do botão.
guidanceCustomizationButtonBorderWidthint?Espessura da borda do botão.
guidanceCustomizationButtonCornerRadiusint?Raio de arredondamento dos cantos do botão.

Ready Screen

AtributoTipoDescrição
guidanceCustomizationReadyScreenHeaderTextColorString?Cor do texto do cabeçalho da tela de pronto.
guidanceCustomizationReadyScreenSubtextTextColorString?Cor do texto secundário da tela de pronto.

Retry Screen

AtributoTipoDescrição
guidanceCustomizationRetryScreenHeaderTextColorString?Cor do texto do cabeçalho da tela de tentativa novamente.
guidanceCustomizationRetryScreenSubtextTextColorString?Cor do texto secundário da tela de tentativa novamente.
guidanceCustomizationRetryScreenImageBorderColorString?Cor da borda da imagem na tela de tentativa novamente.
guidanceCustomizationRetryScreenImageBorderWidthint?Espessura da borda da imagem na tela de tentativa novamente.
guidanceCustomizationRetryScreenImageCornerRadiusint?Raio de arredondamento dos cantos da imagem.
guidanceCustomizationRetryScreenOvalStrokeColor (Android)String?Cor do contorno oval exibido na tela de tentativa (Android).

Result Screen Customization

AtributoTipoDescrição
resultScreenCustomizationForegroundColorString?Cor dos elementos em primeiro plano da tela de resultado.
resultScreenCustomizationBackgroundColorsString?Cores de fundo da tela de resultado.
resultScreenCustomizationActivityIndicatorColorString?Cor do indicador de atividade da tela de resultado.
resultScreenCustomizationCustomActivityIndicatorRotationIntervarString?Intervalo de rotação do indicador de atividade customizado.
resultScreenCustomizationUploadProgressFillColorString?Cor de preenchimento do progresso de upload.
resultScreenCustomizationUploadProgressTrackColorString?Cor da trilha do progresso de upload.
resultScreenCustomizationResultAnimationForegroundColorString?Cor dos elementos da animação de resultado.
resultScreenCustomizationResultAnimationBackgroundColor (iOS)String?Cor de fundo da animação de resultado no iOS.
resultScreenCustomizationResultAnimationBackgroundImage (Android)String?Imagem de fundo da animação de resultado no Android.

Oval Customization

AtributoTipoDescrição
ovalCustomizationStrokeWidthint?Espessura do contorno oval.
ovalCustomizationStrokeColorString?Cor do contorno oval.
ovalCustomizationProgressStrokeWidthint?Espessura do contorno do progresso oval.
ovalCustomizationProgressColor1String?Cor inicial do progresso oval.
ovalCustomizationProgressColor2String?Cor final do progresso oval.
ovalCustomizationProgressRadialOffsetString?Deslocamento radial do progresso oval.

Frame Customization

AtributoTipoDescrição
frameCustomizationBorderWidthint?Espessura da borda do frame.
frameCustomizationCornerRadiusint?Raio de arredondamento dos cantos do frame.
frameCustomizationBorderColorString?Cor da borda do frame.
frameCustomizationBackgroundColorString?Cor de fundo do frame.
frameCustomizationElevationString?Elevação (sombra) do frame.

Overlay Customization

AtributoTipoDescrição
overlayCustomizationBackgroundColorString?Cor de fundo do overlay.

Feedback Customization

AtributoTipoDescrição
feedbackCustomizationCornerRadiusint?Raio de arredondamento dos cantos do feedback.
feedbackCustomizationBackgroundColorsString?Cores de fundo do feedback.
feedbackCustomizationTextColorString?Cor do texto do feedback.

Customização dos Textos

Da mesma forma que criamos um objeto, criamos para as fontes no 3D utilizando o TextsBuilder, seguindo esse exemplo:

	TextsBuilder _textsCustomization() {
    return TextsBuilder()
      ..readyHeader1 = 'ready_header_1'
      ..readyHeader2 = 'ready_header_2'
      ..readyMessage1 = 'ready_message_1'
      ..readyMessage2 = 'ready_message_2'
      ..feedbackBrightenYourEnvironment = 'feedback_brighten_your_environment';
  }

Ready Screen

Novo identificadorAntiga tag do arquivo XML
readyHeader1FaceTec_instructions_header_ready_1
readyHeader2FaceTec_instructions_header_ready_2
readyMessage1FaceTec_instructions_message_ready_1
readyMessage2FaceTec_instructions_message_ready_2
readyButtonFaceTec_action_im_ready

Retry Screen

Novo identificadorAntiga tag do arquivo XML
retryHeaderFaceTec_retry_header
retrySubheaderFaceTec_retry_subheader_message
retryYourPictureFaceTec_retry_instruction_message_1
retryIdealPictureFaceTec_retry_instruction_message_2
retryMessageSmileFaceTec_retry_instruction_message_3
retryMessageLightingFaceTec_retry_your_image_label
retryMessageContrastFaceTec_retry_ideal_image_label
retryButtonFaceTec_action_try_again

Result Screen

Novo identificadorAntiga tag do arquivo XML
resultUploadMessageFaceTec_result_facescan_upload_message
resultSuccessMessageFaceTec_result_success_message

Feedback

Novo identificadorAntiga tag do arquivo XML
feedbackCenterFaceFaceTec_feedback_center_face
feedbackFaceNotFoundFaceTec_feedback_face_not_found
feedbackFaceNotLookingStraightAheadFaceTec_feedback_face_not_looking_straight_ahead
feedbackFaceNotUprightFaceTec_feedback_face_not_upright
feedbackHoldSteadyFaceTec_feedback_hold_steady
feedbackMovePhoneAwayFaceTec_feedback_move_phone_away
feedbackMovePhoneCloserFaceTec_feedback_move_phone_closer
feedbackMovePhoneToEyeLevelFaceTec_feedback_move_phone_to_eye_level
feedbackUseEvenLightingFaceTec_feedback_use_even_lighting
feedbackFrameYourFaceFaceTec_presession_frame_your_face
feedbackPositionFaceStraightInOvalFaceTec_presession_position_face_straight_in_oval
feedbackHoldSteady1FaceTec_presession_hold_steady_1
feedbackHoldSteady2FaceTec_presession_hold_steady_2
feedbackHoldSteady3FaceTec_presession_hold_steady_3
feedbackRemoveDarkGlassesFaceTec_presession_remove_dark_glasses
feedbackNeutralExpressionFaceTec_presession_neutral_expression
feedbackConditionsTooBrightFaceTec_presession_conditions_too_bright
feedbackBrightenYourEnvironmentFaceTec_presession_brighten_your_environment