Skip to main content

Kiosk mode features

Kiosk mode is used for building iPad apps where an iPad is embedded into an Aila frame and 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 entire 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.

The 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 a user is recognized the flow will end and onKioskFlowCompleted method of the delegate will be called.

If a user isn't recognized, a new onboarding session is created and the user will be asked to scan their ID, after which a face math comparions will be performed between the front photo ID and Selfie. Afterwards, user approval will be performed and the 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​

The 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.