LogoLogo
  • Innov8tif eKYC Individual APIs & Mobile SDK
  • Centralized API - EMAS eKYC Portal
  • OkayID
    • OkayID - All
      • OCR API
        • Versions
        • Sample Input
        • Sample Response
      • Get Document Type API
        • Versions
        • Sample Input
        • Sample Response
        • Supported Document Type
          • Brunei
            • Sample Response
          • Cambodia
            • Sample Response
          • China
            • Sample Response
          • Hong Kong
            • Sample Response
          • Indonesia
            • Sample Response
          • Malaysia
            • Sample Response
          • Myanmar
            • Sample Response
          • Philippines
            • Sample Response
          • Singapore
            • Sample Response
          • Thailand
            • Sample Response
          • United Arab Emirates
            • Sample Response
          • Vietnam
            • Sample Response
          • Passport
            • Sample Response
      • Field Type Reference
        • Field Type Lists
        • MRZ-Visual FieldType on Nationality
        • Supported Documents
          • Brunei
          • Cambodia
          • China
          • Hong Kong
          • Indonesia
          • Malaysia
          • Myanmar
          • Philippines
          • Singapore
          • Thailand
          • United Arab Emirates
          • Vietnam
          • Passport
      • Document Type Information
      • Error Lists
      • Image Requirements
      • Change Log
      • FAQ
  • OkayID-Lite
    • OkayID-Lite - All
      • Supported Countries
        • Indonesia
          • Versions
          • Sample Input
          • Sample Response
        • Malaysia (Deprecated)
          • Versions
          • Input Sample
          • Sample Response
        • Thailand
          • Versions
          • Sample Input
          • Sample Response
        • Japan (Non-Roman Characters)
          • Versions
          • Sample Input
          • Sample Response
        • Cambodia (Non-Roman Character)
          • Versions
          • Sample Input
          • Sample Response
          • Change Log
      • Supported DocType
      • Image Requirements
      • Change Log
      • Malaysia's Electricity Bill OCR
        • Sample Input
        • Sample Response
        • Supported Document Type
        • Error Lists
        • Change Log
      • Malaysia's KWSP Document (BETA)
        • Sample Input
        • Sample Response
        • FieldType Lists
        • Supported Document Type
        • Error Lists
        • Change Log
      • Malaysia's LHDN Document (BETA)
        • Sample Input
        • Sample Response
        • FieldType Lists
        • Supported Document Type
        • Error Lists
        • Change Log
  • OkayID - Mobile SDK
    • OkayID NFC Mobile SDK - All
      • Getting Started with OkayID NFC Mobile SDK
      • Installation Guide
      • Development Guide
      • Change Log
        • Android
        • iOS
    • OkayID Lite Mobile SDK - All
      • Getting Started with OkayID Lite Mobile SDK
      • Installation Guide
      • Development Guide
      • Changelog
  • OkayLive
    • OkayLive - All
      • Anti-spoofing
        • Versions
        • Sample Input
        • Sample Response
      • Error Lists
      • Image Requirement
      • Change Log
      • FAQ
  • OkayLive++
    • OkayLive++ - All
      • Anti-spoofing
        • Versions
        • Sample Input
        • Sample Response
      • Error Lists
      • Image Requirement
      • Change Log
  • OkayFace
    • OkayFace - All
      • Face Verification
        • Versions
        • Sample Input
        • Sample Response
        • Change Log
      • Interpretation of Results
      • Thresholding
      • Image Requirements
      • Error Lists
      • Face Search [Deprecated]
        • Face Insert
          • Sample Input
        • Face Query
          • Sample Input
        • Thresholding
        • Change Log
      • FAQ
  • OkayFace Search
    • OkayFace Search - All
      • Search Face API
        • Versions
        • Sample Input
        • Sample Response
        • Change Log
      • Get Token API
        • Versions
        • Sample Input
        • Sample Response
        • Change Log
      • How to encrypt and decrypt data
      • OkayFace Search Scenarios
      • FS-Interpretation of Results
      • FS-Image Requirements
      • FS-Error Lists
  • Face Detector - Mobile SDK
    • Face Detector - Mobile SDK - All
      • Getting Started with Face Detector
      • Installation Guide
      • Development Guide
      • Change Log
        • Android
        • iOS
        • React-Native
  • OkayDoc
    • OkayDoc - All
      • Supported Documents
        • Brunei
          • BN - Domestic ID Card
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • BN - Permanent ID Card
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
        • Cambodia
          • KH - ID Card Front
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • KH - ID Card Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
        • China
          • CN - ID Card Front
            • Versions
            • Sample Input
            • Sample Response
            • Example for Landmark
            • Recommended Threshold
            • Change Log
          • CN - ID Card Back
            • Versions
            • Sample Input
            • Sample Response
            • Example for Landmark
            • Recommended Threshold
            • Change Log
        • Taiwan
          • TW - ID Card Front
            • Versions
            • Sample Input
            • Sample Response
            • Example for Landmark
            • Recommended Threshold
            • Change Log
          • TW - ID Card Back
            • Versions
            • Sample Input
            • Sample Response
            • Example for Landmark
            • Recommended Threshold
            • Change Log
        • Hong Kong
          • HK - ID Card Front
            • Versions
            • Sample Input
            • Sample Response
            • Recommended Threshold
            • Example for landmark
            • Change Log
          • HK - ID Card Back
            • Versions
            • Sample Input
            • Sample Response
            • Recommended Threshold
            • Example for landmark
            • Change Log
        • Indonesia
          • IDN - e-KTP Front
            • Versions
            • Sample Input
            • Sample for Landmarks
            • Sample Response
            • Recommended Threshold
            • Change Log
          • IDN - e-KTP Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • IDN - Driving License (2019) Front
            • Versions
            • Sample Input
            • Sample for Landmarks
            • Sample Response
            • Recommended Threshold
            • Change Log
          • IDN - Driving License (2019) Back
            • Versions
            • Sample Input
            • Sample for Landmarks
            • Sample Response
            • Recommended Threshold
            • Change Log
        • Malaysia
          • MYS - MyKad Front
            • Versions
            • Sample Input
            • Sample Response
            • Detection and Thresholding Sample
            • Recommended Threshold
            • Change Log
          • MYS - MyKad Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS - MyKas
            • Versions
            • Sample Input
            • Sample for Landmarks
            • Sample Response
            • Recommended Threshold
            • Change Log
          • MYS - MyKas Back
            • Versions
            • Sample Input
            • Sample for Landmarks
            • Sample Response
            • Recommended Threshold
            • Change Log
          • MYS - MyPR
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS - MyPR Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS - MyTentera
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS - MyTentera Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS - Driving License
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS - MyOKU
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS - MyOKU Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS-MyKid
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS-MyKid Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • MYS-MyPOCA
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
        • Myanmar
          • MM - Driving License
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
        • Philippines
          • PH - Driving License
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - Driving License Back
            • Versions
            • Sample Input
            • Sample Response
            • Recommended Threshold
            • Change Log
          • PH - SSS
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - SSS Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - UMID
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - Voter ID
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - Postal ID
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - Postal ID Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - PRC Professional ID Card
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - PRC Professional ID Card Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - National ID/PhilSys
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • PH - National ID/PhilSys Back
            • Versions
            • Sample Input
            • Sample Response
            • Recommended Threshold
            • Change Log
        • Singapore
          • SG - NRIC/PR Front
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Additional Information
            • Change Log
          • SG - NRIC/PR Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
        • Thailand
          • TH - ID Card
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • TH - ID Card Back
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
        • United Arab Emirates
          • UAE - ID Card
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
        • Vietnam
          • VN - Old ID Card
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
          • VN - New ID Card
            • Versions
            • Sample Input
            • Sample Response
            • Sample for Landmarks
            • Recommended Threshold
            • Change Log
        • Non-passport
          • Versions
          • Sample Input
          • Sample Response
          • Supported Document
          • Flash Image Supported ID Document
          • Change Log
        • Passport
          • Versions
          • Sample Input
          • Sample Response
          • Recommended Threshold
          • Sample Landmarks check for Passport
          • Half-sized and Full-sized Passport Image Samples
          • Change Log
      • Data Consistency Check
        • Versions
        • Sample Response
        • Passport MRZ-Visual Consistency Check and MRZ Validity
        • Change Log
      • Supported Documents and Check Type
      • Error Lists
      • Image Requirements
      • FAQ
  • OkayDoc - Mobile SDK
    • OkayDoc - Mobile SDK - All
      • Getting Started with OkayDoc
      • Installation Guide
      • Development Guide
      • Change Log
  • OkayCam - Mobile SDK
    • OkayCam - Mobile SDK - All
      • Getting Started with OkayCam
      • Installation Guide
      • Development Guide (Document Capture)
      • Development Guide (Face Capture)
      • Error/Exception Handling
      • Change Log
        • Android
        • iOS
        • React-Native
  • OkayDB
    • OkayDB - All
      • AML
        • Search Business
          • Versions
          • Sample Input
          • Sample Response
          • API Response Schema
        • Search By BusinessID
          • Versions
          • Sample Response
        • Search Person
          • Versions
          • Sample Input
          • Sample Response
          • API Response Schema
        • Search By Person ID
          • Versions
          • Sample Response
        • Save Result as PDF
          • Versions
          • Sample Input
          • Sample Response
        • AML Postman Collection
        • Error List
        • Change Log
      • Digital Footprint Analysis
        • Versions
          • Sample Input
          • Sample Response
          • Error Lists
          • Change Log
      • Supported Countries
        • Indonesia
          • e-KTP Check
            • Versions
            • Sample Input
            • Sample Response
            • Change Log
        • Malaysia
          • Information Checks
            • Versions
            • Sample Input
            • Sample Response
            • Change Log
        • Vietnam [NOT SUPPORTED]
          • Driver License Check
            • Versions
            • Sample Input
            • Sample Response
            • Change Log
      • FAQ
  • IntelliDoc
    • IntelliDoc - All
      • Document Recognition
        • Verify
          • Verify - Versions
          • Verify - Sample Input
          • Verify - Sample Response
        • IntelliDoc - Postman Collection
        • IntelliDoc - Error Message List
        • IntelliDoc - Change Log
      • Supported Document & Fields
        • Malaysia
  • Web eKYC
    • Web eKYC - All
      • OkayID Web Camera
        • HTML Media Capture - Upload Approach
        • Web RTC - High Resolution
        • Web RTC - Screen Capture
        • Operating System Detection
      • OkayLive Web Camera
      • Differences of Web eKYC & Native eKYC
  • Other APIs
    • Other APIs - All
      • Fake ID Detection
        • Sample Input
      • Get Details by ID
        • Sample Input
  • Others
    • Others - All
      • IDV App Download URL
        • Change Log
      • FAQ
