Custom Providers¶
This page contains all available providers for the Document Reader feature, as well as instructions on how to import and implement them in a project using the SeamlessMobile SDK.
Regula Provider¶
This provider uses Regula services and supports both OCR Document Reading and RFID scanning functionalities.
How to Import:¶
Work in progress...
Work in progress...
How to Instantiate:¶
Work in progress...
Work in progress...
How to Use:¶
Work in progress...
Work in progress...
Amadeus DocScanMrz Provider¶
This provider uses Amadeus services and supports MRZ Document Reading functionalities.
How to Import:¶
implementation("com.amadeus.mdi.mob.sdk:ama-doc-scan-mrz:2.0.1")
Install using Xcode¶
-
Open your project in Xcode.
-
Navigate to File ▸ Add Packages…
-
In the dialog that appears, enter the package repository URL for the SDK you want to add:
AMADocScanMrziOS
https://github.com/vbmobile/AMADocScanMrziOS -
Select the version to integrate.
For new projects, we recommend using the latest available release (for example:2.0.3). -
Choose the project and target to which the package should be added.
-
Click Add Package.
Once completed, Xcode will download the package and resolve all required dependencies automatically.
Install Using Package.swift¶
If you manage dependencies manually, add the SDKs to your Package.swift file.
1. Add the dependency¶
dependencies: [
.package(
url: "https://github.com/vbmobile/AMADocScanMrziOS",
exact: "2.0.3"
)
]
Replace
2.0.3with the intended version you wish to use.
2. Link the product to your target¶
.target(
name: "YourAppTarget",
dependencies: [
.product(name: "AMADocScanMrziOS", package: "AMADocScanMrziOS")
]
)
Replace
YourAppTargetwith the intended target you wish to use.
How to Instantiate:¶
To initialize the Enrolment with the DocScanMrz. It can be done as follows.
val docScanMrzConfig = DocScanMrzConfig(
enableLogs = <true>,
docScanMrzKey: <YOUR DOC SCAN MRZ KEY>,
)
DocScanMrz.initialize(
context = this,
docScanMrzConfig = docScanMrzConfig
)
val context = ...
val enrolmentConfig = ...
val callback = ...
val documentReaderProvider = DocScanMrz.getInstance()
// Soft-start the provider before passing it to Enrolment.
documentReaderProvider.softStart(context, object : OnSoftStartCompletion {
override fun onProgressChanged(progress: Progress) { /* not emitted by DocScanMrz */ }
override fun onSoftStartSuccess() {
Log.i("DocScanMrz", "softStart onSuccess")
}
override fun onSoftStartError(error: ProviderError) {
Log.e("DocScanMrz", "softStart onError [${error.errorCode}] ${error.description}")
}
})
Enrolment.initialize(
context = context,
enrolmentConfig = enrolmentConfig,
documentReaderProvider = documentReaderProvider,
callback = callback
)
Creates a DocumentReaderScanProtocol using AMADocScanMrziOS provider
func docScanMrziOSProviderSetup() {
var enrolmentConfig: EnrolmentConfig! // Not relevant for this example
func amaDocScanMrziOS() -> DocumentReaderScanProtocol {
/// Specifies the expected document type (e.g. passport)
let documentType: DSDocumentType = .td3
/// Uses screen size to configure capture resolution
let bounds = UIScreen.main.bounds
/// Returns a PSS-based document scanner
return DocumentReaderScan(
documentType: documentType,
apiKey: "<YOUR_KEY>",
pixelWidth: Int(bounds.width),
pixelHeight: Int(bounds.height)
)
}
Enrolment.shared.initWith(enrolmentConfig: enrolmentConfig,
documentScanProvider: amaDocScanMrziOS(),
documentRFIDProvider: nil, // Not relevant for this example
ultralightProvider: nil, // Not relevant for this example
viewRegister: nil,
completionHandler: { result in
switch result {
case .success:
print("SDK is ready to use")
case let .failure(error):
print("Failure: \(error)")
}
})
}
How to Use:¶
Enrolment.getInstance().readDocument(
activity = activity,
params = DocumentReaderParameters(
rfidRead = true,
mrzReadTimeout = TimeUnit.SECONDS.toMillis(30),
rfidReadTimeout = TimeUnit.SECONDS.toMillis(30),
showRFIDInstructions = true,
),
mode = DocumentReaderMode.SCAN,
onReadDocumentCompletion = object : OnReadDocumentCompletion {
override fun onReadDocumentSuccess(documentReaderReport: DocumentReaderReport) {
}
override fun onReadDocumentError(documentReaderError: DocumentReaderError) {
}
}
)
// The view controller responsible for presenting the document scanner camera interface
var viewController: UIViewController!
Enrolment.shared.readDocument(
parameters: .init(readRFID: false),
viewController: viewController
) { result in
switch result {
case let .success(report):
print("Document Read: Success!")
print(report)
print(report.idDocument)
print(report.documentStatuses)
case let .failure(error):
print(error.featureError.description)
}
}
Amadeus Doc RFID Read Provider¶
This provider uses Amadeus services and supports RFID scanning functionalities.
How to Import:¶
implementation("com.amadeus.mdi.mob.sdk:ama-doc-rfid-read:2.0.1")
Install using Xcode¶
-
Open your project in Xcode.
-
Navigate to File ▸ Add Packages…
-
In the dialog that appears, enter the package repository URL for the SDK you want to add:
AMADocRfid
https://github.com/vbmobile/AMADocRfid -
Select the version to integrate. For new projects, we recommend using the latest available release (for example:
2.0.2). -
Choose the project and target to which the package should be added.
-
Click Add Package.
Once completed, Xcode will download the package and resolve all required dependencies automatically.
Install Using Package.swift¶
If you manage dependencies manually, add the SDKs to your Package.swift file.
1. Add the dependency¶
dependencies: [
.package(
url: "https://github.com/vbmobile/AMADocRfid",
exact: "2.0.2"
)
]
Replace
2.0.2with the intended version you wish to use.
2. Link the product to your target¶
.target(
name: "YourAppTarget",
dependencies: [
.product(name: "AMADocRfid", package: "AMADocRfid")
]
)
Replace
YourAppTargetwith the intended target you wish to use.
How to Instantiate:¶
To initialize the Enrolment with the DocRfidRead. It can be done as follows.
val docRfidReadConfig = DocRfidReadConfig(
apiConfig = DocRfidReadApiConfig(
baseUrl = <YOUR DOC RFID READ BASE URL>,
apiKey = <YOUR DOC RFID READ API KEY>,
publicKey = Base64.encodeToString("YOUR PUBLIC KEY", Base64.DEFAULT),
),
enableLogs = <ENABLE LOGS>,
)
DocRfidRead.initialize(
context = this,
docRfidReadConfig = docRfidReadConfig
)
val context = ...
val enrolmentConfig = ...
val callback = ...
val documentRfidReaderProvider = DocRfidRead.getInstance()
// Soft-start the provider before passing it to Enrolment.
documentRfidReaderProvider.softStart(context, object : OnSoftStartCompletion {
override fun onProgressChanged(progress: Progress) { /* not emitted by DocRfidRead */ }
override fun onSoftStartSuccess() {
Log.i("DocRfidRead", "softStart onSuccess")
}
override fun onSoftStartError(error: ProviderError) {
Log.w("DocRfidRead", "softStart onError [${error.errorCode}] ${error.description}")
}
})
Enrolment.initialize(
context = context,
enrolmentConfig = enrolmentConfig,
rfidReaderProvider = documentRfidReaderProvider,
callback = callback
)
import AMADocModeliOS
import AMADocRFIDReadiOS
import MobileIdSDKiOS
func docScanRfidProviderSetup() {
var enrolmentConfig: EnrolmentConfig! // Not relevant for this example
func documentRFIDProvider() -> DocumentReaderRFIDProtocol {
let apiConfig = APIConfig(
baseURL: "<YOUR_BASE_URL>",
apiKey: "<YOUR_API_KEY>",
publicKey: "")
return AMADocRFIDRead( config: DocRfidReadConfig( apiConfig: apiConfig, enableLogs: true))
}
Enrolment.shared.initWith(enrolmentConfig: enrolmentConfig,
documentScanProvider: nil, // Not relevant for this example
documentRFIDProvider: documentRFIDProvider(),
ultralightProvider: nil, // Not relevant for this example
viewRegister: nil,
completionHandler: { result in
switch result {
case .success:
print("SDK is ready to use")
case let .failure(error):
print("Failure: \(error)")
}
})
}
How to Use:¶
Enrolment.getInstance().readDocumentRFID(
activity = requireActivity(),
params = DocumentReaderRFIDParameters(
rfidReadTimeout = docReaderRFIDParams.rfidReadTimeout,
showRFIDInstructions = docReaderRFIDParams.showRFIDInstructions,
mrzString = docReaderRFIDParams.mrzString
),
onReadDocumentCompletion = object : OnReadDocumentCompletion {
override fun onReadDocumentSuccess(documentReaderReport: DocumentReaderReport) {
}
override fun onReadDocumentError(documentReaderError: DocumentReaderError) {
}
}
)
func readRFIDDocumentSampleUsage() {
// The view controller responsible for presenting the document scanner camera interface
var viewController: UIViewController!
let formatter = DateFormatter()
formatter.timeZone = TimeZone(identifier: "UTC")
formatter.dateFormat = "YY-MM-dd"
let parameters = ReadRFIDDocumentParameters(
documentNumber: "<DOCUMENT_NUMBER>",
documentMRZ: "<DOCUMENT_MRZ>", //
dateOfExpiry: formatter.date(from: "<DATE_OF_EXPIRY>") ?? Date(),
dateOfBirth: formatter.date(from: "<DATE_OF_BIRTH>") ?? Date(),
showRFIDStatus: false,
rfidTimeout: 30)
Enrolment.shared.readRFIDDocument(
parameters: parameters,
viewController: viewController
) { result in
switch result {
case let .success(report):
print("Document Read: Success!")
print(report.idDocument)
case let .failure(error):
print(error.featureError.description)
}
}
}