Skip to main content

2.0.0 Upgrade Guide

This page shows an overview of the changes between the previous version and 2.0.0​

Changes to configuration options​

The options have been grouped in separate models.

    //Implementing Options for the View
var cameraOptions = MBCameraOptions(
targetResolution: .hd1280x720,
previewScaleType: .fit,
cameraPosition: .front
)

var options = MBCaptureSessionOptions(
autoCaptureEnabled: true,
numberOfFrameToCollect: 3,
timeBeforeAutomaticCapture: 4,
isDebugging: false,
payloadOptimization: false,
cameraQuality: cameraOptions
)
self.mbCaptureSessionView = MBCaptureSessionView(options: options)

// Implementing Options for the View Controller
var cameraOptions = MBCameraOptions(
targetResolution: .hd1280x720,
previewScaleType: .fit,
cameraPosition: .front
)

var options = MBCaptureSessionOptions(
autoCaptureEnabled: true,
numberOfFrameToCollect: 3,
timeBeforeAutomaticCapture: 4,
isDebugging: false,
payloadOptimization: false,
cameraQuality: cameraOptions
)

var cameraPermissions = MBCameraPermissionAlert(
title: "To continue the app need access for settings!",
message: "Go to Settings?",
settingText: "Settings",
cancelText: "Cancel"
)

var faceStatusTexts = MBFaceStatusTexts(
faceTooFarAway: "Face too far away",
faceTooFarUp: "Face too far up",
faceTooFarDown: "Face too far down",
faceTooFarLeft: "Face too far left",
faceTooFarRight: "Face too far right",
faceTooClose: "Face too close",
faceNotFound: "Face not found",
tooManyFaces: "Too many faces",
validFace: "Valid face"
)

var textLocalizations = MBTextLocalizations(
countdownLabelText: "Hold Still",
faceStatusTexts: faceStatusTexts,
cameraPermissionAlert: cameraPermissions
)

var style = MBUIOptions(
showProgressBar: false,
showFaceStatusLabel: false,
showCountdownTimerLabel: false,
presentedDismissButtonEnabled: false,
textLocalizations: textLocalizations
)
self.viewContoller = MBCaptureSessionViewController(with: options, style: style)

Changes to delegates for callbacks and events​

The delegates have been divided into separate interfaces in order to facilitate more customization and expanding functionality.

//Implementing View

public protocol MBCaptureSessionDelegate {
/**
Called when the capture session finishes successfully.
- Parameters:
- result: The result of the capture session that includes the captured data.
*/
func onSuccess(result: MBCaptureSessionResult)

/**
Called when the capture session encounters an error.
- Parameters:
- error: An enumeration representing the specific error that occurred.
*/
func onFailure(error: MBCaptureSessionError)
/**
Called when the capture session changes state.
- Parameters:
- stateEnum: An enumeration representing the current state of the capture session
*/
func onStateChanged(captureState: MBCaptureState)
}

public protocol MBOnValidatingDelegate {
/**
Called everytime a camera frame is processed during the validation stage of the capture process.
- Parameters:
- faceStatus: An object describing if the face is valid with regards to the constraints
set for the face capture process.
*/
func onValidating(_ faceStatus: MBFaceStatus)
}

public protocol MBCountDownDelegate {
/**
Called every second while the countdown is active
- Parameters:
- timeCounter: The current time remaining in seconds.
*/
func onCountDown(timeCounter: Int)
}

public protocol MBCaptureProgressDelegate {
/**
Called to provide updates on the progress of the capture process
- Parameters:
- captureProgressCounter: A float value indicating the current progress of the capture process. The value is in the range [0.0, 1.0]
*/
func onCaptureProgress(captureProgressCounter: Float)
}


//Implementing ViewController
public protocol MBCaptureSessionVCDelegate {
/**
Called when the capture session finishes successfully.
- Parameters:
- result: The result of the capture session that includes the captured data.
*/
func onSuccess(result: MBCaptureSessionResult)
/**
Called when the capture session encounters an error.
- Parameters:
- error: An enumeration representing the specific error that occurred.
*/
func onFailure(error: MBCaptureSessionError)
/**
Called when the capture session changes state.
- Parameters:
- stateEnum: An enumeration representing the current state of the capture session
*/
func onStateChanged(stateEnum: MBCaptureState)
/**
Called when the view controller is dismissed using the on screen dismiss button.
*/
func onPresentedDismissTapped()
}

Example Implementation​

// Implementing View
class ExampleViewController: MBCaptureSessionDelegate, MBOnValidatingDelegate, MBCountDownDelegate, MBCaptureProgressDelegate {
private let mbCaptureSessionView: MBCaptureSessionView

public init() {
var cameraOptions = MBCameraOptions(
targetResolution: .hd1280x720,
previewScaleType: .fit,
cameraPosition: .front
)

var options = MBCaptureSessionOptions(
autoCaptureEnabled: true,
numberOfFrameToCollect: 3,
timeBeforeAutomaticCapture: 4,
isDebugging: false,
payloadOptimization: false,
cameraQuality: cameraOptions
)
self.mbCaptureSessionView = MBCaptureSessionView(options: options)
}

func onSuccess(result: MBCaptureSessionResult) { }

func onFailure(error: MBCaptureSessionError) { }

func onStateChanged(captureState: MBCaptureState) { }

func onValidating(_ faceStatus: DetectedFaceStatus) { }

func onCountDown(timeCounter: Int) { }

func onCaptureProgress(captureProgressCounter: Float) { }
}

// Implementing View Controller
class ExampleViewController: UIViewController, MBCaptureSessionVCDelegate {
var viewContoller: MBCaptureSessionViewController

init() {
var cameraOptions = MBCameraOptions(
targetResolution: .hd1280x720,
previewScaleType: .fit,
cameraPosition: .front
)

var options = MBCaptureSessionOptions(
autoCaptureEnabled: true,
numberOfFrameToCollect: 3,
timeBeforeAutomaticCapture: 4,
isDebugging: false,
payloadOptimization: false,
cameraQuality: cameraOptions
)

var cameraPermissions = MBCameraPermissionAlert(
title: "To continue the app need access for settings!",
message: "Go to Settings?",
settingText: "Settings",
cancelText: "Cancel"
)

var faceStatusTexts = MBFaceStatusTexts(
faceTooFarAway: "Face too far away",
faceTooFarUp: "Face too far up",
faceTooFarDown: "Face too far down",
faceTooFarLeft: "Face too far left",
faceTooFarRight: "Face too far right",
faceTooClose: "Face too close",
faceNotFound: "Face not found",
tooManyFaces: "Too many faces",
validFace: "Valid face"
)

var textLocalizations = MBTextLocalizations(
countdownLabelText: "Hold Still",
faceStatusTexts: faceStatusTexts,
cameraPermissionAlert: cameraPermissions
)

var style = MBUIOptions(
showProgressBar: false,
showFaceStatusLabel: false,
showCountdownTimerLabel: false,
presentedDismissButtonEnabled: false,
textLocalizations: textLocalizations
)
self.viewContoller = MBCaptureSessionViewController(with: options, style: style)
super.init(nibName: nil, bundle: nil)
self.viewContoller.delegate = self
}

override func viewDidLoad() { }

func onSuccess(result: MobaiBiometric.MBCaptureSessionResult) { }

func onFailure(error: MobaiBiometric.MBCaptureSessionError) { }

func onPresentedDismissTapped() { }

func onStateChanged(stateEnum: MobaiBiometric.MBCaptureState) { }
}