Skip to content

Basic UI Customization

On this page, explore the customization capabilities available for the Liveness Assessment user experience. The liveness assessment process consists of several steps, and in each step there are elements that can be customized.

Info

You can find the customization examples in the Architecture section.

Start Screen

This is the initial screen that opens once the liveness assessment process starts. It provides basic instructions on how a person can prepare for the assessment, and the Go button.

Button

For the Go button, you can customize text color, text font size, and background color:

let uiConfiguration = UIConfiguration {
    $0.setColor(.white, forItem: .OnboardingScreenStartButtonTitle)
    $0.setFont(.systemFont(ofSize: 18.0), forItem: .OnboardingScreenStartButton)
    $0.setColor(.black, forItem: .OnboardingScreenStartButtonBackground)
}

FaceSDK.service.customization.configuration = uiConfiguration
RFSUIConfiguration *uiConfiguration = [RFSUIConfiguration configurationWithBuilderBlock:^(RFSUIConfigurationBuilder * _Nonnull builder) {
    [builder setColor:[UIColor whiteColor] forItem:OnboardingScreenStartButtonTitle];
    [builder setFont:[UIFont systemFontOfSize:18.0] forItem:OnboardingScreenStartButton];
    [builder setColor:[UIColor blackColor] forItem:OnboardingScreenStartButtonBackground];
}];

RFSFaceSDK.service.customization.configuration = uiConfiguration;
val uiConfiguration = UiConfiguration.Builder()
        .setColor(CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_BACKGROUND, R.drawable.black)
        .setColor(CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_TITLE, R.color.white)
        .setFont(CustomizationFont.ONBOARDING_SCREEN_START_BUTTON, R.font.roboto)
        .build()

FaceSDK.Instance().customization.setUiConfiguration(uiConfiguration)
UiConfiguration uiConfiguration = new UiConfiguration.Builder()
        .setColor(CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_BACKGROUND, R.drawable.black)
        .setColor(CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_TITLE, R.color.white)
        .setFont(CustomizationFont.ONBOARDING_SCREEN_START_BUTTON, R.font.roboto)
        .build();

FaceSDK.Instance().getCustomization().setUiConfiguration(uiConfiguration);
var configuration: any = {}
var font = new Font()
font.size = 18

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_TITLE] = 0xffffffff
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_START_BUTTON] = font

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration = {};
var font = new Font();
font.size = 18;

configuration[CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_BACKGROUND] = 0xff000000;
configuration[CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_TITLE] = 0xffffffff;
configuration[CustomizationFont.ONBOARDING_SCREEN_START_BUTTON] = font.toJson();

FaceSDK.setUiConfiguration(configuration);
var configuration: any = {}
var font = new Font()
font.size = 18

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_TITLE] = 0xffffffff
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_START_BUTTON] = font

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration: any = {}
var font = new Font()
font.size = 18

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_START_BUTTON_TITLE] = 0xffffffff
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_START_BUTTON] = font

FaceSDK.setUiConfiguration(configuration)

Title and Subtitle

For the title and subtitle labels, you can set color and font size:

let uiConfiguration = UIConfiguration {
    $0.setColor(.blue, forItem: .OnboardingScreenTitleLabelText)
    $0.setFont(.systemFont(ofSize: 20.0), forItem: .OnboardingScreenTitleLabel)
    $0.setColor(.green, forItem: .OnboardingScreenSubtitleLabelText)
    $0.setFont(.systemFont(ofSize: 16.0), forItem: .OnboardingScreenSubtitleLabel)
}

FaceSDK.service.customization.configuration = uiConfiguration
RFSUIConfiguration *uiConfiguration = [RFSUIConfiguration configurationWithBuilderBlock:^(RFSUIConfigurationBuilder * _Nonnull builder) {
    [builder setColor:[UIColor blueColor] forItem:OnboardingScreenTitleLabelText];
    [builder setFont:[UIFont systemFontOfSize:20.0] forItem:OnboardingScreenTitleLabel];
    [builder setColor:[UIColor greenColor] forItem:OnboardingScreenSubtitleLabelText];
    [builder setFont:[UIFont systemFontOfSize:16.0] forItem:OnboardingScreenSubtitleLabel];
}];

RFSFaceSDK.service.customization.configuration = uiConfiguration;
val uiConfiguration = UiConfiguration.Builder()
        .setColor(CustomizationColor.ONBOARDING_SCREEN_TITLE_LABEL_TEXT, R.color.blue)
        .setFont(CustomizationFont.ONBOARDING_SCREEN_TITLE_LABEL, R.font.roboto)
        .setColor(CustomizationColor.ONBOARDING_SCREEN_SUBTITLE_LABEL_TEXT, R.color.green)
        .setFont(CustomizationFont.ONBOARDING_SCREEN_SUBTITLE_LABEL, R.font.roboto)
        .build()

FaceSDK.Instance().customization.setUiConfiguration(uiConfiguration)
UiConfiguration uiConfiguration = new UiConfiguration.Builder()
        .setColor(CustomizationColor.ONBOARDING_SCREEN_TITLE_LABEL_TEXT, R.color.blue)
        .setFont(CustomizationFont.ONBOARDING_SCREEN_TITLE_LABEL, R.font.roboto)
        .setColor(CustomizationColor.ONBOARDING_SCREEN_SUBTITLE_LABEL_TEXT, R.color.green)
        .setFont(CustomizationFont.ONBOARDING_SCREEN_SUBTITLE_LABEL, R.font.roboto)
        .build();

FaceSDK.Instance().getCustomization().setUiConfiguration(uiConfiguration);
var configuration: any = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_TITLE_LABEL_TEXT] = 0xff0000ff
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_TITLE_LABEL] = font

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration = {};
var font = new Font();
font.size = 20;