Powered by GitBook
On this page

Was this helpful?

  1. OkayID - Mobile SDK
  2. OkayID NFC Mobile SDK - All

Development Guide

This page shows the development guide of the OkayID NFC

Usage

  1. Retrieve the MRZKey by passing passport number, date of birth, and expiry date

val mrzKey = PassportUtils().getMRZKey("A32869311", "890921", "190528")
  1. License key is needed to trigger the process. Start the process by calling readPassport on PassportReader. After process finished successfully or with an error, the callback method will be inovked with the results

PassportReader.readPassport(this, LICENSE_KEY, mrzKey) { success, passport, error ->  
	Log.d("RESULT", "issuccess =>" + success)  
    Log.d("RESULT", "data =>" + passport)  
    Log.d("RESULT", "err =>" + error)  
}

MRZ key

Parameter
Type
Required format

passportNumber

String

dateOfBirth

String

yyMMdd

dateOfExpiry

String

yyMMdd

*Note: if expiry date is 21 SEPT 2022, the valid format to pass is 220921

Result callback

  • result callback has 3 params as follow:

Params
Possible value

success

will be true if the process finish successfully ,otherwise false

passport

if its successful,the passport object will contains the info described in the following table. Otherwise, passport will be null

exception

if its successful, exception will be null otherwise, it contains the exception that occurred during the process

