react-native-nfc-manager 3.10.1 → 3.11.3

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.
package/README.md CHANGED
@@ -8,7 +8,7 @@ Bring NFC feature to React Native. Inspired by [phonegap-nfc](https://github.com
8
8
 
9
9
  Contributions are welcome!
10
10
 
11
- > We also have a slack channel, you're welcome to chat with us for any issue or idea! [join us here](https://join.slack.com/t/reactnativenf-ewh2625/shared_invite/zt-puz9y22v-3rkORO6_zQe4FmaWm6ku_w)
11
+ Made with ❤️ by [whitedogg13](https://github.com/whitedogg13) and [revteltech](https://github.com/revtel)
12
12
 
13
13
  ## Install
14
14
 
@@ -32,6 +32,27 @@ For Android, it should be properly auto-linked, so you don't need to do anything
32
32
 
33
33
  Please see [here](setup.md)
34
34
 
35
+ ### Android 12
36
+
37
+ To support Android 12, you will need to update `compileSdkVersion` in your `android/build.gradle` like this:
38
+
39
+ ```
40
+ buildscript {
41
+ ext {
42
+ ...
43
+ compileSdkVersion = 31
44
+ ...
45
+ }
46
+ ...
47
+ }
48
+ ```
49
+
50
+ The reason for this is because Android puts new limitation on [PendingIntent](https://developer.android.com/reference/android/app/PendingIntent#FLAG_MUTABLE):
51
+
52
+ > Starting with Build.VERSION_CODES.S, it will be required to explicitly specify the mutability of PendingIntents
53
+
54
+ The original issue is [here](https://github.com/revtel/react-native-nfc-manager/issues/469)
55
+
35
56
  ## Also See
36
57
 
37
58
  ### [Demo App] NfcOpenReWriter
@@ -41,15 +62,14 @@ We have a full featured NFC utility app available for download.
41
62
  <a href='https://apps.apple.com/tw/app/nfc-rewriter/id1551243964' target='_blank'>
42
63
  <img alt="react-native-nfc-rewriter" src="./images/Apple-App-Store-Icon.png" width="250">
43
64
  </a>
44
- <br/>
45
-
46
- It also open sourced in this repo: [React Native NFC ReWriter App](https://github.com/revtel/react-native-nfc-rewriter)
47
65
 
48
- ### [Bonus] Reconnect.js
66
+ </br>
49
67
 
50
- Super useful library to help you share states between `sibling` and `nested` React components.
68
+ <a href='https://play.google.com/store/apps/details?id=com.washow.nfcopenrewriter' target='_blank'>
69
+ <img alt="react-native-nfc-rewriter" src="./images/google-play-icon.jpeg" width="250">
70
+ </a>
51
71
 
52
- [Check it out!](https://github.com/revtel/reconnect.js)
72
+ It also open sourced in this repo: [React Native NFC ReWriter App](https://github.com/revtel/react-native-nfc-rewriter)
53
73
 
54
74
  ## Basic Usage
55
75
 
@@ -149,6 +169,65 @@ async function writeNdef({type, value}) {
149
169
  }
150
170
  ```
151
171
 
172
+ ## Advanced: Mifare Ultralight usage
173
+
174
+ Here's an example to read a Mifare Ultralight tag:
175
+
176
+ ```javascript
177
+ import NfcManager, {NfcTech} from 'react-native-nfc-manager';
178
+
179
+ // Pre-step, call this before any NFC operations
180
+ async function initNfc() {
181
+ await NfcManager.start();
182
+ }
183
+
184
+ async function readMifare() {
185
+ try {
186
+ // 0. Request Mifare technology
187
+ let reqMifare = await NfcManager.requestTechnology(
188
+ NfcTech.MifareUltralight,
189
+ );
190
+ if (reqMifare !== 'MifareUltralight') {
191
+ throw new Error(
192
+ '[NFC Read] [ERR] Mifare technology could not be requested',
193
+ );
194
+ }
195
+
196
+ // 1. Get NFC Tag information
197
+ const nfcTag = await NfcManager.getTag();
198
+ console.log('[NFC Read] [INFO] Tag: ', nfcTag);
199
+
200
+ // 2. Read pages
201
+ const readLength = 60;
202
+ let mifarePages = [];
203
+ const mifarePagesRead = await Promise.all(
204
+ [...Array(readLength).keys()].map(async (_, i) => {
205
+ const pageOffset = i * 4; // 4 Pages are read at once, so offset should be in steps with length 4
206
+ let pages = await NfcManager.mifareUltralightHandlerAndroid.mifareUltralightReadPages(
207
+ pageOffset,
208
+ );
209
+ mifarePages.push(pages);
210
+ console.log(`[NFC Read] [INFO] Mifare Page: ${pageOffset}`, pages);
211
+ //await wait(500); // If Mifare Chip is to slow
212
+ }),
213
+ );
214
+
215
+ // 3. Success
216
+ console.log('[NFC Read] [INFO] Success reading Mifare');
217
+
218
+ // 4. Cleanup
219
+ _cleanup();
220
+ } catch (ex) {
221
+ console.warn('[NFC Read] [ERR] Failed Reading Mifare: ', ex);
222
+ _cleanup();
223
+ }
224
+ }
225
+
226
+ function _cleanup() {
227
+ NfcManager.cancelTechnologyRequest().catch(() => 0);
228
+ }
229
+ ```
230
+
152
231
  To see more examples, please see [React Native NFC ReWriter App](https://github.com/revtel/react-native-nfc-rewriter)
153
232
 
154
233
  ## API
@@ -201,3 +280,4 @@ The plugin provides props for extra customization. Every time you change the pro
201
280
  }
202
281
  }
203
282
  ```
283
+
@@ -14,7 +14,7 @@ buildscript {
14
14
  apply plugin: 'com.android.library'
15
15
 
16
16
  android {
17
- compileSdkVersion safeExtGet('compileSdkVersion', 27)
17
+ compileSdkVersion safeExtGet('compileSdkVersion', 31)
18
18
  defaultConfig {
19
19
  minSdkVersion safeExtGet('minSdkVersion', 16)
20
20
  //noinspection OldTargetApi
@@ -1064,7 +1064,12 @@ class NfcManager extends ReactContextBaseJavaModule implements ActivityEventList
1064
1064
  Activity activity = getCurrentActivity();
1065
1065
  Intent intent = new Intent(activity, activity.getClass());
1066
1066
  intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
1067
- return PendingIntent.getActivity(activity, 0, intent, 0);
1067
+
1068
+ int flag = 0;
1069
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
1070
+ flag = PendingIntent.FLAG_MUTABLE;
1071
+ }
1072
+ return PendingIntent.getActivity(activity, 0, intent, flag);
1068
1073
  }
1069
1074
 
1070
1075
  private IntentFilter[] getIntentFilters() {
@@ -1139,6 +1144,10 @@ class NfcManager extends ReactContextBaseJavaModule implements ActivityEventList
1139
1144
  WritableMap nfcTag = parseNfcIntent(intent);
1140
1145
  if (nfcTag != null) {
1141
1146
  if (isForegroundEnabled) {
1147
+ Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
1148
+ Intent intentNew=new Intent("TagFound");
1149
+ intentNew.putExtra("tag",tagFromIntent);
1150
+ context.sendBroadcast(intentNew);
1142
1151
  sendEvent("NfcManagerDiscoverTag", nfcTag);
1143
1152
  } else {
1144
1153
  sendEvent("NfcManagerDiscoverBackgroundTag", nfcTag);
package/index.d.ts CHANGED
@@ -63,7 +63,7 @@ declare module 'react-native-nfc-manager' {
63
63
  maxSize?: number;
64
64
  type?: string;
65
65
  techTypes?: string[];
66
- id?: number[];
66
+ id?: string;
67
67
  }
68
68
 
69
69
  export interface RegisterTagEventOpts {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nfc-manager",
3
- "version": "3.10.1",
3
+ "version": "3.11.3",
4
4
  "description": "A NFC module for react native.",
5
5
  "main": "src/index.js",
6
6
  "repository": {
package/CHANGELOG.md DELETED
@@ -1,98 +0,0 @@
1
- ## [3.0.2](https://github.com/whitedogg13/react-native-nfc-manager/compare/v3.0.1...v3.0.2) (2021-02-22)
2
-
3
-
4
- ### Features
5
-
6
- * **android:** allow requestTechnology resolves to tags even when tech ([8b7f862](https://github.com/whitedogg13/react-native-nfc-manager/commit/8b7f8629a8e46304f2a68d62f01e745047fe01dc))
7
-
8
-
9
-
10
- ## [3.0.1](https://github.com/whitedogg13/react-native-nfc-manager/compare/v3.0.0...v3.0.1) (2021-02-20)
11
-
12
-
13
- ### Bug Fixes
14
-
15
- * [#371](https://github.com/whitedogg13/react-native-nfc-manager/issues/371) missing MIFARE_BLOCK_SIZE for mifareClassicHandlerAndroid ([b136419](https://github.com/whitedogg13/react-native-nfc-manager/commit/b1364197c80ab16542bbb823483a2079a896e169))
16
-
17
-
18
-
19
- # [3.0.0](https://github.com/whitedogg13/react-native-nfc-manager/compare/v3.0.0-0...v3.0.0) (2021-02-18)
20
-
21
-
22
- ### Features
23
-
24
- * expose RTD_URI_PROTOCOLS ([26516a7](https://github.com/whitedogg13/react-native-nfc-manager/commit/26516a7ce8309ade21464df13a8e5c799c0e417c))
25
-
26
-
27
-
28
- # [3.0.0-0](https://github.com/whitedogg13/react-native-nfc-manager/compare/v2.0.0-beta.1...v3.0.0-0) (2021-02-10)
29
-
30
-
31
- ### Bug Fixes
32
-
33
- * disable 18092 polling (cause iOS freeze) ([64115f8](https://github.com/whitedogg13/react-native-nfc-manager/commit/64115f80f8cd93ed5ef3b01987d6c628a5a9127b))
34
- * **ios:** add polling for iso18092 ([b7984a5](https://github.com/whitedogg13/react-native-nfc-manager/commit/b7984a59ea27076d7fd34a2614592f468c80f5e1))
35
- * add callback type null possible ([1371533](https://github.com/whitedogg13/react-native-nfc-manager/commit/13715334ea908b89654b42eba4ec902bcc6f4229))
36
- * cancelTechnology might cause exception if there's a connected tag ([af2f1f9](https://github.com/whitedogg13/react-native-nfc-manager/commit/af2f1f92bbd7bfcf8c604db48b790289c3ca4946))
37
- * cancelTechnology might cause exception if there's a connected tag ([dcb26b8](https://github.com/whitedogg13/react-native-nfc-manager/commit/dcb26b85a955ce17ae633e00f6f189a895e8adcb))
38
- * getNdefMessage should use the same structure for platforms ([73859fb](https://github.com/whitedogg13/react-native-nfc-manager/commit/73859fbac8939277f1e7fc2ad13ececee8c9d4c7))
39
- * import NfcManager from new location ([c95cc76](https://github.com/whitedogg13/react-native-nfc-manager/commit/c95cc76a0a3b52c751c1a0f00895cf1b34b66b28))
40
- * ios isSupported ([adcc966](https://github.com/whitedogg13/react-native-nfc-manager/commit/adcc966c8ed4a565c2800fabc5e5a0cad07ea376))
41
- * promise won't be rejected when calling cancelTechnologyRequest in ([64c9cbd](https://github.com/whitedogg13/react-native-nfc-manager/commit/64c9cbd05e34e975fa4744727859efd08ea610bf))
42
- * reject tech request promise when native iOS cancel button is pressed ([7915b98](https://github.com/whitedogg13/react-native-nfc-manager/commit/7915b98132cf5c6f86eb96dfe242b67bef32e8a7))
43
- * remove getNdefMessage's parameter declaration ([6fc257e](https://github.com/whitedogg13/react-native-nfc-manager/commit/6fc257e61e1da5600a7aac44d9a8a97a7ecc988c))
44
-
45
-
46
- ### Features
47
-
48
- * extract more NfcTech handlers ([0032408](https://github.com/whitedogg13/react-native-nfc-manager/commit/0032408af21cafa3f5f92c16083f914325450524))
49
- * **android:** getNdefStatus ([4cc68ce](https://github.com/whitedogg13/react-native-nfc-manager/commit/4cc68ce233d81c03760b791fc2f568fe4b8415c4))
50
- * **ios:** enhance didDetectTags and add queryNDEFStatus / makeReadOnly ([32dd3be](https://github.com/whitedogg13/react-native-nfc-manager/commit/32dd3be2968abbe095ae42fd12793a9a8c0725c6))
51
- * invalidateSessionWithErrorIOS ([c631110](https://github.com/whitedogg13/react-native-nfc-manager/commit/c631110b6454c08821607014a28b8dffb20fe8b0))
52
- * ios 13 ndef read and write ([31a3ae6](https://github.com/whitedogg13/react-native-nfc-manager/commit/31a3ae6e141e41f3f36a102d5c2bb5ce04ba78a5))
53
- * requestTechnology support multi-techs ([65e8f02](https://github.com/whitedogg13/react-native-nfc-manager/commit/65e8f02b83820cb72e65c8443a607b6dca2c8fae))
54
-
55
-
56
-
57
- # [2.0.0-beta.1](https://github.com/whitedogg13/react-native-nfc-manager/compare/0.0.9...v2.0.0-beta.1) (2019-07-13)
58
-
59
-
60
- ### Bug Fixes
61
-
62
- * call the correct method `mifareUltralightReadPages` (notice the tailing s) ([60feee8](https://github.com/whitedogg13/react-native-nfc-manager/commit/60feee88c2d20bc18af23b3abb6d8cb22fe17e16))
63
- * ios crash on registerTagEvent ([e654d93](https://github.com/whitedogg13/react-native-nfc-manager/commit/e654d9359751327284d20b3bee1139c78657dcb4))
64
- * MifareClassic should also support `transceive` ([dd4a902](https://github.com/whitedogg13/react-native-nfc-manager/commit/dd4a902257a402e5d6d3eae8bd43f9d37c03928b))
65
- * use non-cached ndef for getNdefMessage API ([49f8541](https://github.com/whitedogg13/react-native-nfc-manager/commit/49f85415a5bc6d0218992dc6ba2b9303cee8e3ac))
66
-
67
-
68
- ### Features
69
-
70
- * mifareultralight support ([4a53a13](https://github.com/whitedogg13/react-native-nfc-manager/commit/4a53a135c594ef340927ae053dfc142ebfd0b9b6))
71
- * support `getMaxTransceiveLength` and `setTimeout` ([e759c39](https://github.com/whitedogg13/react-native-nfc-manager/commit/e759c399008e9060ae6f5fe23d7b31a61b1f8037))
72
-
73
-
74
-
75
- ## [0.0.9](https://github.com/whitedogg13/react-native-nfc-manager/compare/0.0.8...0.0.9) (2018-01-02)
76
-
77
-
78
-
79
- ## [0.0.8](https://github.com/whitedogg13/react-native-nfc-manager/compare/0.0.7...0.0.8) (2017-12-09)
80
-
81
-
82
-
83
- ## [0.0.7](https://github.com/whitedogg13/react-native-nfc-manager/compare/0.0.6...0.0.7) (2017-12-04)
84
-
85
-
86
-
87
- ## [0.0.6](https://github.com/whitedogg13/react-native-nfc-manager/compare/0.0.3...0.0.6) (2017-11-17)
88
-
89
-
90
-
91
- ## [0.0.3](https://github.com/whitedogg13/react-native-nfc-manager/compare/0.0.2...0.0.3) (2017-09-27)
92
-
93
-
94
-
95
- ## 0.0.2 (2017-08-01)
96
-
97
-
98
-