diff --git a/README.md b/README.md
index 1efe0ed..7f62e6e 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,7 @@ npx cap sync
* [`signTextDNIe(...)`](#signtextdnie)
* [`signDocumentDNIe(...)`](#signdocumentdnie)
* [`signHashDNIe(...)`](#signhashdnie)
+* [`isNFCEnable()`](#isnfcenable)
* [Interfaces](#interfaces)
@@ -68,9 +69,9 @@ readPassport(options: { accessKey: String; paceKeyReference: number; tags: Strin
Lee el eID utilizando la conexión NFC.
-| Param | Type | Description |
-| ------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **`options`** | { accessKey: String; paceKeyReference: number; tags: String[]; }
| - Array que incluye los parámetros que se le envían al plugin: accessKey (Indica el can o mrz utilizado para establecer la comunicación), paceKeyReference (indica el tipo de clave usada en la conexión, se puede utilizar CAN o MRZ), tags (indica los dataGroups a leer del documento. [] para leer todos) |
+| Param | Type | Description |
+| ------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **`options`** | { accessKey: String; paceKeyReference: number; tags: String[]; }
| - Array que incluye los parámetros que se le envían al plugin: accessKey (Indica el can o mrz utilizado para establecer la comunicación), paceKeyReference (indica el tipo de clave usada en la conexión, se puede utilizar CAN o MRZ), tags (indica los dataGroups a leer del documento. [] para leer todos. En android si no se especifica DG2 no se recupera la foto y si no se especifica DG7 no se recupera la firma, el resto de DGs se recuperan siempre) |
**Returns:** Promise<RespuestaReadPassport>
@@ -128,6 +129,19 @@ Firma el hash pasado como parámetro con el certificado del DNIe pasado como par
--------------------
+### isNFCEnable()
+
+```typescript
+isNFCEnable() => Promise
+```
+
+Indica si el dispositivo móvil dispone de la tecnología NFC y si esta opción está activada.
+
+**Returns:** Promise<RespuestaNFC>
+
+--------------------
+
+
### Interfaces
@@ -363,4 +377,12 @@ An object that represents a number of any kind. All JavaScript numbers are 64-bi
| **join** | (separator?: string \| undefined) => string |
| **slice** | (start?: number \| undefined, end?: number \| undefined) => T[] |
+
+#### RespuestaNFC
+
+| Prop | Type |
+| ---------------- | ------------------------------------------- |
+| **`disponible`** | Boolean
|
+| **`activo`** | Boolean
|
+
diff --git a/android/src/main/java/com/cqesolutions/io/idniecap/idniecapPlugin.java b/android/src/main/java/com/cqesolutions/io/idniecap/idniecapPlugin.java
index 77086f9..13cc389 100644
--- a/android/src/main/java/com/cqesolutions/io/idniecap/idniecapPlugin.java
+++ b/android/src/main/java/com/cqesolutions/io/idniecap/idniecapPlugin.java
@@ -1,8 +1,11 @@
package com.cqesolutions.io.idniecap;
import android.app.Activity;
+import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
+import android.nfc.NfcAdapter;
+import android.nfc.NfcManager;
import android.util.Base64;
import androidx.activity.result.ActivityResult;
@@ -362,4 +365,37 @@ public void signHashDNIe(PluginCall call){
call.resolve(ret);
}
+
+ @PluginMethod
+ public void isNFCEnable(PluginCall call){
+ Boolean disponible = true;
+ Boolean activo = true;
+
+ NfcManager manager = (NfcManager) getActivity().getApplicationContext().getSystemService(Context.NFC_SERVICE);
+ NfcAdapter adapter = manager.getDefaultAdapter();
+
+ if(adapter==null) {
+ try{
+ disponible = false;
+ }
+ catch (IllegalStateException ignored) {
+ // There's no way to avoid getting this if saveInstanceState has already been called.
+ }
+ }
+ else if (!adapter.isEnabled()) {
+ try{
+ activo = false;
+ }
+ catch (IllegalStateException ignored) {
+ // There's no way to avoid getting this if saveInstanceState has already been called.
+ }
+ }
+
+
+ JSObject ret = new JSObject();
+ ret.put("disponible",disponible);
+ ret.put("activo", activo);
+ call.resolve(ret);
+
+ }
}
diff --git a/ios/Sources/idniecapPlugin/idniecap.swift b/ios/Sources/idniecapPlugin/idniecap.swift
index 9cd7134..b6e8b31 100644
--- a/ios/Sources/idniecapPlugin/idniecap.swift
+++ b/ios/Sources/idniecapPlugin/idniecap.swift
@@ -1,5 +1,6 @@
import Foundation
import iDNIe
+import CoreNFC
@objc public class idniecap: NSObject {
@@ -589,4 +590,22 @@ import iDNIe
}
+ @objc public func isNFCEnable() -> [String: Any] {
+
+ guard NFCNDEFReaderSession.readingAvailable else {
+ var json: [String: Any] = [:]
+ json["disponible"] = false
+ json["activo"] = false
+
+ return json
+ }
+
+
+ var json: [String: Any] = [:]
+ json["disponible"] = true
+ json["activo"] = true
+
+ return json
+
+ }
}
diff --git a/ios/Sources/idniecapPlugin/idniecapPlugin.swift b/ios/Sources/idniecapPlugin/idniecapPlugin.swift
index a1bf3c5..f2f0a16 100644
--- a/ios/Sources/idniecapPlugin/idniecapPlugin.swift
+++ b/ios/Sources/idniecapPlugin/idniecapPlugin.swift
@@ -16,8 +16,7 @@ public class idniecapPlugin: CAPPlugin, CAPBridgedPlugin {
CAPPluginMethod(name: "signTextDNIe", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "signDocumentDNIe", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "signHashDNIe", returnType: CAPPluginReturnPromise),
-// CAPPluginMethod(name: "authenticationDNIeOpenSession", returnType: CAPPluginReturnPromise),
-// CAPPluginMethod(name: "signChallengeDNIe", returnType: CAPPluginReturnPromise),
+ CAPPluginMethod(name: "isNFCEnable", returnType: CAPPluginReturnPromise),
]
private let implementation = idniecap()
@@ -92,4 +91,10 @@ public class idniecapPlugin: CAPPlugin, CAPBridgedPlugin {
call.resolve(json)
}
+
+ @objc func isNFCEnable(_ call: CAPPluginCall) {
+ let json = implementation.isNFCEnable()
+
+ call.resolve(json)
+ }
}
diff --git a/package.json b/package.json
index 320d6c9..91725a1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "idniecap",
- "version": "1.0.0",
+ "version": "1.0.1",
"description": "Librería para el uso del DNIe en ionic. Disponible para android e iOS.",
"main": "dist/plugin.cjs.js",
"module": "dist/esm/index.js",
diff --git a/src/definitions.ts b/src/definitions.ts
index 3cac61d..50cb66c 100644
--- a/src/definitions.ts
+++ b/src/definitions.ts
@@ -35,6 +35,11 @@ export interface idniecapPlugin {
*/
signHashDNIe(options: {accessKey: String, pin: String, hash: Array, digest: number, certToUse: String}) : Promise;
+ /**
+ * Indica si el dispositivo móvil dispone de la tecnología NFC y si esta opción está activada.
+ */
+ isNFCEnable() : Promise;
+
}
export const PACEHandler = {
@@ -158,10 +163,8 @@ export interface RespuestaFirma {
error: String | undefined
}
-/*
-export interface RespuestaAutenticacion {
- respueta: Boolean,
- error: String | undefined
+export interface RespuestaNFC {
+ disponible: Boolean,
+ activo: Boolean
}
-*/
\ No newline at end of file
diff --git a/src/web.ts b/src/web.ts
index c7e7e68..ca3d1ba 100644
--- a/src/web.ts
+++ b/src/web.ts
@@ -1,6 +1,6 @@
import { WebPlugin } from '@capacitor/core';
-import type { EstadoLicencia, idniecapPlugin, MRZKey, RespuestaFirma, RespuestaReadPassport } from './definitions';
+import type { EstadoLicencia, idniecapPlugin, MRZKey, RespuestaFirma, RespuestaNFC, RespuestaReadPassport } from './definitions';
export class idniecapWeb extends WebPlugin implements idniecapPlugin {
getMRZKey(options: {passportNumber: String, dateOfBirth: String, dateOfExpiry: String}): Promise {
@@ -38,18 +38,8 @@ export class idniecapWeb extends WebPlugin implements idniecapPlugin {
console.log(options);
throw new Error('Method not implemented.');
}
- /*
- async authenticationDNIeOpenSession(options: {accessKey: String, pin: String}) : Promise
- {
- console.log("NOT IMPLEMENTED");
- console.log(options);
- throw new Error('Method not implemented.');
- }
- async signChallengeDNIe(options: {hash: Array, digest: Number, signPadding: String}) : Promise{
- console.log("NOT IMPLEMENTED");
- console.log(options);
+ async isNFCEnable(): Promise {
throw new Error('Method not implemented.');
}
- */
}