configuration[CustomizationColor.ONBOARDING_SCREEN_TITLE_LABEL_TEXT] = 0xff0000ff;
configuration[CustomizationFont.ONBOARDING_SCREEN_TITLE_LABEL] = font.toJson();

FaceSDK.setUiConfiguration(configuration);
var configuration = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_TITLE_LABEL_TEXT] = 0xff0000ff
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_TITLE_LABEL] = font

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration: any = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_TITLE_LABEL_TEXT] = 0xff0000ff
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_TITLE_LABEL] = font

FaceSDK.setUiConfiguration(configuration);

Other Elements

The other Start screen customizable elements are the following:

  • Screen background: Color
  • Message text labels: Color, font size
  • Images
let uiConfiguration = UIConfiguration {
    $0.setColor(.lightGray, forItem: .OnboardingScreenBackground)
    $0.setColor(.green, forItem: .OnboardingScreenMessageLabelsText)
    $0.setFont(.systemFont(ofSize: 14.0), forItem: .OnboardingScreenMessageLabels)
    $0.setImage(UIImage(named: "custom_image_illumination")!, forItem: .OnboardingScreenIllumination)
    $0.setImage(UIImage(named: "custom_image_accessories")!, forItem: .OnboardingScreenAccessories)
    $0.setImage(UIImage(named: "custom_image_camera_level")!, forItem: .OnboardingScreenCameraLevel)
}

FaceSDK.service.customization.configuration = uiConfiguration
RFSUIConfiguration *uiConfiguration = [RFSUIConfiguration configurationWithBuilderBlock:^(RFSUIConfigurationBuilder * _Nonnull builder) {
    [builder setColor:[UIColor lightGrayColor] forItem:OnboardingScreenBackground];
    [builder setColor:[UIColor greenColor] forItem:OnboardingScreenMessageLabelsText];
    [builder setFont:[UIFont systemFontOfSize:14.0] forItem:OnboardingScreenMessageLabels];
    [builder setImage:[UIImage imageNamed:@"custom_image_illumination"] forItem:OnboardingScreenIllumination];
    [builder setImage:[UIImage imageNamed:@"custom_image_accessories"] forItem:OnboardingScreenAccessories];
    [builder setImage:[UIImage imageNamed:@"custom_image_camera_level"] forItem:OnboardingScreenCameraLevel];
}];

RFSFaceSDK.service.customization.configuration = uiConfiguration;
val uiConfiguration = UiConfiguration.Builder()
        .setColor(CustomizationColor.ONBOARDING_SCREEN_BACKGROUND, R.color.background_color)

        .setColor(CustomizationColor.ONBOARDING_SCREEN_MESSAGE_LABELS_TEXT, R.color.message_color)
        .setFont(CustomizationFont.ONBOARDING_SCREEN_MESSAGE_LABELS, R.font.roboto)

        .setImage(CustomizationImage.ONBOARDING_SCREEN_ILLUMINATION, R.drawable.custom_image_illumination)
        .setImage(CustomizationImage.ONBOARDING_SCREEN_ACCESSORIES, R.drawable.custom_image_accessories)
        .setImage(CustomizationImage.ONBOARDING_SCREEN_CAMERA_LEVEL, R.drawable.custom_image_camera_level)
        .build()

FaceSDK.Instance().customization.setUiConfiguration(uiConfiguration)
UiConfiguration uiConfiguration = new UiConfiguration.Builder()
        .setColor(CustomizationColor.ONBOARDING_SCREEN_BACKGROUND, R.color.background_color)

        .setColor(CustomizationColor.ONBOARDING_SCREEN_MESSAGE_LABELS_TEXT, R.color.message_color)
        .setFont(CustomizationFont.ONBOARDING_SCREEN_MESSAGE_LABELS, R.font.roboto)

        .setImage(CustomizationImage.ONBOARDING_SCREEN_ILLUMINATION, R.drawable.custom_image_illumination)
        .setImage(CustomizationImage.ONBOARDING_SCREEN_ACCESSORIES, R.drawable.custom_image_accessories)
        .setImage(CustomizationImage.ONBOARDING_SCREEN_CAMERA_LEVEL, R.drawable.custom_image_camera_level)
        .build();

FaceSDK.Instance().getCustomization().setUiConfiguration(uiConfiguration);
var configuration: any = {}
var font = new Font()
font.size = 14

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_MESSAGE_LABELS_TEXT] = 0xff00ff00
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_MESSAGE_LABELS] = font

configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_ACCESSORIES] = base64ImageAccessories
configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_CAMERA_LEVEL] = base64ImageCameraLevel
configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_ILLUMINATION] = base64ImageIllumination

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration = {};
var font = new Font();
font.size = 14;

configuration[CustomizationColor.ONBOARDING_SCREEN_BACKGROUND] = 0xffd3d3d3;

configuration[CustomizationColor.ONBOARDING_SCREEN_MESSAGE_LABELS_TEXT] = 0xff00ff00;
configuration[CustomizationFont.ONBOARDING_SCREEN_MESSAGE_LABELS] = font.toJson();

configuration[CustomizationImage.ONBOARDING_SCREEN_ACCESSORIES] = base64ImageAccessories;
configuration[CustomizationImage.ONBOARDING_SCREEN_CAMERA_LEVEL] = base64ImageCameraLevel;
configuration[CustomizationImage.ONBOARDING_SCREEN_ILLUMINATION] = base64ImageIllumination;

FaceSDK.setUiConfiguration(configuration);
var configuration = {}
var font = new Font()
font.size = 14

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_MESSAGE_LABELS_TEXT] = 0xff00ff00
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_MESSAGE_LABELS] = font

configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_ACCESSORIES] = base64ImageAccessories
configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_CAMERA_LEVEL] = base64ImageCameraLevel
configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_ILLUMINATION] = base64ImageIllumination

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration: any = {}
var font = new Font()
font.size = 14

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.ONBOARDING_SCREEN_MESSAGE_LABELS_TEXT] = 0xff00ff00
configuration[Enum.CustomizationFont.ONBOARDING_SCREEN_MESSAGE_LABELS] = font

configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_ACCESSORIES] = base64ImageAccessories
configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_CAMERA_LEVEL] = base64ImageCameraLevel
configuration[Enum.CustomizationImage.ONBOARDING_SCREEN_ILLUMINATION] = base64ImageIllumination

FaceSDK.setUiConfiguration(configuration)

Session

The liveness assessment session is accompanied by an animation that demonstrates how to turn one's head. A blurred image of a person's face is displayed within a circle with animated and textual hints illustrated by colored target sectors around the circle:

Hint Label

For a hint label, you can customize text color, text font, and background color:

let uiConfiguration = UIConfiguration {
    $0.setColor(.white, forItem: .CameraScreenFrontHintLabelText)
    $0.setFont(.systemFont(ofSize: 20.0), forItem: .CameraScreenHintLabel)
    $0.setColor(.black, forItem: .CameraScreenFrontHintLabelBackground)
}

FaceSDK.service.customization.configuration = uiConfiguration
RFSUIConfiguration *uiConfiguration = [RFSUIConfiguration configurationWithBuilderBlock:^(RFSUIConfigurationBuilder * _Nonnull builder) {
    [builder setColor:[UIColor whiteColor] forItem:CameraScreenFrontHintLabelText];
    [builder setFont:[UIFont systemFontOfSize:20.0] forItem:CameraScreenHintLabel];
    [builder setColor:[UIColor blackColor] forItem:CameraScreenFrontHintLabelBackground];
}];

RFSFaceSDK.service.customization.configuration = uiConfiguration;
val uiConfiguration = UiConfiguration.Builder()
        .setColor(CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_TEXT, R.color.black)
        .setFont(CustomizationFont.CAMERA_SCREEN_HINT_LABEL, R.font.roboto)
        .setColor(CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_BACKGROUND, R.drawable.notification_background_white)
        .build()

FaceSDK.Instance().customization.setUiConfiguration(uiConfiguration)
UiConfiguration uiConfiguration = new UiConfiguration.Builder()
        .setColor(CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_TEXT, R.color.black)
        .setFont(CustomizationFont.CAMERA_SCREEN_HINT_LABEL, R.font.roboto)
        .setColor(CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_BACKGROUND, R.drawable.notification_background_white)
        .build();

FaceSDK.Instance().getCustomization().setUiConfiguration(uiConfiguration);
var configuration: any = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_TEXT] = 0xffffffff
configuration[Enum.CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationFont.CAMERA_SCREEN_HINT_LABEL] = font

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration = {};
var font = new Font();
font.size = 20;

configuration[CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_TEXT] = 0xffffffff;
configuration[CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_BACKGROUND] = 0xff000000;
configuration[CustomizationFont.CAMERA_SCREEN_HINT_LABEL] = font.toJson();

FaceSDK.setUiConfiguration(configuration);
var configuration = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_TEXT] = 0xffffffff
configuration[Enum.CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationFont.CAMERA_SCREEN_HINT_LABEL] = font

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration: any = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_TEXT] = 0xffffffff
configuration[Enum.CustomizationColor.CAMERA_SCREEN_FRONT_HINT_LABEL_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationFont.CAMERA_SCREEN_HINT_LABEL] = font

FaceSDK.setUiConfiguration(configuration)

Outline and Target Sector

The colors of the face circle outline and target sector can be customized:

let uiConfiguration = UIConfiguration {
    $0.setColor(.green, forItem: .CameraScreenStrokeActive)
    $0.setColor(.green, forItem: .CameraScreenStrokeNormal)
    $0.setColor(.green.withAlphaComponent(0.35), forItem: .CameraScreenSectorTarget)
    $0.setColor(.green, forItem: .CameraScreenSectorActive)
}

FaceSDK.service.customization.configuration = uiConfiguration
RFSUIConfiguration *uiConfiguration = [RFSUIConfiguration configurationWithBuilderBlock:^(RFSUIConfigurationBuilder * _Nonnull builder) {
    [builder setColor:[UIColor greenColor] forItem:CameraScreenStrokeActive];
    [builder setColor:[UIColor greenColor] forItem:CameraScreenStrokeNormal];
    [builder setColor:[[UIColor greenColor] colorWithAlphaComponent:0.35] forItem:CameraScreenSectorTarget];
    [builder setColor:[UIColor greenColor] forItem:CameraScreenSectorActive];
}];

RFSFaceSDK.service.customization.configuration = uiConfiguration;
val uiConfiguration = UiConfiguration.Builder()
        .setColor(CustomizationColor.CAMERA_SCREEN_STROKE_ACTIVE, R.color.gray)
        .setColor(CustomizationColor.CAMERA_SCREEN_STROKE_NORMAL, R.color.black)
        .setColor(CustomizationColor.CAMERA_SCREEN_SECTOR_ACTIVE, R.color.red)
        .setColor(CustomizationColor.CAMERA_SCREEN_SECTOR_TARGET, R.color.blue)
        .build()

FaceSDK.Instance().customization.setUiConfiguration(uiConfiguration)
UiConfiguration uiConfiguration = new UiConfiguration.Builder()
        .setColor(CustomizationColor.CAMERA_SCREEN_STROKE_ACTIVE, R.color.gray)
        .setColor(CustomizationColor.CAMERA_SCREEN_STROKE_NORMAL, R.color.black)
        .setColor(CustomizationColor.CAMERA_SCREEN_SECTOR_ACTIVE, R.color.red)
        .setColor(CustomizationColor.CAMERA_SCREEN_SECTOR_TARGET, R.color.blue)
        .build();

