react-native-nfc-manager 3.11.5 → 3.12.0

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.
@@ -266,6 +266,36 @@ class NfcManager extends ReactContextBaseJavaModule implements ActivityEventList
266
266
  }
267
267
  }
268
268
 
269
+ @ReactMethod
270
+ public void formatNdef(ReadableArray rnArray, ReadableMap options, Callback callback) {
271
+ boolean readOnly = options.getBoolean("readOnly");
272
+
273
+ synchronized(this) {
274
+ if (techRequest != null) {
275
+ try {
276
+ NdefFormatable ndef = (NdefFormatable)techRequest.getTechHandle();
277
+ if (ndef == null) {
278
+ callback.invoke(ERR_API_NOT_SUPPORT);
279
+ } else {
280
+ byte[] bytes = rnArrayToBytes(rnArray);
281
+ NdefMessage msg = new NdefMessage(bytes);
282
+ if (readOnly) {
283
+ ndef.formatReadOnly(msg);
284
+ } else {
285
+ ndef.format(msg);
286
+ }
287
+ callback.invoke();
288
+ }
289
+ } catch (Exception ex) {
290
+ Log.d(LOG_TAG, ex.toString());
291
+ callback.invoke(ex.toString());
292
+ }
293
+ } else {
294
+ callback.invoke(ERR_NO_TECH_REQ);
295
+ }
296
+ }
297
+ }
298
+
269
299
  private void mifareClassicAuthenticate(char type, int sector, ReadableArray key, Callback callback) {
270
300
  if (techRequest != null) {
271
301
  try {
@@ -11,6 +11,7 @@ import android.nfc.tech.NfcV;
11
11
  import android.nfc.tech.NfcF;
12
12
  import android.nfc.tech.MifareClassic;
13
13
  import android.nfc.tech.MifareUltralight;
14
+ import android.nfc.tech.NdefFormatable;
14
15
  import android.nfc.tech.IsoDep;
15
16
  import android.util.Log;
16
17
  import com.facebook.react.bridge.*;
@@ -76,6 +77,8 @@ class TagTechnologyRequest {
76
77
  mTech = MifareClassic.get(tag);
77
78
  } else if (techType.equals("MifareUltralight")) {
78
79
  mTech = MifareUltralight.get(tag);
80
+ } else if (techType.equals("NdefFormatable")) {
81
+ mTech = NdefFormatable.get(tag);
79
82
  }
80
83
 
81
84
  if (mTech == null) {
package/index.d.ts CHANGED
@@ -22,6 +22,7 @@ declare module 'react-native-nfc-manager' {
22
22
  MifareIOS = 'mifare',
23
23
  Iso15693IOS = 'iso15693',
24
24
  FelicaIOS = 'felica',
25
+ NdefFormatable = 'NdefFormatable',
25
26
  }
26
27
 
27
28
  export enum NdefStatus {
@@ -121,6 +122,10 @@ declare module 'react-native-nfc-manager' {
121
122
  ) => Promise<void>;
122
123
  }
123
124
 
125
+ interface NdefFormatableHandlerAndroid {
126
+ formatNdef: (bytes: number[], options?: { readOnly: boolean }) => Promise<void>;
127
+ }
128
+
124
129
  /** [iOS ONLY] */
125
130
  interface Iso15693HandlerIOS {
126
131
  getSystemInfo: (
@@ -236,6 +241,7 @@ declare module 'react-native-nfc-manager' {
236
241
  setTimeout(timeout: number): Promise<void>;
237
242
  mifareClassicHandlerAndroid: MifareClassicHandlerAndroid;
238
243
  mifareUltralightHandlerAndroid: MifareUltralightHandlerAndroid;
244
+ ndefFormatableHandlerAndroid: NdefFormatableHandlerAndroid;
239
245
  }
240
246
 
241
247
  const nfcManager: NfcManager;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nfc-manager",
3
- "version": "3.11.5",
3
+ "version": "3.12.0",
4
4
  "description": "A NFC module for react native.",
5
5
  "main": "src/index.js",
6
6
  "repository": {
package/src/NfcManager.js CHANGED
@@ -33,6 +33,7 @@ const NfcTech = {
33
33
  MifareIOS: 'mifare',
34
34
  Iso15693IOS: 'iso15693',
35
35
  FelicaIOS: 'felica',
36
+ NdefFormatable: 'NdefFormatable',
36
37
  };
37
38
 
38
39
  const DEFAULT_REGISTER_TAG_EVENT_OPTIONS = {
@@ -2,6 +2,7 @@ import {callNative} from './NativeNfcManager';
2
2
  import {NfcManagerBase} from './NfcManager';
3
3
  import {MifareClassicHandlerAndroid} from './NfcTech/MifareClassicHandlerAndroid';
4
4
  import {MifareUltralightHandlerAndroid} from './NfcTech/MifareUltralightHandlerAndroid';
5
+ import {NdefFormatableHandlerAndroid} from './NfcTech/NdefFormatableHandlerAndroid';
5
6
  import {handleNativeException, buildNfcExceptionAndroid} from './NfcError';
6
7
 
7
8
  const NfcAdapter = {
@@ -111,6 +112,16 @@ class NfcManagerAndroid extends NfcManagerBase {
111
112
  return this._mifareUltralightHandlerAndroid;
112
113
  }
113
114
 
115
+ // -------------------------------------
116
+ // (android) NfcTech.NdefFormatable API
117
+ // -------------------------------------
118
+ get ndefFormatableHandlerAndroid() {
119
+ if (!this._ndefFormatableHandlerAndroid) {
120
+ this._ndefFormatableHandlerAndroid = new NdefFormatableHandlerAndroid(this);
121
+ }
122
+ return this._ndefFormatableHandlerAndroid;
123
+ }
124
+
114
125
  // -------------------------------------
115
126
  // Android private
116
127
  // -------------------------------------
@@ -0,0 +1,16 @@
1
+ import {callNative} from '../NativeNfcManager';
2
+ import {handleNativeException} from '../NfcError';
3
+
4
+ class NdefFormatableHandlerAndroid {
5
+ async formatNdef(bytes, options={}) {
6
+ const defaultOptions = { readOnly: false };
7
+ return handleNativeException(
8
+ callNative('formatNdef', [
9
+ bytes,
10
+ {...defaultOptions, ...options}
11
+ ])
12
+ );
13
+ }
14
+ }
15
+
16
+ export {NdefFormatableHandlerAndroid};