DOT iOS Face 6.0.0
This guide describes how to migrate DOT iOS Face version 5.x to version 6.0.0. Only the most important changes are highlighted in this guide. For more details, see the iOS sample.
Migration Steps
FaceAutoCaptureViewController component
- Added
FaceAutoCaptureConfiguration.QualityAttributeThresholds
class which is using Builder pattern. - Replaced
IcaoQualityProvider
,MatchingQualityProvider
andPassiveLivenessQualityProvider
provider withFaceAutoCaptureConfiguration.QualityAttributeThresholdPresets
. - It is possible to create new
FaceAutoCaptureConfiguration.QualityAttributeThresholds
, use one of the presets fromFaceAutoCaptureConfiguration.QualityAttributeThresholdPresets
as is, or modify one of the presets fromFaceAutoCaptureConfiguration.QualityAttributeThresholdPresets
.
Before
// Create new thresholds
let qualityAttributes = Set([try! QualityAttribute(id: .faceConfidence, targetRange: try! .init(min: 0.2, max: 1.0), strictRange: try! .init(min: 0.2, max: 1.0))])
let configuration = FaceAutoCaptureConfiguration(qualityAttributes: qualityAttributes)
// Use presets
let icaoQualityAttributes = IcaoQualityProvider().getQualityAttributes()
let matchingQualityAttributes = MatchingQualityProvider().getQualityAttributes()
let passiveLivenessQualityAttributes = PassiveLivenessQualityProvider().getQualityAttributes()
// Modify presets
var qualityAttributes = PassiveLivenessQualityProvider().getQualityAttributes()
qualityAttributes.insert(try QualityAttribute(id: .faceConfidence, targetRange: try .init(min: 0.3, max: 1.0), strictRange: try .init(min: 0.3, max: 1.0))) // modify confidence validation threshold
qualityAttributes.insert(try QualityAttribute(id: .sharpness, targetRange: try .init(min: 0, max: 1.0), strictRange: try .init(min: 0, max: 1.0))) // remove sharpness validation threshold
qualityAttributes.insert(try QualityAttribute(id: .glassStatus, targetRange: try .init(min: 0, max: 0.5), strictRange: try .init(min: 0, max: 0.5))) // add glasses presence validation threshold
let configuration = FaceAutoCaptureConfiguration(qualityAttributes: qualityAttributes)
After
// Create new thresholds
let qualityAttributeThresholdsBuilder = FaceAutoCaptureConfiguration.QualityAttributeThresholds.Builder()
try qualityAttributeThresholdsBuilder.minConfidence(.init(value: 0.2))
let qualityAttributeThresholds = qualityAttributeThresholdsBuilder.build()
let configuration = FaceAutoCaptureConfiguration(qualityAttributeThresholds: qualityAttributeThresholds)
// Use presets
let icaoQualityAttributeThresholds = FaceAutoCaptureConfiguration.QualityAttributeThresholdPresets.icao.build()
let standardQualityAttributeThresholds = FaceAutoCaptureConfiguration.QualityAttributeThresholdPresets.standard.build()
let passiveLivenessQualityAttributeThresholds = FaceAutoCaptureConfiguration.QualityAttributeThresholdPresets.passiveLiveness.build()
let configuration = FaceAutoCaptureConfiguration(qualityAttributeThresholds: standardQualityAttributeThresholds)
// Modify presets
let qualityAttributeThresholdsBuilder = FaceAutoCaptureConfiguration.QualityAttributeThresholdPresets.passiveLiveness
try qualityAttributeThresholdsBuilder
.minConfidence(.init(value: 0.3)) // modify confidence validation threshold
.minSharpness(nil) // remove sharpness validation threshold
.maxGlassesPresenceScore(.init(value: 0.5)) // add glasses presence validation threshold
let qualityAttributeThresholds = qualityAttributeThresholdsBuilder.build()
let configuration = FaceAutoCaptureConfiguration(qualityAttributeThresholds: qualityAttributeThresholds)
- Removed check animation at the end of the process, removed
FaceAutoCaptureConfiguration.isCheckAnimationEnabled
. - Replaced delegate method
faceAutoCaptureViewController(... stepChanged captureStepId: CaptureStepId, with detectedFace: DetectedFace?)
withfaceAutoCaptureViewController(... processed detection: FaceAutoCaptureDetection)
.CaptureStepId
is no longer available. - Replaced delegate method
faceAutoCaptureViewController(... captured detectedFace: DetectedFace)
withfaceAutoCaptureViewController(... captured result: FaceAutoCaptureResult)
. - Added delegate method
faceAutoCaptureViewControllerCandidateSelectionStarted(_ viewController: FaceAutoCaptureViewController)
.
Before
func faceAutoCaptureViewController(_ viewController: FaceAutoCaptureViewController, stepChanged captureStepId: CaptureStepId, with detectedFace: DetectedFace?) {
// Handle detection data after internal auto capture change
}
func faceAutoCaptureViewController(_ viewController: FaceAutoCaptureViewController, captured detectedFace: DetectedFace) {
// Handle result
}
After
func faceAutoCaptureViewController(_ viewController: FaceAutoCaptureViewController, processed detection: FaceAutoCaptureDetection) {
let detectedFace = detection.detectedFace
// Handle detection data after internal auto capture change
}
func faceAutoCaptureViewController(_ viewController: FaceAutoCaptureViewController, captured result: FaceAutoCaptureResult) {
let detectedFace = result.detectedFace
// Handle result
}
FaceSimpleCaptureViewController component
- Replaced
faceSimpleCaptureViewController(... captured detectedFace: DetectedFace)
withfaceSimpleCaptureViewController(... captured result: FaceSimpleCaptureResult)
.
Before
func faceSimpleCaptureViewController(_ viewController: FaceSimpleCaptureViewController, captured detectedFace: DetectedFace) {
// Handle result
}
After
func faceSimpleCaptureViewController(_ viewController: FaceSimpleCaptureViewController, captured result: FaceSimpleCaptureResult) {
let detectedFace = result.detectedFace
// Handle result
}
DetectionPosition.sizeToImageShorterSideRatio value
- This new value fits the definition of the face size. You get the new value by dividing the old value by 4.