NFC Passport Reader
Adapted from react-native-passport-reader. Individual modifications are too many to enumerate, but essentially: the workflow code was adapted to the needs of a React Native module, and the scanning code was largely left as is.
Getting started
$ npm i nfcpassportreader --save
$ react-native link nfcpassportreader
In your android/app/build.gradle
add packagingOptions
:
android {
...
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
}
In AndroidManifest.xml
add:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.nfc" android:required="false" />
If your app will not function without nfc capabilities, set android:required
above to true
Usage
import PassportReader from 'nfcpassportreader'
const [passportData, setPassportData] = useState(null);
const scanPassport = async () => {
const { firstName, lastName, gender, issuer, nationality, photo } = await PassportReader.scan({
documentNumber: 'ofDocumentBeingScanned',
dateOfBirth: 'yyMMdd',
dateOfExpiry: 'yyMMdd'
})
setPassportData({
firstName,
lastName,
gender,
issuer,
nationality,
photo
})
}
return (
<View style={styles.container}>
<Text>Passport data:</Text>
<Text>{passportData.firstName}</Text>
<Text>{passportData.lastName}</Text>
<Text>{passportData.gender}</Text>
<Text>{passportData.issuer}</Text>
<Text>{passportData.nationality}</Text>
<Image
source={{ uri: passportData.photo.base64 }}
style={{ width: 150, height: 250 }}
/>
</View>
);
To-do
- Scan MRZ
- Fallback for NFC Scanning – Image taking