FaceSDK.Instance().getCustomization().setUiConfiguration(uiConfiguration);
var configuration: any = {}

configuration[Enum.CustomizationColor.CAMERA_SCREEN_STROKE_ACTIVE] = 0xff00ff00
configuration[Enum.CustomizationColor.CAMERA_SCREEN_STROKE_NORMAL] = 0xff00ff00

configuration[Enum.CustomizationColor.CAMERA_SCREEN_SECTOR_TARGET] = 0xff00ff00
configuration[Enum.CustomizationColor.CAMERA_SCREEN_SECTOR_ACTIVE] = 0xff00ff00

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration = {};

configuration[CustomizationColor.CAMERA_SCREEN_STROKE_ACTIVE] = 0xff00ff00;
configuration[CustomizationColor.CAMERA_SCREEN_STROKE_NORMAL] = 0xff00ff00;

configuration[CustomizationColor.CAMERA_SCREEN_SECTOR_TARGET] = 0xff00ff00;
configuration[CustomizationColor.CAMERA_SCREEN_SECTOR_ACTIVE] = 0xff00ff00;

FaceSDK.setUiConfiguration(configuration);
var configuration = {}

configuration[Enum.CustomizationColor.CAMERA_SCREEN_STROKE_ACTIVE] = 0xff00ff00
configuration[Enum.CustomizationColor.CAMERA_SCREEN_STROKE_NORMAL] = 0xff00ff00

configuration[Enum.CustomizationColor.CAMERA_SCREEN_SECTOR_TARGET] = 0xff00ff00
configuration[Enum.CustomizationColor.CAMERA_SCREEN_SECTOR_ACTIVE] = 0xff00ff00

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration: any = {}

configuration[Enum.CustomizationColor.CAMERA_SCREEN_STROKE_ACTIVE] = 0xff00ff00
configuration[Enum.CustomizationColor.CAMERA_SCREEN_STROKE_NORMAL] = 0xff00ff00

configuration[Enum.CustomizationColor.CAMERA_SCREEN_SECTOR_TARGET] = 0xff00ff00
configuration[Enum.CustomizationColor.CAMERA_SCREEN_SECTOR_ACTIVE] = 0xff00ff00

FaceSDK.setUiConfiguration(configuration)

Loading Results

During the loading of results, a processing spinner and a text label are displayed:

The customizable elements here are the following:

  • Screen background: Color
  • Processing spinner: Color
  • Text label: Color, font size
let uiConfiguration = UIConfiguration {
    $0.setColor(.lightGray, forItem: .ProcessingScreenBackground)
    $0.setColor(.green, forItem: .ProcessingScreenProgress)
    $0.setColor(.green, forItem: .ProcessingScreenTitleLabel)
    $0.setFont(.systemFont(ofSize: 20.0), forItem: .ProcessingScreenLabel)
}

FaceSDK.service.customization.configuration = uiConfiguration
RFSUIConfiguration *uiConfiguration = [RFSUIConfiguration configurationWithBuilderBlock:^(RFSUIConfigurationBuilder * _Nonnull builder) {
    [builder setColor:[UIColor lightGrayColor] forItem:ProcessingScreenBackground];
    [builder setColor:[UIColor greenColor] forItem:ProcessingScreenProgress];
    [builder setColor:[UIColor greenColor] forItem:ProcessingScreenTitleLabel];
    [builder setFont:[UIFont systemFontOfSize:20.0] forItem:ProcessingScreenLabel];
}];

RFSFaceSDK.service.customization.configuration = uiConfiguration;
val uiConfiguration = UiConfiguration.Builder()
        .setColor(CustomizationColor.PROCESSING_SCREEN_BACKGROUND, R.color.light_gray)
        .setColor(CustomizationColor.PROCESSING_SCREEN_PROGRESS, R.color.title_color)
        .setColor(CustomizationColor.PROCESSING_SCREEN_TITLE, R.color.message_color)
        .setFont(CustomizationFont.PROCESSING_SCREEN, R.font.roboto)
        .build()

FaceSDK.Instance().customization.setUiConfiguration(uiConfiguration)
UiConfiguration uiConfiguration = new UiConfiguration.Builder()
        .setColor(CustomizationColor.PROCESSING_SCREEN_BACKGROUND, R.color.light_gray)
        .setColor(CustomizationColor.PROCESSING_SCREEN_PROGRESS, R.color.title_color)
        .setColor(CustomizationColor.PROCESSING_SCREEN_TITLE, R.color.message_color)
        .setFont(CustomizationFont.PROCESSING_SCREEN, R.font.roboto)
        .build();

FaceSDK.Instance().getCustomization().setUiConfiguration(uiConfiguration);
var configuration: any = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_PROGRESS] = 0xff00ff00

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_TITLE] = 0xff00ff00
configuration[Enum.CustomizationFont.PROCESSING_SCREEN] = font

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration = {};
var font = new Font();
font.size = 20;

configuration[CustomizationColor.PROCESSING_SCREEN_BACKGROUND] = 0xffd3d3d3;

configuration[CustomizationColor.PROCESSING_SCREEN_PROGRESS] = 0xff00ff00;

configuration[CustomizationColor.PROCESSING_SCREEN_TITLE] = 0xff00ff00;
configuration[CustomizationFont.PROCESSING_SCREEN] = font.toJson();

FaceSDK.setUiConfiguration(configuration);
var configuration = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_PROGRESS] = 0xff00ff00

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_TITLE] = 0xff00ff00
configuration[Enum.CustomizationFont.PROCESSING_SCREEN] = font

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration: any = {}
var font = new Font()
font.size = 20

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_PROGRESS] = 0xff00ff00

configuration[Enum.CustomizationColor.PROCESSING_SCREEN_TITLE] = 0xff00ff00
configuration[Enum.CustomizationFont.PROCESSING_SCREEN] = font

