Skip to main content

DOT Android NFC 9.0.0

Migration Steps​

Compatibility with DIS​

When utilizing DIS for server-side evaluation, ensure compatibility between your DIS version and the corresponding SDK version. Refer to the DIS vs SDKs compatibility table for detailed compatibility information.

SDK initialization​

The way DOT SDK libraries are configured has changed.

  • Replace DotSdkConfiguration with DotSdk.Configuration class.
  • Update libraries property of DotSdk.Configuration class.

Before​

Libraries were provided as a list of DotLibrary instances.

DotSdkConfiguration(
//...
libraries = listOf(
DotNfcLibrary(),
//...
)
)

After​

Libraries are now configured via a single Libraries object, with explicit configuration for each DOT SDK library.

DotSdk.Configuration(
//...
libraries = Libraries(
nfc = DotNfcLibraryConfiguration,
//...
)
)

UI NFC Travel Document Reader​

The configuration structure of the NfcTravelDocumentReaderFragment has changed. Existing configuration objects are not compatible with the new API and must be migrated to the new configuration model.

Before​

class BasicNfcTravelDocumentReaderFragment: NfcTravelDocumentReaderFragment {

override fun provideConfiguration(): Configuration {
return Configuration(
nfcKey = NfcKey(
documentNumber = "...",
dateOfExpiry = "...",
dateOfBirth = "...",
),
sessionToken = "...",
)
}
}

After​

class BasicNfcTravelDocumentReaderFragment: NfcTravelDocumentReaderFragment {

override fun provideConfiguration(): Configuration {
return Configuration(
password = Password.MachineReadableZone(
documentNumber = "...",
dateOfExpiry = "...",
dateOfBirth = "...",
),
common = CommonConfiguration(
sessionToken = "...",
),
//...
)
}
}

NFC Travel Document Reader​

Basic migration steps:

  • Replace NfcTravelDocumentReaderConfiguration with the inner class NfcTravelDocumentReader.Configuration.
  • Exceptions thrown by NfcTravelDocumentReader.read(...) methods are now defined as inner classes of NfcTravelDocumentReader. Update all exception handling to use these new inner exception classes instead of the previously thrown exceptions.
  • Replace all NfcTravelDocumentReader.read(...) methods that previously accepted an NfcKey argument with the new methods that accept a Password instead.

Before​

val reader = NfcTravelDocumentReaderFactory.create(
configuration = NfcTravelDocumentReaderConfiguration(
//...
)
)
val nfcKey = NfcKey(
documentNumber = "...",
dateOfExpiry = "...",
dateOfBirth = "...",
)
try {
reader.read(tag, nfcKey)
} catch (accessControlException: AccessControlException) {
//...
} catch (chipAuthenticationException: ChipAuthenticationException) {
//...
} catch (notConnectedException: NotConnectedException) {
//...
} catch (nfcTravelDocumentReaderException: NfcTravelDocumentReaderException) {
//...
}

After​

val reader = NfcTravelDocumentReaderFactory.create(
configuration = NfcTravelDocumentReader.Configuration(
//...
)
)
val password = Password.MachineReadableZone(
documentNumber = "...",
dateOfExpiry = "...",
dateOfBirth = "...",
)
try {
reader.read(tag, password)
} catch (accessControlException: NfcTravelDocumentReader.AccessControlException) {
//...
} catch (chipAuthenticationException: NfcTravelDocumentReader.ChipAuthenticationException) {
//...
} catch (notConnectedException: NfcTravelDocumentReader.NotConnectedException) {
//...
} catch (nfcTravelDocumentReaderException: NfcTravelDocumentReader.ReadException) {
//...
}