SDK Response

VIDVDocKitResponse (enum)

Returned from the onDocKitResult() callback:

Case

Description

success(data: VIDVDocumentKitResult)

SDK session completed successfully

serviceFailure(code: Int, message: String, data: VIDVDocumentKitResult?)

Backend or validation failure

exit(step: String, data: VIDVDocumentKitResult?)

User exited manually

builderError(code: Int, message: String)

Configuration error prevented SDK from launching

Implement Result Callback

extension ViewController: VIDVDocKitDelegate {
    func onDocKitResult(_ result: VIDVDocKitResponse) {
        switch result {
        case let .success(data):
            // Handle success with extractedData and sessionID


        case let .serviceFailure(code, message, data):
            // Handle API or processing error


        case let .exit(step, data):
            // Handle user exit at a specific step


        case let .builderError(code, message):
            // Handle configuration issue before SDK starts
        }
    }
}

VIDVDocumentKitResult (class)

Field

Type

Description

sessionID

String?

Unique ID for SDK session

extractedData

[String: String]?

Key-value map of OCR results

captures

[String: String]?

Base64-encoded images (front, back)

hmacData

[String]?

Optional HMAC data for integrity validation

πŸ–Ό Captures

Egyptian National ID

Field

Type

Description

egy_front_nid

String

Base64 front image

egy_back_nid

String

Base64 back image

MRZ Passport

Field

Type

Description

egy_passport

String

Base64 front image

Tunisian National ID

Field

Type

Description

tun_front_nid

String

Base64 front image

tun_back_nid

String

Base64 back image

🧾ExtractedData

extractedData Map<String,String?> (Egyptain National ID)
  • nid <string>

  • firstName <string>

  • fullName <string>

  • street <string>

  • frontNid <string>

  • serialNumber <string>

  • backNid <string>

  • releaseDate <string>

  • gender <string>

  • maritalStatus <string>

  • profession<string>

  • religion <string>

  • husbandName <string>

  • dateOfBirth <string>

  • age <string>

  • birthGovernorate <string>

  • gender <string>

  • policeStation <string>

  • governorate<string>

  • expiryDate <string>

extractedData Map<String,String?>(MRZ Passport)
  • name <string>

  • surname <string>

  • dateOfBirth <string>

  • nationality <string>

  • passportNumber <string>

  • sex <string>

  • expirationDate <string>

  • type <string>

  • validity <int>

extractedData Map<String,String?> (Tunisian National ID)
  • nid <string>

  • firstName <string>

  • lastName <string>

  • fatherName <string>

  • husbandName <string>

  • birthdate <string>

  • birthplace <string>

  • motherName <string>

  • profession <string>

  • address <string>

  • issueDate<string>

  • thumbprintCode <string>


πŸ” Example Output

Example result handling inside the callback:

case let .success(data):
    let resultText = """
    Session ID: \(data.sessionID ?? "")
    Document Items: \(data.extractedData?.compactMap { dict in
        dict.key + ": " + (dict.value as? String ?? "")
    }.joined(separator: ", \n ") ?? "None")
    """
    resultTextView.text = resultText

Note: Not all extracted fields will be populated. Results depend on document quality, lighting, and OCR success.

Last updated