AKFaceTec


The new AKFaceTec library includes more features for recognizing the user. We recommend using it if your use case requires support for multiple ID cards.

9.7.33 🚀 Latest

The AKFaceTec library allows you to secure the user's identity through facial recognition and capture the user's ID card using FaceTec technology. This library is optional and depends on your use case.

Contact support to obtain the step for registering in the AKCore class.

Quick start


Add AKFaceTecSwift as a dependency in your Package Dependencies app.

https://github.com/Autentikar/facetec-spm

This dependency is equivalent to the AKFaceSwift library. Therefore, if you have the AKFaceSwift library as a dependency, please remove it from your Package Dependencies and replace it with AKFaceTecSwift. The implementation is the same, but the method names have changed.

Dependencies


AKFaceTecSwift depends on AKCoreSwift so you need to add AKCoreSwift as a dependency in your Package Dependecies.

AKFaceTecSwift library depends on FaceTecSDK library current version is 9.7.33. You don't need to add it as a dependency.

Set up


Initialize SDK

Before continuing, you can set up the SDK with the following code, we recommend that you do this in the AppDelegate class:

AppDelegate.swift
import AKCoreSwift
import AKFaceTecSwift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    .....
    AKCore.register(for: AKFaceTec.getProtocol(step: .yourStepProvidedBySupport))
    .....
    return true
}

This will register AKFaceTec in the AKCore class. This controller will be launched to capture the user's face or ID card. It is mandatory to register this controller in the AKCore class.

Custom Theme


You can to call FaceTecCustomization() functions for setting colors of FaceTec. For more information visit page. And set the customization in AKFaceTec.faceTecCustomization or AKFaceTec.faceTecLowLightCustomization property.

For custom loading screen use AKFaceTecCustomization() function and call to AKFaceTec.setCustomization(customization: custom). To custom view in FaceTec invoke the following code:

ViewController.swift
import AKFaceTecSwift

func autentikarCustomUI() {
    let faceCustomization = AKFaceTecCustomization()
        
    faceCustomization.backgroundColor = UIColor.your_background_color
    faceCustomization.showBackgroundImage = true | false
    faceCustomization.backgroundImage = UIImage(named: "your_background_image")
    faceCustomization.showLogo = true | false
    faceCustomization.logo =  UIImage(named: "your_logo")
    faceCustomization.activityViewColor =  UIColor.your_activity_view_color
    faceCustomization.textColor = UIColor.your_text_color
    faceCustomization.customFont = UIFont(name: "your_custom_font", size: 18)
    faceCustomization.bundleForFaceTecString = Bundle(identifier: "your_identifier")!
    faceCustomization.bundleForLocalizableString = Bundle(identifier: "your_identifier")!
        
    AKFaceTec.setCustomization(customization: faceCustomization)
        
    // If you want to customize the FaceTec screen add this code
    let faceTecCustomization = FaceTecCustomization()
    let faceTecLowLightCustomization = FaceTecCustomization()
    .....
        
    AKFaceTec.faceTecCustomization = faceTecCustomization
    AKFaceTec.faceTecLowLightCustomization = faceTecLowLightCustomization
}

FaceTec Strings


If you want to FaceTec strings in your language, you can use the bundleForFaceTecString property. This property is a Bundle type and you must add a Localizable.strings file in your project. This strings properties are:

FaceTec.strings
"FaceTec_accessibility_cancel_button" = "Cancelar";
"FaceTec_accessibility_torch_button" = "Interruptor de iluminación";
"FaceTec_accessibility_tap_guidance" = "Toque dos veces cualquier parte de la pantalla para ver indicaciones sobre cómo alinear el rostro.";

"FaceTec_accessibility_feedback_move_phone_away" = "Su rostro está demasiado cerca";
"FaceTec_accessibility_feedback_move_phone_closer" = "Su rostro está demasiado lejos";
"FaceTec_accessibility_feedback_face_too_far_left" = "Su rostro está demasiado a la izquierda";
"FaceTec_accessibility_feedback_face_too_far_right" = "Su rostro está demasiado a la derecha";
"FaceTec_accessibility_feedback_face_too_low" = "Su rostro está demasiado abajo";
"FaceTec_accessibility_feedback_face_too_high" = "Su rostro está demasiado arriba";
"FaceTec_accessibility_feedback_face_rotated_too_far_left" = "Su rostro gira demasiado a la izquierda";
"FaceTec_accessibility_feedback_face_rotated_too_far_right" = "Su rostro gira demasiado a la derecha";
"FaceTec_accessibility_feedback_face_pointing_too_far_left" = "Su rostro está demasiado inclinado hacia la izquierda";
"FaceTec_accessibility_feedback_face_pointing_too_far_right" = "Su rostro está demasiado inclinado hacia la derecha";
"FaceTec_accessibility_feedback_face_not_on_camera" = "El rostro no se ve en la cámara o está demasiado lejos";
"FaceTec_accessibility_feedback_hold_device_to_eye_level" = "Mantenga el dispositivo a la altura de los ojos";