After the successful processing, you will be able to retrieve the following info:

Parameter
Type

documentType

String

documentNumber

String

personalNumber

String

name

String

gender

String

nationality

String

dateOfBirth

String

documentExpiryDate

String

faceImgPath

String

Usage

Start by importing OkayNFC module into your swift file.

import OkayNFC

Scan NFC

1. Instantiate the PassportReader class

private let passportReader = PassportReader()

2. Retrieve the MRZ key by passing in passport number, birthdate and expiryDate

let mrzKey = PassportUtils().getMRZKey(passportNumber: passportNumber, dateOfBirth: birthDateString, dateOfExpiry: expiryDateString)

3. License key is needed to trigger the process. Start the process by calling readPassport on passportReader. You may handle the result in the completion handler.

passportReader.readPassport(license: licenseKey, mrzKey: mrzKey,
    customDisplayMessage: { (displayMessage) in
        switch displayMessage {
            case .requestPresentPassport:
                return "Hold your iPhone near an NFC enabled passport."
            default:
                // Return nil for all other messages so we use the provided default
                return nil
        }
    }, completed: { (passport, error) in
        if let passport = passport {
            // handle passport result
        }
        else {
            // handle error
        }
    })

Required Inputs

MRZ Key

Parameter
Type
Default
Required format

