react-native-nfc-manager 3.13.1 → 3.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -971,11 +971,11 @@ class NfcManager extends ReactContextBaseJavaModule implements ActivityEventList
|
|
|
971
971
|
|
|
972
972
|
@ReactMethod
|
|
973
973
|
private void registerTagEvent(ReadableMap options, Callback callback) {
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
974
|
+
isReaderModeEnabled = options.getBoolean("isReaderModeEnabled");
|
|
975
|
+
readerModeFlags = options.getInt("readerModeFlags");
|
|
976
|
+
readerModeDelay = options.getInt("readerModeDelay");
|
|
977
977
|
|
|
978
|
-
Log.d(LOG_TAG, "
|
|
978
|
+
Log.d(LOG_TAG, "registerTagEvent");
|
|
979
979
|
isForegroundEnabled = true;
|
|
980
980
|
|
|
981
981
|
// capture all mime-based dispatch NDEF
|
|
@@ -1002,18 +1002,23 @@ class NfcManager extends ReactContextBaseJavaModule implements ActivityEventList
|
|
|
1002
1002
|
|
|
1003
1003
|
@ReactMethod
|
|
1004
1004
|
private void unregisterTagEvent(Callback callback) {
|
|
1005
|
-
Log.d(LOG_TAG, "
|
|
1006
|
-
isForegroundEnabled = false;
|
|
1007
|
-
intentFilters.clear();
|
|
1005
|
+
Log.d(LOG_TAG, "unregisterTagEvent");
|
|
1008
1006
|
if (isResumed) {
|
|
1009
1007
|
enableDisableForegroundDispatch(false);
|
|
1010
1008
|
}
|
|
1009
|
+
|
|
1010
|
+
intentFilters.clear();
|
|
1011
|
+
isForegroundEnabled = false;
|
|
1012
|
+
isReaderModeEnabled = false;
|
|
1013
|
+
readerModeFlags = 0;
|
|
1014
|
+
readerModeDelay = 0;
|
|
1015
|
+
|
|
1011
1016
|
callback.invoke();
|
|
1012
1017
|
}
|
|
1013
1018
|
|
|
1014
1019
|
@ReactMethod
|
|
1015
1020
|
private void hasTagEventRegistration(Callback callback) {
|
|
1016
|
-
Log.d(LOG_TAG, "isSessionAvailable");
|
|
1021
|
+
Log.d(LOG_TAG, "isSessionAvailable: " + isForegroundEnabled);
|
|
1017
1022
|
callback.invoke(null, isForegroundEnabled);
|
|
1018
1023
|
}
|
|
1019
1024
|
|
|
@@ -1061,25 +1066,36 @@ class NfcManager extends ReactContextBaseJavaModule implements ActivityEventList
|
|
|
1061
1066
|
}
|
|
1062
1067
|
|
|
1063
1068
|
if (enable) {
|
|
1064
|
-
Log.i(LOG_TAG, "enableReaderMode");
|
|
1069
|
+
Log.i(LOG_TAG, "enableReaderMode: " + readerModeFlags);
|
|
1065
1070
|
Bundle readerModeExtras = new Bundle();
|
|
1066
1071
|
readerModeExtras.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, readerModeDelay * 1000);
|
|
1067
1072
|
nfcAdapter.enableReaderMode(currentActivity, new NfcAdapter.ReaderCallback() {
|
|
1068
1073
|
@Override
|
|
1069
1074
|
public void onTagDiscovered(Tag tag) {
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1075
|
+
synchronized (this) {
|
|
1076
|
+
manager.tag = tag;
|
|
1077
|
+
Log.d(LOG_TAG, "readerMode onTagDiscovered");
|
|
1078
|
+
WritableMap nfcTag = null;
|
|
1079
|
+
// if the tag contains NDEF, we want to report the content
|
|
1080
|
+
if (Arrays.asList(tag.getTechList()).contains(Ndef.class.getName())) {
|
|
1081
|
+
Ndef ndef = Ndef.get(tag);
|
|
1082
|
+
nfcTag = ndef2React(ndef, new NdefMessage[] { ndef.getCachedNdefMessage() });
|
|
1083
|
+
} else {
|
|
1084
|
+
nfcTag = tag2React(tag);
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
if (nfcTag != null) {
|
|
1088
|
+
sendEvent("NfcManagerDiscoverTag", nfcTag);
|
|
1089
|
+
if (techRequest!= null && !techRequest.isConnected()) {
|
|
1090
|
+
boolean result = techRequest.connect(tag);
|
|
1091
|
+
if (result) {
|
|
1092
|
+
techRequest.getPendingCallback().invoke(null, techRequest.getTechType());
|
|
1093
|
+
} else {
|
|
1094
|
+
// this indicates that we get a NFC tag, but none of the user required tech is matched
|
|
1095
|
+
techRequest.getPendingCallback().invoke(null, null);
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1083
1099
|
}
|
|
1084
1100
|
}
|
|
1085
1101
|
}, readerModeFlags, readerModeExtras);
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
package/src/NfcManagerAndroid.js
CHANGED
|
@@ -15,6 +15,8 @@ const NfcAdapter = {
|
|
|
15
15
|
FLAG_READER_NO_PLATFORM_SOUNDS: 0x100,
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
+
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
|
|
19
|
+
|
|
18
20
|
class NfcManagerAndroid extends NfcManagerBase {
|
|
19
21
|
constructor() {
|
|
20
22
|
super();
|
|
@@ -42,12 +44,13 @@ class NfcManagerAndroid extends NfcManagerBase {
|
|
|
42
44
|
};
|
|
43
45
|
|
|
44
46
|
cancelTechnologyRequest = async (options = {}) => {
|
|
45
|
-
const {throwOnError = false} = options;
|
|
47
|
+
const {throwOnError = false, delayMsAndroid = 1000} = options;
|
|
46
48
|
|
|
47
49
|
try {
|
|
48
50
|
await callNative('cancelTechnologyRequest');
|
|
49
51
|
|
|
50
|
-
if (
|
|
52
|
+
if (this.cleanUpTagRegistration) {
|
|
53
|
+
await delay(delayMsAndroid);
|
|
51
54
|
await this.unregisterTagEvent();
|
|
52
55
|
this.cleanUpTagRegistration = false;
|
|
53
56
|
}
|