FaceSDK.setUiConfiguration(configuration)

Result Screen

Depending on the result, either a Success or Retry result screen will be displayed in the final step.

Success

For the Success screen, the image and a screen background color can be customized:

let uiConfiguration = UIConfiguration {
    $0.setImage(UIImage(named: "success_image")!, forItem: .SuccessScreenImage)
    $0.setColor(.lightGray, forItem: .SuccessScreenBackground)
}

FaceSDK.service.customization.configuration = uiConfiguration
RFSUIConfiguration *uiConfiguration = [RFSUIConfiguration configurationWithBuilderBlock:^(RFSUIConfigurationBuilder * _Nonnull builder) {
    [builder setImage:[UIImage imageNamed:@"success_image"] forItem:SuccessScreenImage];
    [builder setColor:[UIColor lightGrayColor] forItem:SuccessScreenBackground];
}];

RFSFaceSDK.service.customization.configuration = uiConfiguration;
val uiConfiguration = UiConfiguration.Builder()
        .setImage(CustomizationImage.SUCCESS_SCREEN_IMAGE, R.drawable.done_button)
        .setColor(CustomizationColor.SUCCESS_SCREEN_BACKGROUND, R.color.light_gray)
        .build()

FaceSDK.Instance().customization.setUiConfiguration(uiConfiguration)
UiConfiguration uiConfiguration = new UiConfiguration.Builder()
        .setImage(CustomizationImage.SUCCESS_SCREEN_IMAGE, R.drawable.done_button)
        .setColor(CustomizationColor.SUCCESS_SCREEN_BACKGROUND, R.color.light_gray)
        .build();

FaceSDK.Instance().getCustomization().setUiConfiguration(uiConfiguration);
var configuration: any = {}

configuration[Enum.CustomizationImage.SUCCESS_SCREEN_IMAGE] = base64ImageSuccess
configuration[Enum.CustomizationColor.SUCCESS_SCREEN_BACKGROUND] = 0xffd3d3d3

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration = {};

configuration[CustomizationImage.SUCCESS_SCREEN_IMAGE] = base64ImageSuccess;
configuration[CustomizationColor.SUCCESS_SCREEN_BACKGROUND] = 0xffd3d3d3;

FaceSDK.setUiConfiguration(configuration);
var configuration = {}

configuration[Enum.CustomizationImage.SUCCESS_SCREEN_IMAGE] = base64ImageSuccess
configuration[Enum.CustomizationColor.SUCCESS_SCREEN_BACKGROUND] = 0xffd3d3d3

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration: any = {}

configuration[Enum.CustomizationImage.SUCCESS_SCREEN_IMAGE] = base64ImageSuccess
configuration[Enum.CustomizationColor.SUCCESS_SCREEN_BACKGROUND] = 0xffd3d3d3

FaceSDK.setUiConfiguration(configuration)

Retry

The Retry screen provides guidelines on how to prepare for another attempt.

The reason why a person may not successfully pass the liveness assessment can be attributed to either the subject (for example, smiling, closed eyes, sunglasses, mask, headwear, etc.) or the environment (for example, problems with lighting, shadows, glare).

An image and a message label are provided for each of these cases. If the problem encompasses both cases, both images and messages will be displayed as shown in the screenshot below:

The customizable elements here are the following:

  • Title text: Color, font size
  • Subtitle text: Color, font size
  • Subject retry image
  • Environment retry image
  • Hint text: Color, font size
  • Screen background: Color
  • Try again button: Text color, text font size, background color
let uiConfiguration = UIConfiguration {
    $0.setColor(.blue, forItem: .RetryScreenTitleLabelText)
    $0.setFont(.systemFont(ofSize: 22.0), forItem: .RetryScreenTitleLabel)

    $0.setColor(.green, forItem: .RetryScreenSubtitleLabelText)
    $0.setFont(.systemFont(ofSize: 18.0), forItem: .RetryScreenSubtitleLabel)

    $0.setImage(UIImage(named: "custom_image_subject")!, forItem: .RetryScreenHintSubject)
    $0.setImage(UIImage(named: "custom_image_environment")!, forItem: .RetryScreenHintEnvironment)

    $0.setColor(.blue, forItem: .RetryScreenHintLabelsText)
    $0.setFont(.systemFont(ofSize: 16.0), forItem: .RetryScreenHintLabels)

    $0.setColor(.lightGray, forItem: .RetryScreenBackground)

    $0.setColor(.white, forItem: .RetryScreenRetryButtonTitle)
    $0.setFont(.systemFont(ofSize: 20.0), forItem: .RetryScreenRetryButton)
    $0.setColor(.black, forItem: .RetryScreenRetryButtonBackground)
}

FaceSDK.service.customization.configuration = uiConfiguration
RFSUIConfiguration *uiConfiguration = [RFSUIConfiguration configurationWithBuilderBlock:^(RFSUIConfigurationBuilder * _Nonnull builder) {
    [builder setColor:[UIColor blueColor] forItem:RetryScreenTitleLabelText];
    [builder setFont:[UIFont boldSystemFontOfSize:22.0] forItem:RetryScreenTitleLabel];

    [builder setColor:[UIColor greenColor] forItem:RetryScreenSubtitleLabelText];
    [builder setFont:[UIFont systemFontOfSize:18.0] forItem:RetryScreenSubtitleLabel];

    [builder setImage:[UIImage imageNamed:@"custom_image_subject"] forItem:RetryScreenHintSubject];
    [builder setImage:[UIImage imageNamed:@"custom_image_environment"] forItem:RetryScreenHintEnvironment];

    [builder setColor:[UIColor blueColor] forItem:RetryScreenHintLabelsText];
    [builder setFont:[UIFont systemFontOfSize:16.0] forItem:RetryScreenHintLabels];

    [builder setColor:[UIColor lightGrayColor] forItem:RetryScreenBackground];

    [builder setColor:[UIColor whiteColor] forItem:RetryScreenRetryButtonTitle];
    [builder setFont:[UIFont systemFontOfSize:20.0] forItem:RetryScreenRetryButtonTitle];
    [builder setColor:[UIColor blackColor] forItem:RetryScreenRetryButtonBackground];    
}];

