Bring NFC feature to React Native. Inspired by phonegap-nfc and react-native-ble-manager
Contributions are welcome!
As mentioned in issue 326, iOS 14 simulator will crash when using CoreNFC, however real iOS 14 device works.
# RN >= 0.60
npm i --save react-native-nfc-manager
# RN < 0.60 (without the latest iOS 13 feature)
npm i --save [email protected]
# RN >= 0.60, iOS
cd ios && pod install && cd ..
# ...then open ios/xxx.xcworkspace...
# RN >= 0.60, Android
# This module leverages autolink, so no extra steps are required
(see here for more info about autolink)
# RN < 0.60, both platforms
react-native link react-native-nfc-manager
You will need to setup some capabilities / entitlement / plist stuff to enable NFC development on your device, this repo explains these requirements very well:
IMPORTANT: For the new NFC capabilities available on iOS 13 to work, the entitlements file mentioned in the previous guide should look like this:
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>NDEF</string>
<string>TAG</string>
</array>
In the ISO18092 system codes for NFC Tag Reader Session, all FeliCa system codes used for reading must be entered in advance. Wildcards cannot be used.
Note on getLaunchTagEvent: keep in mind that you can only create intent-filters for the very first NDEF record on an NFC tag! If your intent-filter doesn't match the FIRST record your app will launch but it won't get the tag data. Check out for details: https://stackoverflow.com/questions/25504418/get-nfc-tag-with-ndef-android-application-record-aar/25510642
Also you should add
android:launchMode="singleTask"
to your manifest to prevent launching your app as another task when it is already running.
Please use this repo as a quick start.
Look into example
for the features you need.
v2 examples
- v2-ios+android-read-ndef
- v2-ios+android-write-ndef
- v2-ios+android-get-uid
- v2-ios+android-mifare-custom-command
v1 examples