passportNumber

String

nil

dateOfBirth

String

nil

yyMMdd

dateOfExpiry

String

nil

yyMMdd

Data Group

Parameter
Description

DG1

MRZ Data

DG2

Image

DG7, DG11, DG12, DG14, DG15, COM and SOD

-

NFCViewDisplayMessage

case .requestPresentPassport:
    return "Hold your iPhone near an NFC enabled passport."
case .authenticatingWithPassport(let progress):
    let progressString = handleProgress(percentualProgress: progress)
    return "Authenticating with passport.....\n\n\(progressString)"
case .readingDataGroupProgress(let dataGroup, let progress):
    let progressString = handleProgress(percentualProgress: progress)
    return "Reading \(dataGroup).....\n\n\(progressString)"
case .error(let tagError):
    switch tagError {
        case NFCPassportReaderError.TagNotValid:
            return "Tag not valid."
        case NFCPassportReaderError.MoreThanOneTagFound:
            return "More than 1 tags was found. Please present only 1 tag."
        case NFCPassportReaderError.ConnectionError:
            return "Connection error. Please try again."
        case NFCPassportReaderError.InvalidMRZKey:
            return "MRZ Key not valid for this document."
        case NFCPassportReaderError.ResponseError(let description, let sw1, let sw2):
            return "Sorry, there was a problem reading the passport. \(description) - (0x\(sw1), 0x\(sw2)"
        default:
            return "Sorry, there was a problem reading the passport. Please try again"
    }
case .successfulRead:
    return "Passport read successfully"

readPassport

Parameter
Type
Default
Required

licenseKey

String

nil

compulsory

mrzKey

String

nil

compulsory

tags

[DataGroupId]

[]

optional

skipSecureElements

Bool

true

optional

skipCA

Bool

false

optional

skipPACE

Bool

false

optional

customDisplayMessage

(NFCViewDisplayMessage) -> String?

nil

optional

Result (OkayNFCResult)

Parameter
Type
Default

documentType

String

""

documentNumber

String

""

personalNumber

String

""

name

String

""

gender

String

""

nationality

String

""

dateOfBirth

String

""

documentExpiryDate

String

""

faceImgPath

URL

nil

Error Handling (NFCPassportReaderError)

The error received in the completed handler

case ResponseError(String, UInt8, UInt8)
case InvalidResponse
case UnexpectedError
case NFCNotSupported
case NoConnectedTag
case D087Malformed
case InvalidResponseChecksum
case MissingMandatoryFields
case CannotDecodeASN1Length
case InvalidASN1Value
case UnableToProtectAPDU
case UnableToUnprotectAPDU
case UnsupportedDataGroup
case DataGroupNotRead
case UnknownTag
case UnknownImageFormat
case NotImplemented
case TagNotValid
case ConnectionError
case UserCanceled
case InvalidMRZKey
case MoreThanOneTagFound
case InvalidHashAlgorithmSpecified
case InvalidDataPassed(String)
case NotYetSupported(String)
case InvalidLicenseKey
case PermissionDenied
case Error(String)
PreviousInstallation GuideNextChange Log

Last updated 2 years ago

Was this helpful?