Skip to content

Changelog

2.16.0

  • New: baggage parameter on EmrtdConnector puts your own fields into every log line that the DocVal Service writes for the session. Needs DocVal Service 1.18.0 or newer, with the keys allowed through BAGGAGE_ALLOWED_KEYS

2.15.0

  • New: Read only selected data groups, e.g. DataGroupSet.minimal for the MRZ alone or DataGroupSet.minimalKYC for MRZ and face image
  • Improved: Files are read from the chip in larger blocks
  • Improved: More reliable reading of documents that reject large data chunks
  • Fix: A chip error reported inside an encrypted response is no longer surfaced as a success status

2.13.5

  • Improved: Updated the bundled OpenSSL version

2.13.2

  • Fix: Timeouts no longer produce a generic SessionInvalidated error. The SDK now reports the actual server close reason (e.g. MAX_SESSION_TIME_EXCEEDED) or connectionTimeout
  • Improved: All NFC dialog error messages are now routable through the nfcStatusLocalization callback
  • New: Typed ReadingStep cases for NFC dialog error localization:
    • .connectionLost, .connectionTimedOut, .readingIncomplete, .operationCancelled, .incorrectAccessKey, .authenticationFailed, .fileReadFailed.
    • Use these in nfcStatusLocalization instead of string matching

2.13.1

  • Fix: User cancel during NFC reading is now correctly reported as UserInvalidatedSession instead of ConnectionLost
  • Fix: NFC timeout (no tag found within 60s) now returns EmrtdConnectorError.nfcTimeout instead of a raw SessionInvalidated error

2.13.0

  • Improved: Compatibility with certain Asian identity documents that don't tolerate redundant application selection
  • Improved: Faster error recovery when NFC connection is lost during chip communication
  • Fix: WebSocket connection is now properly closed when validation fails
  • Improved: Logging in diagnostic sessions

2.12.0

  • Fix: Chip Authentication relay now works correctly for documents requiring server-side key agreement
  • Fix: Face image parsing for passports with non-standard DG2 encoding
  • Improved: Diagnostic logging for relay and access control flows

2.11.0

  • New: Add connector(_:didClose:) delegate callback that always fires when a session ends
    • Provides CloseInfo with trigger, code, reason, and postConfirmed
    • Use info.postConfirmed to check if the result was posted successfully
    • Eliminates ambiguity when WebSocket connections drop before server confirmation
    • Deprecates connectorDidSuccessfullyPostToServer (use info.postConfirmed instead)

2.10.8

  • Fix: more robust close handling and NFC logging

2.10.7

  • Bugfix: More stable NFC handling

2.10.6

  • Optimize MF/CardAccess flow (to avoid CoreNFC timeouts)
  • Diagnostics: Log outbound APDU headers (no payload) for diagnostic sessions

2.10.5

  • Diagnostics: Added detailed APDU monitoring events
  • Optimize MF/CardAccess flow

2.10.2

  • Diagnostics: Added monitoring events
  • Compatibility: Improving read stability on sensitive IDs (e.g. VNM).

2.10.1

  • Fix: Connector validation result summary now correctly reports an error when Passive Authentication (SOD signature) is invalid.

2.10.0

  • Build: Simplify xcframework creation and set the connector binary to build for iOS 13+.
  • Avoid redundant DG1 reads after CA by reusing DG1 provided by the DocVal Server in the handback flow.
  • Improve post-CA behavior
  • Improve NFC status reporting, surface clearer error messages

2.9.1

  • Fix: Chip Authentication on Russian passports
  • Fix: Fixes an issue with reading DG1/DG2 on some Chinese passports
  • Fix: Increases compatibility with Italian ID cards
  • Build: Weak-link CoreNFC in the provided xcframework so consuming apps are not forced into a strong CoreNFC dependency.

2.9.0

  • Simplified distribution and usage: binary-only Connector with a single XCFramework.
  • No API changes required. Usage as before: Integrate via CocoaPods or SPM
  • Note: Version jump comes from unification with the underlying core framework.

2.1.2

  • Fix: Stabilize fire-and-forget mode (receiveResult=false)
  • Example: Hide result output when receiveResult=false

2.1.1

  • Fix: Remove NFC race-guard and double-cleanup; update KinegramEmrtd framework for stable async flow

2.1.0

  • New: Automatic PACE selection based on document info
    • New overloads: validate(with:documentType:issuingCountry:) and startValidation(..., documentType:issuingCountry:)
    • Enables PACE polling automatically for known PACE-enabled ID cards (currently FRA, OMN), keeps it off for passports
  • New: DocumentKind enum and MRZ helper DocumentKind.fromMRZDocumentCode(_:)
  • Fix: Improve robustness of WebSocket connect/teardown

2.0.15

  • New Feature: Add usePACEPolling parameter to support more documents
    • Required for reading French ID cards (FRA ID), Omani ID cards (OMN ID), etc.
    • Please be aware, that this requires changes to your app's entitlements (add PACE to com.apple.developer.nfc.readersession.formats) as described in the Installation guide

2.0.14

  • Added support for CocoaPods again (in addition to SPM)

2.0.13

Major Version Release - V2

This is a major rewrite of the eMRTD Connector with significant architectural changes and breaking changes from V1.

Key Improvements:

  • Solves the iOS 20-second NFC timeout issue by moving APDU exchanges to the device
  • Simple one-call validation API with validate(with:)
  • Modern Swift concurrency with async/await
  • Improved error handling and progress reporting

Breaking Changes:

  • New WebSocket protocol - Uses v2 protocol
  • Complete API redesign - Async/await based, simplified interface
  • Minimum iOS version increased from iOS 13.0 to iOS 15.0
  • Swift Package Manager only - CocoaPods support removed
  • Binary dependency required - Now includes KinegramEmrtd.xcframework

See the V1 to V2 Migration Guide for detailed migration instructions.

1.2.1

  • Add a flag enableDiagnostics to interface functions for enabling diagnostics in the DocVal Service.

1.2.0

  • Add support for setting custom HTTP headers for the WebSocket connection. See connect method in EmrtdConnector class.

1.1.3

  • Separate github build jobs (no functional change to framework)

1.1.2

  • Optimized github build action (no functional change)

1.1.1

  • Added also validationID to ObjC interface

1.1.0

  • Add a simplified and ObjectiveC compatible version, build as static framework. See folder ObjCFramework for more info.

1.0.0

  • Improve documentation
  • Rename library module from KTAKinegramEmrtdConnector to KinegramEmrtdConnector! Update your import statements accordingly.

0.0.9

  • Add instruction to set "Team" in signings config to Readme

0.0.8

  • Also parse the optional field "files_binary" in the EmrtdPassport Result JSON

0.0.4

  • Show Details if Passive Authentication not successful
  • Enforce Document Number to be Upper Case
  • Minor Improvements to the Documentation

0.0.3

  • Minor Improvements to the Documentation

0.0.2

  • Improvements to the API of EmrtdConnector
  • Make Example App use revised EmrtdConnector API
  • Additions to the Documentation

0.0.1

  • Everything begins