RFSFaceSDK.service.customization.configuration = uiConfiguration;
val uiConfiguration = UiConfiguration.Builder()
        .setColor(CustomizationColor.RETRY_SCREEN_TITLE_LABEL_TEXT, R.color.title_color)
        .setFont(CustomizationFont.RETRY_SCREEN_TITLE_LABEL, R.font.roboto)

        .setColor(CustomizationColor.RETRY_SCREEN_SUBTITLE_LABEL_TEXT, R.color.title_color)
        .setFont(CustomizationFont.RETRY_SCREEN_SUBTITLE_LABEL, R.font.roboto)

        .setImage(CustomizationImage.RETRY_SCREEN_HINT_ENVIRONMENT, R.drawable.ic_light)
        .setImage(CustomizationImage.RETRY_SCREEN_HINT_SUBJECT, R.drawable.ic_emotions)

        .setColor(CustomizationColor.RETRY_SCREEN_HINT_LABELS_TEXT, R.color.message_color)
        .setFont(CustomizationFont.RETRY_SCREEN_HINT_LABELS, R.font.roboto)

        .setColor(CustomizationColor.RETRY_SCREEN_BACKGROUND, R.color.background_color)

        .setColor(CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_TITLE, R.color.image_color)
        .setColor(CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_BACKGROUND, R.color.title_color)
        .setFont(CustomizationFont.RETRY_SCREEN_RETRY_BUTTON, R.font.roboto)
        .build()

FaceSDK.Instance().customization.setUiConfiguration(uiConfiguration)
UiConfiguration uiConfiguration = new UiConfiguration.Builder()
        .setColor(CustomizationColor.RETRY_SCREEN_TITLE_LABEL_TEXT, R.color.title_color)
        .setFont(CustomizationFont.RETRY_SCREEN_TITLE_LABEL, R.font.roboto)

        .setColor(CustomizationColor.RETRY_SCREEN_SUBTITLE_LABEL_TEXT, R.color.title_color)
        .setFont(CustomizationFont.RETRY_SCREEN_SUBTITLE_LABEL, R.font.roboto)

        .setImage(CustomizationImage.RETRY_SCREEN_HINT_ENVIRONMENT, R.drawable.ic_light)
        .setImage(CustomizationImage.RETRY_SCREEN_HINT_SUBJECT, R.drawable.ic_emotions)

        .setColor(CustomizationColor.RETRY_SCREEN_HINT_LABELS_TEXT, R.color.message_color)
        .setFont(CustomizationFont.RETRY_SCREEN_HINT_LABELS, R.font.roboto)

        .setColor(CustomizationColor.RETRY_SCREEN_BACKGROUND, R.color.background_color)

        .setColor(CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_TITLE, R.color.image_color)
        .setColor(CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_BACKGROUND, R.color.title_color)
        .setFont(CustomizationFont.RETRY_SCREEN_RETRY_BUTTON, R.font.roboto)
        .build();

FaceSDK.Instance().getCustomization().setUiConfiguration(uiConfiguration);
var configuration: any = {}
var titlefont = new Font()
titlefont.size = 22
titlefont.style = Enum.FontStyle.BOLD

var hintFont = new Font()
hintFont.size = 16

var buttonFont = new Font()
buttonFont.size = 20

configuration[Enum.CustomizationColor.RETRY_SCREEN_TITLE_LABEL_TEXT] = 0xff00ff00
configuration[Enum.CustomizationFont.RETRY_SCREEN_TITLE_LABEL] = titlefont

configuration[Enum.CustomizationImage.RETRY_SCREEN_HINT_ENVIRONMENT] = base64ImageHintEnviroment
configuration[Enum.CustomizationImage.RETRY_SCREEN_HINT_SUBJECT] = base64ImageHintSubject

configuration[Enum.CustomizationColor.RETRY_SCREEN_HINT_LABELS_TEXT] = 0xff0000ff
configuration[Enum.CustomizationFont.RETRY_SCREEN_HINT_LABELS] = hintFont

configuration[Enum.CustomizationColor.RETRY_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_TITLE] = 0xffffffff
configuration[Enum.CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationFont.RETRY_SCREEN_RETRY_BUTTON] = buttonFont

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration = {};
var titlefont = new Font();
titlefont.size = 22;
titlefont.style = FontStyle.BOLD;

var hintFont = new Font();
hintFont.size = 16;

var buttonFont = new Font();
buttonFont.size = 20;

configuration[CustomizationColor.RETRY_SCREEN_TITLE_LABEL_TEXT] = 0xff00ff00;
configuration[CustomizationFont.RETRY_SCREEN_TITLE_LABEL] = titlefont.toJson();

configuration[CustomizationImage.RETRY_SCREEN_HINT_ENVIRONMENT] = base64ImageHintEnviroment;
configuration[CustomizationImage.RETRY_SCREEN_HINT_SUBJECT] = base64ImageHintSubject;

configuration[CustomizationColor.RETRY_SCREEN_HINT_LABELS_TEXT] = 0xff0000ff;
configuration[CustomizationFont.RETRY_SCREEN_HINT_LABELS] = hintFont.toJson();

configuration[CustomizationColor.RETRY_SCREEN_BACKGROUND] = 0xffd3d3d3;

configuration[CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_TITLE] = 0xffffffff;
configuration[CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_BACKGROUND] = 0xff000000;
configuration[CustomizationFont.RETRY_SCREEN_RETRY_BUTTON] = buttonFont.toJson();