"FaceTec_action_ok" = "ACEPTAR";
"FaceTec_action_im_ready" = "ESTOY LISTO";
"FaceTec_action_try_again" = "VOLVER A INTENTARLO";
"FaceTec_action_continue" = "CONTINUAR";
"FaceTec_action_take_photo" = "TOMAR FOTO";
"FaceTec_action_retake_photo" = "VOLVER";
"FaceTec_action_accept_photo" = "ACEPTAR";
"FaceTec_action_confirm" = "CONFIRMAR INFORMACIÓN";
"FaceTec_action_scan_nfc" = "VOLVER A ESCANEAR";
"FaceTec_action_scan_nfc_card" = "VOLVER A ESCANEAR";
"FaceTec_action_skip_nfc" = "OMITIR ESTE PASO";

"FaceTec_camera_permission_header" = "Habilite la cámara";
"FaceTec_camera_permission_message_enroll" = "Por favor, toque el botón de abajo para activar su cámara de selfis.";
"FaceTec_camera_permission_message_auth" = "La cámara está deshabilitada. Toque a continuación para editar su configuración.";
"FaceTec_camera_permission_enable_camera" = "HABILITAR LA CÁMARA";
"FaceTec_camera_permission_launch_settings" = "ABRIR LA CONFIGURACIÓN";

"FaceTec_feedback_center_face" = "Centre su rostro";
"FaceTec_feedback_face_not_found" = "Encuadre su rostro";
"FaceTec_feedback_face_not_looking_straight_ahead" = "Mire hacia el frente";
"FaceTec_feedback_face_not_upright" = "Mantenga la cabeza recta";
"FaceTec_feedback_hold_steady" = "Quédese quieto";
"FaceTec_feedback_move_phone_away" = "Apártese";
"FaceTec_feedback_move_phone_closer" = "Acérquese";
"FaceTec_feedback_move_phone_to_eye_level" = "Coloque la cámara a la altura de los ojos";
"FaceTec_feedback_use_even_lighting" = "Ilumine el rostro de forma más uniforme";

"FaceTec_idscan_type_selection_header" = "Prepárese para escanear\nsu identificación";
"FaceTec_idscan_capture_tap_to_focus_message" = "Toque la pantalla para enfocar";
"FaceTec_idscan_capture_hold_steady_message" = "Quédese quieto";
"FaceTec_idscan_capture_id_front_instruction_message" = "Anverso de su identificación";
"FaceTec_idscan_capture_id_back_instruction_message" = "Reverso de su identificación";
"FaceTec_idscan_review_id_front_instruction_message" = "Verifique sea nítida y legible";
"FaceTec_idscan_review_id_back_instruction_message" = "Verifique sea nítida y legible";
"FaceTec_idscan_ocr_confirmation_main_header" = "Revisar y confirmar";
"FaceTec_idscan_ocr_confirmation_scroll_message" = "Desplácese hacia abajo";
"FaceTec_idscan_nfc_status_disabled_message" = "Habilite el NFC\nen la configuración de su dispositivo\npara continuar";
"FaceTec_idscan_nfc_status_ready_message" = "Prepárese para escanear\nel chip de su pasaporte electrónico";
"FaceTec_idscan_nfc_card_status_ready_message" = "Prepárese para escanear\nel chip de su identificación";
"FaceTec_idscan_nfc_status_starting_message" = "Acerque el teléfono a la parte\nposterior del ePasaporte\npara escanear el chip NFC";
"FaceTec_idscan_nfc_card_status_starting_message" = "Acerque el teléfono a su identificación\npara escanear el chip NFC";
"FaceTec_idscan_nfc_status_scanning_message" = "Manténgalo quieto,\nescaneando el chip NFC";
"FaceTec_idscan_nfc_status_weak_connection_message" = "Intentemos\notro escaneo";
"FaceTec_idscan_nfc_status_finished_with_success_message" = "Escaneo de documentos\ncompletado";
"FaceTec_idscan_nfc_status_finished_with_error_message" = "No se puede leer\nel chip del pasaporte electrónico";
"FaceTec_idscan_nfc_card_status_finished_with_error_message" = "No se puede leer\nel chip de la identificación";
"FaceTec_idscan_nfc_status_skipped_message" = "Escaneo NFC\nomitido";
"FaceTec_idscan_additional_review_message" = "Se requiere\nuna verificación adicional";
"FaceTec_idscan_feedback_flip_id_to_back_message" = "Reverso de su identificación";

