Start using packagecloud in minutes
Join thousands of developers using packagecloud to distribute software securely, consistently, and affordably.
README
last updated: Thu 04/17/25 at 07:56:36 PM bylucas-yupistudios
BioPass ID Face Capture SDK
Latest Version
April 17, 2025 - [v5.0.2]
Table of Contents
Quick Start Guide
First, you will need a license key to use the SDK. To get your license key contact us through our website BioPass ID.
Check out our official documentation for more in depth information on BioPass ID.
1. Prerequisites
- iOS version: 15.0 or higher
- Swift: 5.0.0
- CocoaPods
- Info.plist
Add two rows to the ios/Info.plist:
- one with the key Privacy - Camera Usage Description and a usage description.
- and one with the key Privacy - Photo Library Usage Description and a usage description.
Or in text format add the key:
<key>NSCameraUsageDescription</key>
<string>Your camera usage description</string>
Privacy Manifest File.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeOtherUserContent</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
</dict>
</array>
</dict>
</plist>
2. Installation
With XCFramework Folder
Here you can find the latest releases. Download BioPassID.zip and unzip, then add the .xcframework folder to your project.
- Select your target;
- Click in the general tab;
- Go to the Frameworks, libraries and embedded content group;
- Drag and drop the xcframework folder to add to your project.
<!--
With Swift Package Manager
Clone the Package repository:
git clone https://github.com/yupistudios/BioPassID-swift-package
- Go to the XCode project;
- Access the menu File > Add Packages;
- In the window click in the button Add Local... and select the folder;
- Select your target;
- Click in the general tab;
- Go to the Frameworks, libraries and embedded content group;
- Click in the plus button;
- Select the BioPassID library and click the Add button.
-->
3. How to use
In SwiftUI
To call BioPassID inside a SwiftUI View is as easy as follow:
import BioPassID
import SwiftUI
@main
struct MyApp: App
// instantiate the FaceConfig
var config: FaceConfig!
@State var imageFace: UIImage? = nil
@State var isPresented = false
init()
config = FaceConfig()
// set your license key
config.licenseKey = "your-license-key"
// you can define a custom Callback to receive the Face image
func setImage(face: UIImage)
print("Face: ", face)
imageFace = face
func setBase64(base64: String)
print("Base64: ", base64)
func setAtributes(attributes: FaceAttributes)
print("atributes : \(attributes.faceProp)")
var body: some Scene
WindowGroup
NavigationView
VStack
Text("BioPass ID Face SDK")
.frame(maxHeight: .infinity, alignment: .top)
Image(uiImage: self.imageFace!)
.resizable()
.frame(width: 400, height: 400)
Button
isPresented = true
label:
Text("Open Face")
.fullScreenCover(isPresented: $isPresented)
FaceView(with: config, onFaceCapture: faceImage , attributes in
//attributes returned only when liveness.enabled = true
setImage(face: faceImage.image)
setBase64(base64: faceImage.imageBase64)
if(attributes != nil)
setAtributes(attributes: attributes!)
, onFaceDetected: attributes in
//attributes returned only when liveness.enabled = true
setAtributes(attributes: attributes)
)
.frame(maxHeight: .infinity, alignment: .top)
In UIKit
Example as a Fullscreen Modal:
import BioPassID
class MyAppViewController: UIViewController
// Pulling default settings
var faceConfig = FaceConfig()
faceConfig.licenseKey = "your-license-key"
// Instantiates the CameraView from BioPassID
lazy var bioPassCameraView = FaceView(with: config, onFaceCapture: faceImage, atributes in
//attributes returned only when liveness.enabled = true
self.handleCallback(image: faceImage.image, atributes: atributes)
self.handleCallbackBase64(image: faceImage.imageBase64, atributes: atributes)
, onFaceDetected: atributes in
//attributes returned only when liveness.enabled = true
self.handleCallbackAtributes(atributes: atributes)
)
override func viewDidLoad()
super.viewDidLoad()
let contentView = UIHostingController(rootView: bioPassCameraView)
self.present(contentView, animated: true, completion: nil)
func handleCallback(image: UIImage, atributes: FaceAttributes)
print("App callback")
print("FACE_LOG: print UIImage")
print(image)
print(atributes)
func handleCallbackBase64(base64: Stirng, atributes: FaceAttributes)
print("App callback")
print("FACE_LOG: print Base64")
print(base64)
print(atributes)
func handleCallbackAtributes( atributes: FaceAttributes)
print("App callback")
print("FACE_LOG: print Atributes")
print(atributes)
Example as a SubView:
import BioPassID
class MyAppViewController: UIViewController
var faceConfig = FaceConfig()
faceConfig.licenseKey = "your-license-key"
override func viewDidLoad()
super.viewDidLoad()
let bioPassCameraView = FaceView(with: config, onFaceCapture: faceImage, attributes in
setImage(face: faceImage.image!)
setBase64(base64: faceImage.imageBase64!)
setAtributes(attributes: attributes!)
, onFaceDetected: attributes in
setAtributes(attributes: attributes)
)
let contentView = UIHostingController(rootView: bioPassCameraView)
addChild(contentView)
view.addSubview(contentView.view)
setupConstraints(contentView: contentView)
(...)
fileprivate func setupConstraints(contentView: UIHostingController<CameraView>)
contentView.view.translatesAutoresizingMaskIntoConstraints = false
contentView.view.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
contentView.view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
contentView.view.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
contentView.view?.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
4. LicenseKey
First, you will need a license key to use the SDK. To get your license key contact us through our website BioPass ID.
To use Face SDK you need a license key. To set the license key needed is simple as setting another attribute. Simply doing:
var config = FaceConfig()
config.licenseKey = "your-license-key"
5. FaceCallback
You can set a custom callback to receive the captured image. Note: FaceAttributes will only be available if livenes mode is enabled You can write you own callback following this example:
FaceView(with: config, onFaceCapture: faceImage, attributes in
setImage(face: faceImage.image!)
setBase64(base64: faceImage.imageBase64!)
setAtributes(attributes: attributes!)
, onFaceDetected: attributes in
setAtributes(attributes: attributes)
)
FaceImage
| Name | Type | Description | | ----------- | ------- | --------------------------------------- | | image | UIImage | Image captured in UIImage format | | imageBase64 | String | Image captured in base64 string format |
FaceAttributes
| Name | Type | Description | | ----------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | faceProp | Float | Proportion of the area occupied by the face in the image, in percentage | | faceWidth | Int | Face width, in pixels | | faceHeight | Int | Face height, in pixels | | ied | Int | Distance between left eye and right eye, in pixels | | bbox | CGRect | Face bounding box | | rollAngle | Float | The Euler angle X of the head. Indicates the rotation of the face about the axis pointing out of the image. Positive z euler angle is a counter-clockwise rotation within the image plane | | pitchAngle | Float | The Euler angle X of the head. Indicates the rotation of the face about the horizontal axis of the image. Positive x euler angle is when the face is turned upward in the image that is being processed | | yawAngle | Float | The Euler angle Y of the head. Indicates the rotation of the face about the vertical axis of the image. Positive y euler angle is when the face is turned towards the right side of the image that is being processed | | averageLightIntensity | Float | The average intensity of the pixels in the image |
6. Face detection
The SDK supports 2 types of facial detection, below you can see their description and how to use them:
Basic face detection
A simpler facial detection, supporting face centering and proximity. This is the SDK's default detection. See FaceDetectionOptions to see what settings are available for this functionality. Note: For this functionality to work, liveness mode and continuous capture must be disabled. See below how to use:
var config = FaceConfig()
config.licenseKey = "your-license-key"
config.liveness.enabled = false // liveness mode must be disabled. This is the default value
config.continuousCapture.enabled = false // continuous capture must be disabled. This is the default value
config.faceDetection.enabled = true // face detection must be enable
config.faceDetection.autoCapture = true
config.faceDetection.multipleFacesEnabled = false
config.faceDetection.timeToCapture = 3000 // time in milliseconds
config.faceDetection.maxFaceDetectionTime = 60000 // time in milliseconds
config.faceDetection.scoreThreshold = 0.5
Liveness face detection
More accurate facial detection supporting more features beyond face centering and proximity. Ideal for those who want to have more control over facial detection. See FaceLivenessDetectionOptions to see what settings are available for this functionality. Note: This feature only works with the front camera. See below how to use:
var config = FaceConfig()
config.licenseKey = "your-license-key"
config.liveness.enabled = true
config.liveness.debug = false
config.liveness.timeToCapture = 3000 // time in milliseconds
config.liveness.maxFaceDetectionTime = 60000 // time in milliseconds
config.liveness.minFaceProp = 0.1
config.liveness.maxFaceProp = 0.4
config.liveness.minFaceWidth = 150
config.liveness.minFaceHeight = 150
config.liveness.ied = 90
config.liveness.bboxPad = 20
config.liveness.faceDetectionThresh = 0.5
config.liveness.rollThresh = 4.0
config.liveness.pitchThresh = 4.0
config.liveness.yawThresh = 4.0
config.liveness.tooDarkThresh = 50
config.liveness.tooLightThresh = 170
config.liveness.faceCentralizationThresh = 0.05
7. Continuous capture
You can use continuous shooting to capture multiple frames at once. Additionally, you can set a maximum number of frames to be captured using maxNumberFrames. As well as capture time with timeToCapture. Note: Facial detection does not work with continuous capture. Using continuous capture is as simple as setting another attribute. Simply by doing:
var config = FaceConfig()
config.licenseKey = "your-license-key"
config.liveness.enabled = false // liveness mode must be disabled. This is the default value
config.continuousCapture.enabled = true
config.continuousCapture.timeToCapture = 1000 // capture every frame per second, time in millisecond
config.continuousCapture.maxNumberFrames = 40
FaceConfig
You can configure BioPassID Camera, Styles and Texts through FaceConfig protocol, either by creating your custom implementation of it or using DefaultFaceConfig() and then changing specific properties like below:
FaceConfig
| Name | Type | Default value | | ------------------ | ---------------------------- | ----------------------------- | | licenseKey | String | "" | | resolutionPreset | FaceResolutionPreset | FaceResolutionPreset.MEDIUM | | lensDirection | FaceCameraLensDirection | FaceCameraLensDirection.FRONT | | imageFormat | FaceImageFormat | FaceImageFormat.JPEG | | flashEnabled | Bool | false | | fontFamily | String | facesdkopensansbold | | liveness | FaceLivenessDetectionOptions | | | continuousCapture | FaceContinuousCaptureOptions | | | faceDetection | FaceDetectionOptions | | | mask | FaceMaskOptions | | | titleText | FaceTextOptions | | | loadingText | FaceTextOptions | | | helpText | FaceTextOptions | | | feedbackText | FaceFeedbackTextOptions | | | backButton | FaceButtonOptions | | | flashButton | FaceFlashButtonOptions | | | switchCameraButton | FaceButtonOptions | | | captureButton | FaceButtonOptions | |
FaceContinuousCaptureOptions
| Name | Type | Default value | | --------------- | ---- | ---------------------------- | | enabled | Bool | false | | timeToCapture | Int | 1000 // time in milliseconds | | maxNumberFrames | Int | 20 |
FaceDetectionOptions
| Name | Type | Default value | | -------------------- | ----- | ----------------------------- | | enabled | Bool | true | | autoCapture | Bool | true | | multipleFacesEnabled | Bool | false | | timeToCapture | Int | 3000 // time in milliseconds | | maxFaceDetectionTime | Int | 40000 // time in milliseconds | | scoreThreshold | Float | 0.7 |
FaceLivenessDetectionOptions
| Name | Type | Default value | Description | | ------------------------ | ------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | enabled | Bool | false | Activates liveness | | debug | Bool | false | If activated, a red rectangle will be drawn around the detected faces, in addition, it will be shown in the feedback message which attribute caused an invalid face | | timeToCapture | Int | 3000 | Time it takes to perform an automatic capture, in miliseconds | | maxFaceDetectionTime | Int | 60000 | Maximum facial detection attempt time, in miliseconds | | minFaceProp | Float | 0.1 | Minimum limit of the proportion of the area occupied by the face in the image, in percentage | | maxFaceProp | Float | 0.4 | Maximum limit on the proportion of the area occupied by the face in the image, in percentage | | minFaceWidth | Int | 150 | Minimum face width, in pixels | | minFaceHeight | Int | 150 | Minimum face height, in pixels | | ied | Int | 90 | Minimum distance between left eye and right eye, in pixels | | bboxPad | Int | 20 | Padding the face's bounding box to the edges of the image, in pixels | | faceDetectionThresh | Float | 0.5 | Minimum trust score for a detection to be considered valid. Must be a number between 0 and 1, which 0.1 would be a lower face detection trust level and 0.9 would be a higher trust level | | rollThresh | Float | 4.0 | The Euler angle X of the head. Indicates the rotation of the face about the axis pointing out of the image. Positive z euler angle is a counter-clockwise rotation within the image plane | | pitchThresh | Float | 4.0 | The Euler angle X of the head. Indicates the rotation of the face about the horizontal axis of the image. Positive x euler angle is when the face is turned upward in the image that is being processed | | yawThresh | Float | 4.0 | The Euler angle Y of the head. Indicates the rotation of the face about the vertical axis of the image. Positive y euler angle is when the face is turned towards the right side of the image that is being processed | | tooDarkThresh | Int | 50 | Minimum threshold for the average intensity of the pixels in the image | | tooLightThresh | Int | 170 | Maximum threshold for the average intensity of the pixels in the image | | faceCentralizationThresh | Float | 0.05 | Threshold to consider the face centered, in percentage |
FaceMaskOptions
| Name | Type | Default value | | ----------------- | -------------- | -------------------------------------------- | | enabled | Bool | true | | type | FaceMaskFormat | FaceMaskFormat.FACE | | backgroundColor | Color | ColorUtil.hexStringToColor(hex: "#CC000000") | | frameColor | Color | Color.white | | frameEnabledColor | Color | ColorUtil.hexStringToColor(hex: "#16AC81") | | frameErrorColor | Color | ColorUtil.hexStringToColor(hex: "#E25353") |
FaceFeedbackTextOptions
| Name | Type | Default value | | --------- | ------------------------ | -------------------------- | | enabled | Bool | true | | messages | FaceFeedbackTextMessages | FaceFeedbackTextMessages() | | textColor | Color | Color.white | | textSize | CGFloat | 14 |
FaceFeedbackTextMessages
| Name | Type | Default value | | ------------------- | ------ | ----------------------------- | | noDetection | String | "No faces detected" | | multipleFaces | String | "Multiple faces detected" | | faceCentered | String | "Face centered. Do not move" | | tooClose | String | "Turn your face away" | | tooFar | String | "Bring your face closer" | | tooLeft | String | "Move your face to the right" | | tooRight | String | "Move your face to the left" | | tooUp | String | "Move your face down" | | tooDown | String | "Move your face up" | | invalidIED | String | "Invalid inter-eye distance" | | faceAngleMisaligned | String | "Misaligned face angle" | | tooDark | String | "Too dark" | | tooLight | String | "Too light" |
FaceFlashButtonOptions
| Name | Type | Default value | | -------------------- | --------------- | -------------- | | enabled | Bool | true | | backgroundColor | Int | Color.white | | buttonPadding | Int | 0 | | buttonSize | CGSize | CGSize(56, 56) | | flashOnIconOptions | FaceIconOptions | | | flashOnLabelOptions | FaceTextOptions | | | flashOffIconOptions | FaceIconOptions | | | flashOffLabelOptions | FaceTextOptions | |
FaceButtonOptions
| Name | Type | Default value | | --------------- | --------------- | ----------------------------- | | enabled | Bool | true | | backgroundColor | Color | Color.white | | buttonPadding | Int | 0 | | buttonSize | CGSize | CGSize(width: 56, height: 56) | | iconOptions | FaceIconOptions | | | labelOptions | FaceTextOptions | |
FaceIconOptions
| Name | Type | Default value | | --------- | ------ | ----------------------------- | | enabled | Bool | true | | iconFile | String | "" | | iconColor | Color | Color.black | | iconSize | CGSize | CGSize(width: 32, height: 32) |
FaceTextOptions
| Name | Type | Default value | | --------- | ------- | ------------- | | enabled | Bool | true | | content | String | "" | | textColor | Color | Color.black | | textSize | CGFloat | 14 |
FaceCameraLensDirection (enum)
| Name | | ----------------------------- | | FaceCameraLensDirection.FRONT | | FaceCameraLensDirection.BACK |
FaceImageFormat (enum)
| Name | | -------------------- | | FaceImageFormat.JPEG | | FaceImageFormat.PNG |
FaceMaskFormat (enum)
| Name | | ------------------------ | | FaceScreenShape.FACE | | FaceScreenShape.SQUARE | | FaceScreenShape.ELLIPSE |
FaceResolutionPreset (enum)
| Name | Resolution | | ------------------------------ | -------------------------------- | | FaceResolutionPreset.LOW | 240p (320x240) | | FaceResolutionPreset.MEDIUM | 480p (720x480) | | FaceResolutionPreset.HIGH | 720p (1280x720) | | FaceResolutionPreset.VERYHIGH | 1080p (1920x1080) | | FaceResolutionPreset.ULTRAHIGH | 2160p (3840x2160) | | FaceResolutionPreset.MAX | The highest resolution available |
How to change font family
To add the font files to your Xcode project:
- In Xcode, select the Project navigator.
- Drag your fonts from a Finder window into your project. This copies the fonts to your project.
- Select the font or folder with the fonts, and verify that the files show their target membership checked for your app’s targets.
Then, add the "Fonts provided by application" key to your app’s Info.plist file. For the key’s value, provide an array of strings containing the relative paths to any added font files.
In the following example, the font file is inside the fonts directory, so you use fonts/RobotoMono-BoldItalic.ttf as the string value in the Info.plist file.
Finally, just set the font by passing the font name when instantiating FaceConfig.
var config = FaceConfig()
config.fontFamily = "Poppins-Bold"
How to change icon
To add icon files to your Xcode project:
- In the Project navigator, select an asset catalog: a file with a .xcassets file extension.
- Drag an image from the Finder to the outline view. A new image set appears in the outline view, and the image asset appears in a well in the detail area.
Finally, just set the icon by passing the icon name when instantiating FaceConfig.
var config = FaceConfig()
config.licenseKey = "your-license-key"
// changing back button icon
config.backButton.iconOptions.iconFile = "ic_close"
// changing flash on button icon
config.flashButton.flashOnIconOptions.iconFile = "ic_flash_on"
// changing flash off button icon
config.flashButton.flashOffIconOptions.iconFile = "ic_flash_off"
// changing switch camera button icon
config.switchCameraButton.iconOptions.iconFile = "ic_switch_camera"
// changing capture button icon
config.captureButton.iconOptions.iconFile = "ic_capture"
Changelog
v5.0.2
- Documentation update.
v5.0.1
- Documentation update.
v5.0.0
- Documentation update;
- Added new FaceImage which provides the captured image in UIImage and base64 string formats;
- Changes to FaceCallback:
- onFaceCapture now returns a FaceImage instead of a UIImage.
Breaking Changes
FaceCallback
// Before
FaceView(
with: config,
onFaceCapture: image, faceAttributes in
setImage(face: image)
setFaceAttributes(faceAttributes: faceAttributes)
,
onFaceDetected: faceAttributes in
setFaceAttributes(faceAttributes: faceAttributes)
)
// Now
FaceView(with: config, onFaceCapture: faceImage, attributes in
setImage(face: faceImage.image!)
setBase64(base64: faceImage.imageBase64!)
setAtributes(attributes: attributes!)
, onFaceDetected: attributes in
setAtributes(attributes: attributes)
)
v4.1.3
- Documentation update.
v4.1.2
- Documentation update;
- License not activated bug fix.
v4.1.1
- Documentation update.
v4.1.0
- Documentation update;
- Added new liveness mode for face detection;
- Changes to FaceCallback:
- The onFaceDetected callback has been added, which provides real-time information about the detected face;
- The onFaceCapture callback now, in addition to the captured image, also returns information about the detected face.
v4.0.1
- Documentation update.
v4.0.0
- Documentation update;
- Changing the name of FaceFeedbackTextMessages properties, see faceconfig section;
- All texts in English by default.
Breaking Changes
FaceFeedbackTextMessages
// Before
var config = FaceConfig()
config.feedbackText.messages.noFaceDetectedMessage = "Nenhuma face detectada"
config.feedbackText.messages.multipleFacesDetectedMessage = "Múltiplas faces detectadas"
config.feedbackText.messages.detectedFaceIsCenteredMessage = "Mantenha o celular parado"
config.feedbackText.messages.detectedFaceIsTooCloseMessage = "Afaste o rosto da câmera"
config.feedbackText.messages.detectedFaceIsTooFarMessage = "Aproxime o rosto da câmera"
config.feedbackText.messages.detectedFaceIsOnTheLeftMessage = "Mova o celular para a direita"
config.feedbackText.messages.detectedFaceIsOnTheRightMessage = "Mova o celular para a esquerda"
config.feedbackText.messages.detectedFaceIsTooUpMessage = "Mova o celular para baixo"
config.feedbackText.messages.detectedFaceIsTooDownMessage = "Mova o celular para cima"
// Now
var config = FaceConfig()
config.feedbackText.messages.noDetection = "No faces detected"
config.feedbackText.messages.multipleFaces = "Multiple faces detected"
config.feedbackText.messages.faceCentered = "Face centered. Do not move"
config.feedbackText.messages.tooClose = "Turn your face away"
config.feedbackText.messages.tooFar = "Bring your face closer"
config.feedbackText.messages.tooLeft = "Move your face to the right"
config.feedbackText.messages.tooRight = "Move your face to the left"
config.feedbackText.messages.tooUp = "Move your face down"
config.feedbackText.messages.tooDown = "Move your face up"
v3.0.2
- Documentation update.
v3.0.1
- Documentation update;
- Added Privacy manifest file.
v3.0.0
- Documentation update;
- Removed faceDetectionDisabledMessage from FaceFeedbackTextMessages;
- Renamed FaceMaskFormat.ELLIPSIS to FaceMaskFormat.ELLIPSE;
- Added new score threshold functionality to FaceDetectionOptions:
- Minimum trust score for a detection to be considered valid. Must be a number between 0 and 1, which 0.1 would be a lower face detection trust level and 0.9 would be a higher trust level. Default: 0.7.
v2.1.6
- Documentation update.
v2.1.5
- Documentation update.
v2.1.4
- Documentation update.
v2.1.3
- Documentation update.
v2.1.2
- Documentation update.
v2.1.1
- Documentation update.
v2.1.0
- Implemented increased brightness in front captures;
- Documentation update.
v2.0.4
- Documentation update.
v2.0.3
- Documentation update.
v2.0.2
- Documentation update.
v2.0.1
- Documentation update;
- Added config match on image return;
- General customization and config improvements.
v2.0.0
- Documentation update;
- Refactoring in FaceConfig;
- Refactoring in UI customization functionality.
v1.2.1
- Documentation update.
v1.2.0
- Documentation update;
- Refactoring on autoCaptureTimeout:
- Now the autoCaptureTimeout is called timeToCapture.
- New feature maxFaceDetectionTime:
- It is now possible to set a maximum time that face detection will be active.
v1.1.1
- Documentation update.
v1.1.0
- Documentation update;
- New feature maxNumberFrames:
- It is now possible to set a maximum number of frames to be captured during continuous capture.
v1.0.1
- Documentation update;
- Improved license functionality.
v1.0.0
- Documentation update;
- Fix autoCaptute/Timeout;
- Fix CustomFonts feature;
- FaceCameraPreset refactoring.
v0.1.23
- Documentation update;
- New feature licenseKey;
- New feature autoCaptureTimeout;
- UI customization improvements:
- Update FaceScreenShape remove shape CAPSULE and add shape SQUARE;
- Added progress animation during face detection.
v0.1.22
- Documentation update;
- UI customization improvements:
- New option to set font;
- New option to set text size;
- New option to set icon, size and color of all buttons.
v0.1.17
- New feature face detection;
- New feature automatic capture;
- UI customization improvements;
- Configurations:
- New option to set the auto capture;
- New options to set feedback message to detected face direction.
v0.1.15
- Class name standardization;
- Configurations:
- New option to set the font;
- New option to set text color;
- New custom capture button;
- New icon capture button.
v0.1.13
- Removing API integration;
- New CaptureFormat configuration.
v0.1.10
- Added the enroll;
- Mapping critical points to show errors log.
v0.1.9
- Validation for API key;
- Add Logger class;
- Mapping critical points to show errors log.
v0.1.8
- Bug fix in view orientation;
- Face Shape corrections;
- API error handling;
- Configurations:
- Standardization adjustments.
v0.1.7
- Liveness Detection implementation;
- Configurations:
- Added sets to styles and strings attributes;
- Camera Service update to capture continous pictures;
- Removed the unused attributes.
v0.1.6
- Refactoring APIService for async/await functions;
- Configurations:
- Refactoring APIKey type;
- Custom overlay (color and opacity).
v0.1.5
- ICAO, Spoofing and APIKey variables added to config;
- BioPassIDEvent modified to return photo and response from ICAO and Spoofing endpoints;
- APIService class for handling HTTP requests;
- Configured endpoints:
- Check ICAO;
- Face Spoof.
v0.1.4
- Layout:
- update view camera.
- Configurations:
- return config object from static method in BioPassIDConfigPreset class;
- add liveness detection and face detection config.
- Styles:
- colors now receive a string as a parameter.
- Bugfix:
- photo confirmation button now makes proper navigation in deployment using NavigationLink.
v0.1.3
- Configurations:
- enable and disable flash button display;
- set as default whether flash starts on or off.
- Styles:
- custom styles for buttons and text in the confirmation view.
v0.1.2
- Swift Package Manager instalation;
- Update .framework repository;
- Configurations:
- New face Shape;
- Default Camera position;
- Show Flash Button.
v0.1.1
- Camera View capture, preview and callback function;
- Customizations for styles and texts;
- Distribution with cocoapods and framework file;
- Usage Examples for SwiftUI and UIKit.