Saltar al contenido

NFC

GitHubnpmcrates.io
Referencia de API

Lee y escribe etiquetas NFC en Android e iOS.

Este plugin requiere una versión de Rust de al menos 1.77.2

PlataformaNivelNotas
windows
linux
macos
android
ios

Instala el plugin nfc para comenzar.

Usa el gestor de paquetes de tu proyecto para agregar la dependencia:

npm run tauri add nfc

El plugin NFC requiere configuración nativa para iOS.

Para acceder a las API de NFC en iOS debes ajustar la versión objetivo de iOS, configurar una descripción de uso en el archivo Info.plist y añadir la capacidad de NFC a tu aplicación.

El plugin NFC requiere iOS 14+. Este es el valor por defecto para las aplicaciones Tauri creadas con la CLI de Tauri v2.8 y superior, pero puedes editar tu proyecto de Xcode para configurarlo.

En el archivo src-tauri/gen/apple/<project-name>.xcodeproj/project.pbxproj, establece todas las propiedades IPHONEOS_DEPLOYMENT_TARGET en 14.0:

src-tauri/gen/apple/<project-name>.xcodeproj/project.pbxproj
/* Begin XCBuildConfiguration section */
1234567890ABCDEF12345678 /* release */ = {
isa = XCBuildConfiguration;
buildSettings = {
/* ... */
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
};
name = release;
};
ABCDEF1234567890ABCDEF12 /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
/* ... */
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
};
name = debug;
};

Alternativamente puedes establecer el objetivo de despliegue desde Xcode en la configuración General > Minimum Deployments > iOS.

En iOS el plugin NFC requiere el valor de propiedad de información NFCReaderUsageDescription en Info.plist, el cual debe describir por qué tu aplicación necesita escanear o escribir en etiquetas NFC.

En el archivo src-tauri/Info.ios.plist, agrega el siguiente fragmento:

src-tauri/Info.ios.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NFCReaderUsageDescription</key>
<string>Read and write various NFC tags</string>
</dict>
</plist>

Adicionalmente iOS requiere que la capacidad de NFC esté asociada con tu aplicación.

La capacidad se puede añadir en Xcode en la pestaña «Signing & Capabilities» de la configuración del proyecto haciendo clic en el botón «+ Capability» y seleccionando la capacidad «Near Field Communication Tag Reading» (consulta Añadir una capacidad a un objetivo para más información) o añadiendo la siguiente configuración al archivo gen/apple/<app-name>_iOS/<app-name>_iOS.entitlements:

gen/apple/<app-name>_iOS/<app-name>_iOS.entitlements
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>TAG</string>
</array>
</dict>
</plist>

El plugin NFC está disponible tanto en JavaScript como en Rust, lo que te permite escanear y escribir en etiquetas NFC.

No todos los dispositivos móviles tienen la capacidad de escanear etiquetas NFC, por lo que debes comprobar la disponibilidad antes de usar las API de escaneo y escritura.

import { isAvailable } from '@tauri-apps/plugin-nfc';
const canScanNfc = await isAvailable();

El plugin puede escanear tanto etiquetas NFC genéricas como etiquetas NFC con un mensaje NDEF (NFC Data Exchange Format), el cual es un formato estándar para encapsular datos tipados en una etiqueta NFC.

import { scan } from '@tauri-apps/plugin-nfc';
const scanType = {
type: 'ndef', // or 'tag',
};
const options = {
keepSessionAlive: false,
// configure the messages displayed in the "Scan NFC" dialog on iOS
message: 'Scan a NFC tag',
successMessage: 'NFC tag successfully scanned',
};
const tag = await scan(scanType, options);

El escáner NFC también puede filtrar etiquetas con un formato URI específico, tipo mime o tecnologías de etiquetas NFC. En este caso, el escaneo solo detectará etiquetas que coincidan con los filtros proporcionados.

import { scan, TechKind } from '@tauri-apps/plugin-nfc';
const techLists = [
// capture anything using NfcF
[TechKind.NfcF],
// capture all MIFARE Classics with NDEF payloads
[TechKind.NfcA, TechKind.MifareClassic, TechKind.Ndef],
];
const tag = await scan({
type: 'ndef', // or 'tag'
mimeType: 'text/plain',
uri: {
scheme: 'https',
host: 'my.domain.com',
pathPrefix: '/app',
},
techLists,
});

La API write se puede utilizar para escribir una carga útil (payload) en una etiqueta NFC. Si no hay ninguna etiqueta escaneada con keepSessionAlive: true, la aplicación escaneará primero una etiqueta NFC.

import { write, textRecord, uriRecord } from '@tauri-apps/plugin-nfc';
const payload = [uriRecord('https://tauri.app'), textRecord('some payload')];
const options = {
// the kind is only required if you do not have a scanned tag session alive
// its format is the same as the argument provided to scan()
kind: {
type: 'ndef',
},
// configure the messages displayed in the "Scan NFC" dialog on iOS
message: 'Scan a NFC tag',
successfulReadMessage: 'NFC tag successfully scanned',
successMessage: 'NFC tag successfully written',
};
await write(payload, options);

De forma predeterminada, todos los comandos y alcances (scopes) potencialmente peligrosos del plugin están bloqueados y no se puede acceder a ellos. Debes modificar los permisos en tu configuración de capabilities para habilitarlos.

Consulta la Visión General de Capacidades para obtener más información y la guía paso a paso para usar permisos de plugins.

src-tauri/capabilities/default.json
{
"permissions": [
...,
"nfc:default",
]
}

Permiso Predeterminado

Este conjunto de permisos configura qué tipo de operaciones están disponibles desde el plugin nfc.

Permisos Otorgados

Se permite comprobar si la funcionalidad NFC está disponible y escanear etiquetas cercanas. La escritura en etiquetas se debe habilitar manualmente.

Este conjunto de permisos predeterminado incluye lo siguiente:

  • allow-is-available
  • allow-scan

Tabla de Permisos

Identificador Descripción

nfc:allow-is-available

Habilita el comando is_available sin ningún alcance preconfigurado.

nfc:deny-is-available

Deniega el comando is_available sin ningún alcance preconfigurado.

nfc:allow-scan

Habilita el comando scan sin ningún alcance preconfigurado.

nfc:deny-scan

Deniega el comando scan sin ningún alcance preconfigurado.

nfc:allow-write

Habilita el comando write sin ningún ámbito preconfigurado.

nfc:deny-write

Deniega el comando write sin ningún ámbito preconfigurado.


© 2026 Colaboradores de Tauri. CC-BY / MIT