FaceSDK.setUiConfiguration(configuration);
var configuration = {}
var titlefont = new Font()
titlefont.size = 22
titlefont.style = Enum.FontStyle.BOLD

var hintFont = new Font()
hintFont.size = 16

var buttonFont = new Font()
buttonFont.size = 20

configuration[Enum.CustomizationColor.RETRY_SCREEN_TITLE_LABEL_TEXT] = 0xff00ff00
configuration[Enum.CustomizationFont.RETRY_SCREEN_TITLE_LABEL] = titlefont

configuration[Enum.CustomizationImage.RETRY_SCREEN_HINT_ENVIRONMENT] = base64ImageHintEnviroment
configuration[Enum.CustomizationImage.RETRY_SCREEN_HINT_SUBJECT] = base64ImageHintSubject

configuration[Enum.CustomizationColor.RETRY_SCREEN_HINT_LABELS_TEXT] = 0xff0000ff
configuration[Enum.CustomizationFont.RETRY_SCREEN_HINT_LABELS] = hintFont

configuration[Enum.CustomizationColor.RETRY_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_TITLE] = 0xffffffff
configuration[Enum.CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationFont.RETRY_SCREEN_RETRY_BUTTON] = buttonFont

FaceSDK.setUiConfiguration(configuration, _ => { }, _ => { })
var configuration: any = {}
var titlefont = new Font()
titlefont.size = 22
titlefont.style = Enum.FontStyle.BOLD

var hintFont = new Font()
hintFont.size = 16

var buttonFont = new Font()
buttonFont.size = 20

configuration[Enum.CustomizationColor.RETRY_SCREEN_TITLE_LABEL_TEXT] = 0xff00ff00
configuration[Enum.CustomizationFont.RETRY_SCREEN_TITLE_LABEL] = titlefont

configuration[Enum.CustomizationImage.RETRY_SCREEN_HINT_ENVIRONMENT] = base64ImageHintEnviroment
configuration[Enum.CustomizationImage.RETRY_SCREEN_HINT_SUBJECT] = base64ImageHintSubject

configuration[Enum.CustomizationColor.RETRY_SCREEN_HINT_LABELS_TEXT] = 0xff0000ff
configuration[Enum.CustomizationFont.RETRY_SCREEN_HINT_LABELS] = hintFont

configuration[Enum.CustomizationColor.RETRY_SCREEN_BACKGROUND] = 0xffd3d3d3

configuration[Enum.CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_TITLE] = 0xffffffff
configuration[Enum.CustomizationColor.RETRY_SCREEN_RETRY_BUTTON_BACKGROUND] = 0xff000000
configuration[Enum.CustomizationFont.RETRY_SCREEN_RETRY_BUTTON] = buttonFont

FaceSDK.setUiConfiguration(configuration)

Process Management

You can control the ability to interrupt the process and choose whether to display the Start and Result screens.

Disable Interruptions

To remove the Close cross button, invoke:

let configuration = LivenessConfiguration { 
    $0.isCloseButtonEnabled = false
}

FaceSDK.service.startLiveness(
    from: viewController,
    animated: true, 
    configuration: configuration,
    onLiveness: { response in

    },
    completion: nil
)
RFSLivenessConfiguration *configuration = [RFSLivenessConfiguration configurationWithBuilder:^(RFSLivenessConfigurationBuilder * _Nonnull builder) {
    [builder setCloseButtonEnabled:NO];
}];

[RFSFaceSDK.service startLivenessFrom:self animated:YES 
                    onLiveness:^(RFSLivenessResponse * _Nonnull repsonse) {

} completion:^{

}];
val configuration = LivenessConfiguration.Builder()
            .setCloseButtonEnabled(false)
            .build()
FaceSDK.Instance().startLiveness(
    context, configuration) { livenessResponse: LivenessResponse? -> }
LivenessConfiguration configuration = new LivenessConfiguration.Builder()
            .setCloseButtonEnabled(false)
            .build();
FaceSDK.Instance().startLiveness(context, configuration, livenessResponse -> {});
FaceSDK.startLivenessWithConfig({
  "closeButtonEnabled": false
}, _ => { }, _ => { })
FaceSDK.startLivenessWithConfig({
  "closeButtonEnabled": false
});
FaceSDK.startLivenessWithConfig({
  "closeButtonEnabled": false
}, _ => { }, _ => { })
FaceSDK.startLivenessWithConfig({
  "closeButtonEnabled": false
})

Disable Start Screen

let configuration = LivenessConfiguration { 
    $0.stepSkippingMask = [.onboarding]
}

FaceSDK.service.startLiveness(
    from: viewController,
    animated: true, 
    configuration: configuration,
    onLiveness: { response in

    },
    completion: nil
)
RFSLivenessConfiguration *configuration = [RFSLivenessConfiguration configurationWithBuilder:^(RFSLivenessConfigurationBuilder  * _Nonnull builder) {
    builder.stepSkippingMask = RFSLivenessStepSkipOnboarding;
}];

[RFSFaceSDK.service startLivenessFrom:viewController
                             animated:YES
                        configuration:configuration
                           onLiveness:^(RFSLivenessResponse * _Nonnull response) {

} completion:nil];
val configuration = LivenessConfiguration.Builder()
            .setSkipStep(LivenessSkipStep.ONBOARDING_STEP)
            .build()
FaceSDK.Instance().startLiveness(
    context, configuration
) { livenessResponse: LivenessResponse? -> }
LivenessConfiguration configuration = new LivenessConfiguration.Builder()
            .setSkipStep(LivenessSkipStep.ONBOARDING_STEP)
            .build();
