Skip to main content

Kiosk mode features

Kiosk mode is used for building iPad apps where iPad is embedded into Aila frame, where it is positioned in a landscape orientation.

Initialize IncdOnboarding SDK

Add the following line of code to your AppDelegate class:

IncdOnboardingManager.shared.initIncdOnboarding(url: url, apiKey: apiKey)

url and apiKey will be provided to you by Incode. If you're running the app on a simulator, please set the testMode parameter to true.

Kiosk 1:N Face Login - Identify a user

1:N Face login is suitable if you would like to identify a user by doing a face scan. This will do a face match comparison across your whole user database and check if the face corresponds to any of the approved users.

To execute 1:N Face Login call startFaceLogin method:

IncdOnboardingManager.shared.startKioskLogin() { selfieScanResult, firstName in
guard let loginResult = selfieScanResult.faceLoginResult else {
// Some error occured
print(selfieScanResult.error)
return
}

if loginResult.success == true {
// Face auth successful
let customerUUID = loginResult.customerUUID
let token = loginResult.token
let interviewId = loginResult.interviewId
} else {
if selfieScanResult.spoofAttempt == true {
// Liveness failed
} else {
// User's face not found
}
}
}

Face Login result

Face Login result will have SelfieScanResult and firstName if there is a name associated to this user, otherwise firstName will be nil.

Resulting SelfieScanResult object will have:

  • faceLoginResult - FaceLoginResult object that contains:
    • success - True if face login was successful, false otherwise.
    • customerUUID - Customer UUID of the matched user, nil otherwise.
    • token - Customer token of the matched user, nil oterhwise.
    • interviewId - Session interviewId from which the user got approved.
    • interviewToken - Session interviewToken which was used during user approval.
    • transactionId - Transaction ID of the face login attempt.
  • spoofAttempt - Specifies if it was a spoof attempt or not
  • image - Selfie image taken during Selfie scan step
  • error - SelfieScanError that describes the error that happened during face login

Kiosk flow - Create an account for unrecognized users

Kiosk flow will first try to recognize a user by performing a selfie scan, and in case user is recognized the flow will end and onKioskFlowCompleted method of the delegate will be called.

If User isn't recognized, new onboarding session is created and user will be asked to scan his ID, after which a face math comparions will be performed between the photo fromt the ID and Selfie. Afterwards, user approval will be performed and result will be returned as KioskFlowResult via onKioskFlowCompleteddelegate method.

IncdOnboardingManager.shared.startKioskFlow(delegate: self)

As the user is going through the steps, these methods of the delegate will be called:

  /**
Called when user dismisses flow.
*/
func userCancelledSession()

/**
Called when selfie scan is completed
*/
func onSelfieScanCompleted(_ result: SelfieScanResult?)

/**
Called when Kiosk flow is completed
*/
func onKioskFlowCompleted(_ result: KioskFlowResult)

/**
Called when ID front scan is completed
*/
func onIdFrontCompleted(success: Bool)

/**
Called when ID back scan is completed
*/
func onIdBackCompleted(success: Bool)

/**
Called when ID is processed
*/
func onIdProcessed(success: Bool, ocrData: OmniGetOCRDataResponse?)

/**
Called when face match is performed
*/
func onFaceMatchCompleted(success: Bool)

/**
Called when some error occured during Kiosk flow
See IncdFlowError documentation for specific error descriptions
*/
func onKioskError(_ error: IncdFlowError)
}

Kiosk flow result

Resulting KioskFlowResult object will have:

  • success - True if flow was successful, false otherwise.
  • customerUUID - Id of the user. WIll be available only if the flow is completed successfully, nil otherwise.
  • token - Access token. WIll be available only if the flow is completed successfully, nil otherwise.
  • name - Name of the user. WIll be available only if the flow is completed successfully, nil otherwise.
  • existingUser - Boolean indicator if the user was already in the database, or new user was created.