Implement identity verification in your iOS app.
Before you start
Before you begin, you must already have a working iOS app to which you are adding an
identity-verification engagement scenario.
Unlike other types of engagement scenarios in iOS apps that start with the customer
tapping on the Live Experience widget, the identity-verification engagement starts
automatically when the view containing identity verification opens. The user doesn't tap
on anything besides the button or link that opens the view containing the
identity-verification engagement.
Here's what to do
-
Open your tenant application project.
-
Log into your Jumio account and download the following SDKs:
-
Link and embed the Jumio SDKs.
-
Contact your Oracle Live Experience account manager and request the iOS ID
Verification SDK.
When you get it, extract it to a folder on your computer.
-
In your application project, replace the Live Experience iOS SDK with the ID
Verification SDK.
-
In your tenant application, create a new view controller for identity
verification.
-
In your tenant application, implement some kind of action that opens the new
view. For example, create a button labeled Scan ID that
opens the identity verification view.
-
In the identity verification view controller, implement the call logic the same
way you would for any other engagement scenario, but set the
appLocation
value to the engagement scenario that has the
identity verification service enabled. For example, if you are using the default
identity verification engagement scenario to deliver the identity verification
service, set appLocation
to "Know Your
Customer"
:
.
.
.
Controller.shared.settings.startVideoInFullScreen = true
Controller.shared.settings.startVideoWithFrontCamera = true
Controller.shared.contextAttributes.setValue("Know Your Customer", forKey: "appLocation")
Controller.shared.addComponent(viewController: self.parent)
.
.
.
-
Optionally, enable Jumio facial recognition service, which compares and
verifies the likeness of the faces of the person scanning their identity card
and the picture on the card.
The Jumio assessment is reported to the associate in the Live Experience
Associate Desktop. Add the following line of code beneath the context attribute
setting appLocation:
Controller.shared.settings.attemptFaceMatchWhenVerifyingIdentity =
true
.
-
Optionally, listen for specific Jumio events and notifications and implement
your own responses. For example:
- Sent when an identity verification process is
initiated.
static let IdentityVerificationInitiated =
NSNotification.Name("oracle.widget.notification.IdentityVerificationInitiated")
-
Sent if the process is cancelled either due to error or user request.
The notification object is a Boolean, whose value is true if the
process is cancelled by the customer on the app.
static let IdentityVerificationCancelled =
NSNotification.Name("oracle.widget.notification.IdentityVerificationCancelled")
-
Sent when the identity verification documents have been captured. It
carries the netVerificationSuccessData object as payload.
static let IdentityVerificationDocumentsCaptured =
NSNotification.Name("oracle.widget.notification.IdentityVerificationDocumentsCaptured")
-
Sent when we are querying the outcome of the identity verification
process.
static let ObtainingIdentityVerificationResult =
NSNotification.Name("oracle.widget.notification.ObtainingIdentityVerificationResult")
-
Sent when the verification results are obtained.
static let IdentityVerificationResultObtained =
NSNotification.Name("oracle.widget.notification.IdentityVerificationResultObtained")
-
Sent when an identity verification outcome has been reached. It
carries information that describes the outcome (Verified, Failed,
Cancelled, Incomplete).
static let IdentityVerificationResultObtained =
NSNotification.Name("oracle.widget.notification.IdentityVerificationResultObtained")
-
Sent when an identity verification outcome has been reached. It
carries information that describes the outcome (Verified, Failed,
Cancelled, Incomplete).
static let IdentityVerificationResultObtained =
NSNotification.Name("oracle.widget.notification.IdentityVerificationResultObtained")
In this example, you are listening for when the documents are successfully scanned
and then flashing a green checkmark to the user.
To capture the event for when the documents have been successfully scanned:
NotificationCenter.default.addObserver(
self,
selector: #selector(self.haveCapturedIdentityDocuments),
name: NSNotification.Name(rawValue: "oracle.widget.notification.IdentityVerificationDocumentsCaptured"),
object: nil)
Or, you could listen for when the verification results are
obtained...
NotificationCenter.default.addObserver(
self,
selector: #selector(self.catchIdVerificationResult),
name: NSNotification.Name(rawValue: "oracle.widget.notification.IdentityVerificationResultObtained"),
object: nil)
...so that you can obtain the associated Jumio reference code (which you can use in
REST API calls to the Jumio
API):
// Get the Jumio reference code kycScanReference
@objc func catchIdVerificationResult(notification: NSNotification) {
Log.debug("ID Verification outcome = \(notification.object ?? "")")
self.verificationResult = notification.object as? String
if self.verificationResult == "Verified" {
Log.debug("kycScanReference=\(Controller.shared.service.kycScanReference)")
}
...
For a complete list of Live Experience notification events, see the Oracle Live Experience iOS API
Reference.