Package Exports
- react-native-nfc-hce
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-native-nfc-hce) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
react-native-nfc-hce
Inspired by android-CardEmulation
ππ₯Only supported Android !π₯π
Requisites
- Android (API 19+)
- Android SDK 27
- Android Build Tools v27.0.2
Getting started
$ npm install react-native-nfc-hce --save
Mostly automatic installation
$ react-native link react-native-nfc-hce
Manual installation
Android
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import studio.bb.rnlib.RNHcePackage;to the imports at the top of the file - Add
new RNHcePackage()to the list returned by thegetPackages()method
- Append the following lines to
android/settings.gradle:include ':react-native-hce' project(':react-native-hce').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-hce/android') - Insert the following lines inside the dependencies block in
android/app/build.gradle:compile project(':react-native-hce')
Setup
- Open up
android/app/src/main/AndroidManifest.xml
- Add
<uses-permission android:name="android.permission.NFC" /> - Add
<service android:name="studio.bb.rnlib.CardService" android:exported="true" android:permission="android.permission.BIND_NFC_SERVICE"> <intent-filter> <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE" /> </intent-filter> <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/aid_list" /> </service>
- Create
aid_list.xmlinandroid/app/src/main/res/xml/
- Add code in
aid_list.xml
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/service_name"
android:requireDeviceUnlock="false">
<aid-group
android:category="other"
android:description="@string/card_title">
<aid-filter android:name="F201808175" />
</aid-group>
</host-apdu-service>The aid need to customize
- Edit AID in
react-native-nfc-hce/android/src/main/java/studio/bb/rnlib/CardService.java
public class CardService extends HostApduService {
private static final String TAG = "CardService";
private static final String AID = "F201808175";Usage
import HCE from "react-native-hce";
componentDidMount = () => {
const { support, enabled } = HCE.supportNFC();
HCE.listenNFCStatus(enabled => {
console.log("NFC enabled: ", enabled);
});
};
_onChangeText = text => {
if (text.length > 0) {
HCE.setCardContent(text);
}
};supportNFC()
Get NFC supported and enabled
listenNFCStatus(enabled:boolean)
Listen NFC enabled status
setCardContent(content:string)
Write CardEmulation content