"FaceTec_initializing_camera" = "Protegiendo la conexión";

"FaceTec_instructions_header_ready_1" = "Prepárese para";
"FaceTec_instructions_header_ready_2" = "su videoselfie";
"FaceTec_instructions_message_ready_1" = "Encuadre su rostro en el óvalo";
"FaceTec_instructions_message_ready_2" = "Presione Estoy listo y acérquese";

"FaceTec_presession_frame_your_face" = "Encuadre su rostro en el óvalo";
"FaceTec_presession_position_face_straight_in_oval" = "Mire hacia el frente";
"FaceTec_presession_hold_steady_3" = "Manténgase quieto durante: 3";
"FaceTec_presession_hold_steady_2" = "Manténgase quieto durante: 2";
"FaceTec_presession_hold_steady_1" = "Manténgase quieto durante: 1";
"FaceTec_presession_remove_dark_glasses" = "Quítese los lentes oscuros";
"FaceTec_presession_neutral_expression" = "Expresión neutra, sin sonreír";
"FaceTec_presession_conditions_too_bright" = "Demasiada luz";
"FaceTec_presession_brighten_your_environment" = "Ilumine su entorno";

"FaceTec_result_facescan_upload_message" = "Subiendo\nel escaneo facial 3D\nencriptado";
"FaceTec_result_success_message" = "Listo";
"FaceTec_result_idscan_upload_message" = "Subiendo\nel escaneo de identificación\nencriptado";
"FaceTec_result_nfc_upload_message" = "Subiendo\nla información NFC\nencriptada";
"FaceTec_result_idscan_unsuccess_message" = "La foto de la identificación\no coincide con\el rostro del usuario";
"FaceTec_result_idscan_success_front_side_message" = "Escaneo de identificación completado";
"FaceTec_result_idscan_success_front_side_back_next_message" = "Anverso de la identificación\nescaneado";
"FaceTec_result_idscan_success_front_side_nfc_next_message" = "Anverso de la identificación\nescaneado";
"FaceTec_result_idscan_success_back_side_message" = "Escaneo de identificación completado";
"FaceTec_result_idscan_success_back_side_nfc_next_message" = "Reverso de la identificación\nescaneado";
"FaceTec_result_idscan_success_passport_message" = "Escaneo de pasaporte completado";
"FaceTec_result_idscan_success_passport_nfc_next_message" = "Pasaporte escaneado";
"FaceTec_result_idscan_success_user_confirmation_message" = "Escaneo de identificación con fotografía\ncompletado";
"FaceTec_result_idscan_success_nfc_message" = "Escaneo de identificación completado";
"FaceTec_result_idscan_success_additional_review_message" = "Captura de la fotografía de identificación\ncompletada";
"FaceTec_result_idscan_skip_or_error_nfc_message" = "Información de identificación\nsubida";
"FaceTec_result_idscan_retry_face_did_not_match_message" = "El rostro no coincide\nlo suficiente";
"FaceTec_result_idscan_retry_id_not_fully_visible_message" = "La identificación\nno es totalmente visible";
"FaceTec_result_idscan_retry_ocr_results_not_good_enough_message" = "El texto de la identificación no es legible";
"FaceTec_result_idscan_retry_id_type_not_supported_message" = "No se admite este tipo de identificación\nUtilice una identificación diferente";
"FaceTec_result_idscan_retry_barcode_not_read_message" = "No se pudo escanear el código de barras\nInténtelo de nuevo";

"FaceTec_retry_header" = "Intentémoslo otra vez";
"FaceTec_retry_subheader_message" = "Necesitamos una videoselfie más nítida";
"FaceTec_retry_instruction_message_1" = "Expresión neutra, sin sonreír";
"FaceTec_retry_instruction_message_2" = "Use una postura e iluminación ideal";
"FaceTec_retry_instruction_message_3" = "Demasiado borrosa, limpie la cámara";
"FaceTec_retry_your_image_label" = "Su selfie";
"FaceTec_retry_ideal_image_label" = "Pose ideal";