FaceSDK.Instance().startLiveness(context, configuration, livenessResponse -> {});
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.ONBOARDING_STEP]
}, _ => { }, _ => { })
FaceSDK.startLivenessWithConfig({
  "skipStep": [LivenessSkipStep.ONBOARDING_STEP]
});
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.ONBOARDING_STEP]
}, _ => { }, _ => { })
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.ONBOARDING_STEP]
})

Disable Result Screen

let configuration = LivenessConfiguration { 
    $0.stepSkippingMask = [.success]
}

FaceSDK.service.startLiveness(
    from: viewController,
    animated: true, 
    configuration: configuration,
    onLiveness: { response in

    },
    completion: nil
)
RFSLivenessConfiguration *configuration = [RFSLivenessConfiguration configurationWithBuilder:^(RFSLivenessConfigurationBuilder  * _Nonnull builder) {
    builder.stepSkippingMask = RFSLivenessStepSkipSuccess;
}];

[RFSFaceSDK.service startLivenessFrom:viewController
                             animated:YES
                        configuration:configuration
                           onLiveness:^(RFSLivenessResponse * _Nonnull response) {

} completion:nil];
val configuration = LivenessConfiguration.Builder()
            .setSkipStep(LivenessSkipStep.SUCCESS_STEP)
            .build()
FaceSDK.Instance().startLiveness(
    context, configuration) { livenessResponse: LivenessResponse? -> }
LivenessConfiguration configuration = new LivenessConfiguration.Builder()
            .setSkipStep(LivenessSkipStep.SUCCESS_STEP)
            .build();
FaceSDK.Instance().startLiveness(context, configuration, livenessResponse -> {});
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.SUCCESS_STEP]
}, _ => { }, _ => { })
FaceSDK.startLivenessWithConfig({
  "skipStep": [LivenessSkipStep.SUCCESS_STEP]
});
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.SUCCESS_STEP]
}, _ => { }, _ => { })
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.SUCCESS_STEP]
})

Disable Both Start and Result Screens

let configuration = LivenessConfiguration { 
    $0.stepSkippingMask = [.onboarding, .success]
}

FaceSDK.service.startLiveness(
    from: viewController,
    animated: true, 
    configuration: configuration,
    onLiveness: { response in

    },
    completion: nil
)
RFSLivenessConfiguration *configuration = [RFSLivenessConfiguration configurationWithBuilder:^(RFSLivenessConfigurationBuilder  * _Nonnull builder) {
    builder.stepSkippingMask = RFSLivenessStepSkipOnboarding | RFSLivenessStepSkipSuccess;
}];

[RFSFaceSDK.service startLivenessFrom:viewController
                             animated:YES
                        configuration:configuration
                           onLiveness:^(RFSLivenessResponse * _Nonnull response) {

} completion:nil];
val configuration = LivenessConfiguration.Builder()
            .setSkipStep(LivenessSkipStep.ONBOARDING_STEP, LivenessSkipStep.SUCCESS_STEP)
            .build()
FaceSDK.Instance().startLiveness(
    context, configuration) { livenessResponse: LivenessResponse? -> }
LivenessConfiguration configuration = new LivenessConfiguration.Builder()
            .setSkipStep(LivenessSkipStep.ONBOARDING_STEP, LivenessSkipStep.SUCCESS_STEP)
            .build();
FaceSDK.Instance().startLiveness(context, configuration, livenessResponse -> {});
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.ONBOARDING_STEP, Enum.LivenessSkipStep.SUCCESS_STEP]
}, _ => { }, _ => { })
FaceSDK.startLivenessWithConfig({
  "skipStep": [LivenessSkipStep.ONBOARDING_STEP, LivenessSkipStep.SUCCESS_STEP]
});
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.ONBOARDING_STEP, Enum.LivenessSkipStep.SUCCESS_STEP]
}, _ => { }, _ => { })
FaceSDK.startLivenessWithConfig({
  "skipStep": [Enum.LivenessSkipStep.ONBOARDING_STEP, Enum.LivenessSkipStep.SUCCESS_STEP]
})

Switch Camera Button: Face Detection

When using the Face Detection UI to capture an image, you can disable the Switch Camera button.

Note that this option is available only for the Face Detection UI. Due to security reasons, switching cameras in the Liveness Assessment module is not possible.

let configuration = FaceCaptureConfiguration {
    $0.isCameraSwitchButtonEnabled = true
}
FaceSDK.service.presentFaceCaptureViewController(from: self, animated: true, configuration: configuration1) { response in

}
RFSFaceCaptureConfiguration *configuration = [RFSFaceCaptureConfiguration configurationWithBuilder:^(RFSFaceCaptureConfigurationBuilder * _Nonnull builder) {
    builder.cameraSwitchButtonEnabled = YES;
}];
[RFSFaceSDK.service presentFaceCaptureViewControllerFrom:viewController
                                                animated:YES
                                          configuration:configuration
                                              onCapture:^(RFSFaceCaptureResponse * _Nonnull response) {

} completion:^{

}];
val configuration = FaceCaptureConfiguration.Builder().setCameraSwitchEnabled(false).build()
FaceSDK.Instance().presentFaceCaptureActivity(
    this@MainActivity, configuration
) { response: FaceCaptureResponse? -> }
FaceCaptureConfiguration configuration = new FaceCaptureConfiguration.Builder().setCameraSwitchEnabled(false).build();
FaceSDK.Instance().presentFaceCaptureActivity(MainActivity.this, configuration, (response) -> {
});
FaceSDK.presentFaceCaptureActivityWithConfig({
  cameraSwitchEnabled: false
}, _ => { }, _ => { });
FaceSDK.presentFaceCaptureActivityWithConfig({
    "cameraSwitchEnabled": false,
});
FaceSDK.presentFaceCaptureActivityWithConfig({
  cameraSwitchEnabled: false
}, function (m) { }, function (e) { });
FaceSDK.presentFaceCaptureActivityWithConfig({
  cameraSwitchEnabled: false
});