"FaceTec_front_side_upload_started" = "Subiendo\nEncriptado\nEscaneo de ID";
"FaceTec_front_side_still_uploading" = "Aún subiendo...\nConexión lenta";
"FaceTec_front_side_upload_complete_awaiting_response" = "Carga Completa";
"FaceTec_front_side_upload_complete_awaiting_processing" = "Procesando\nEscaneo de ID";
"FaceTec_back_side_upload_started" = "Subiendo\nEncriptado\nPosterior de ID";
"FaceTec_back_side_still_uploading" = "Aún subiendo...\nConexión lenta";
"FaceTec_back_side_upload_complete_awaiting_response" = "Carga Completa";
"FaceTec_back_side_upload_complete_awaiting_processing" = "Procesando\nPosterior de ID";
"FaceTec_user_confirmed_info_upload_started" = "Subiendo\nTu información";
"FaceTec_user_confirmed_info_still_uploading" = "Aún subiendo...\nConexión lenta";
"FacTec_user_confirmed_info_upload_complete_awaiting_response" = "Carga Completa";
"FacTec_user_confirmed_info_upload_complete_awaiting_processing" = "Procesando";
"FaceTec_nfc_upload_started" = "Subiendo detalles\nNFC encriptados";
"FaceTec_nfc_still_uploading" = "Aún subiendo...\nConexión lenta";
"FaceTec_nfc_upload_complete_awaiting_response" = "Carga Completa";
"FaceTec_nfc_upload_complete_awaiting_processing" = "Procesando\nDetalles NFC";
"FaceTec_skipped_NFC_upload_started" = "Subiendo detalles\nID encriptados";
"FaceTec_skipped_NFC_upload_uploading" = "Aún subiendo...\nConexión lenta";
"FaceTec_skipped_NFC_upload_complete_awaiting_response" = "Carga Completa";
"FaceTec_skipped_NFC_upload_complete_awaiting_processing" = "Procesando\nDetalles de ID";

"FaceTec_success_front_side" = "Escaneo completo";
"FaceTec_success_front_side_back_next" = "Parte Frontal ID\nEscaneando";
"FaceTec_success_front_side_NFC_next" = "Parte Frontal ID\nEscaneado";
"FaceTec_success_back_side" = "Parte Posterior ID\nEscaneado";
"FaceTec_success_back_side_NFC_next" = "Parte Posterior ID\nEscaneado";
"FaceTec_success_passport" = "Escaneo\nPasaporte Completo";
"FaceTec_success_passport_NFC_next" = "Pasaporte Escaneado";
"FaceTec_success_user_confirmation" = "Escaneo de ID\nCompleto";
"FaceTec_success_NFC" = "Escaneo de ID\nCompleto";
"FaceTec_retry_face_did_not_match" = "El rostro no coincidió";
"FaceTec_retry_ID_not_fully_visible" = "Documento\nNo completamente visible";
"FaceTec_retry_OCR_result_not_good_enogh" = "Texto de ID no legible";
"FaceTec_retry_ID_type_not_supported" = "Inconsistencia ID\nPor favor, inténtalo de nuevo";
"FaceTec_skip_or_error_NFC" = "Escaneo de ID\nCompleto";

Properties

AKFaceTecCustomization class corresponds to the preloading screen. It has the following properties:

  • backgroundColor: Set the background color of the face capture interface.
  • showBackgroundImage: Show or hide the background image (default is false).
  • backgroundImage: Set the background image (if showBackgroundImage is false this image not show).
  • showLogo: Set the visibility of the logo in the face capture interface (default is true).
  • logo: Set the logo of the face capture interface (if showLogo is false this image not show).
  • activityViewColor: Set the color of the progress bar.
  • textColor: Set the text color of the face capture interface.
  • customFont: Set the font of the face capture interface only preloading. Deprecated
  • font: Set the font of the face capture interface only preloading. New
  • bundleForFaceTecString: Set the bundle for FaceTec strings.
  • bundleForLocalizableString: The bundle for localizable string.

Texts (Localizable)


For change the texts you have to add or modify the Localizable.strings file in your project, the keys are the following:

Localizable.strings
"StartingFaceCapture" = "Starting Face Capture";
"EndingFaceCapture" = "Ending Face Capture";
"ScreenSuccessMessage" = "Confirmed\nCapture";
"ProcessingFaceCapture" = "Processing Face Capture";

"Ok" = "OK";
"NotCaptureInitAlert" = "Capture not started";
"InvalidCapture" = "Invalid capture";

"EndingCardCapture" = "Ending Card ID Capture";
"ProcessingCaptureID" = "Processing Card ID Capture";
"StartingCardCapture" = "Starting Card ID Capture";
Localizable.strings (Spanish)
"StartingFaceCapture" = "Iniciando Captura Facial";
"EndingFaceCapture" = "Finalizando Captura Facial";
"ScreenSuccessMessage" = "Captura\nConfirmada";
"ProcessingFaceCapture" = "Procesando Captura de Facial";

"Ok" = "OK";
"NotCaptureInitAlert" = "No se ha iniciado la captura";
"InvalidCapture" = "Captura inválida";

"StartingCardCapture" = "Iniciando Captura Cedula";
"ProcessingCaptureID" = "Procesando Captura de Cédula";
"EndingCardCapture" = "Finalizando Captura Cedula";