NDEF Explicado: El Formato Universal Que Permite a Cualquier Teléfono Leer Tu Etiqueta

NDEF es el formato estándar de capa de aplicación del NFC Forum: el contenedor que usa toda etiqueta NFC para que cualquier teléfono compatible lea los mismos bytes de la misma manera. Te explicamos cómo encajan mensajes, registros y valores TNF.

Published

Qué es NDEF — la respuesta en un párrafo

NDEF es el NFC Data Exchange Format, definido por el NFC Forum como el contenedor universal de capa de aplicación para etiquetas NFC. Se asienta sobre todos los tipos de etiqueta del NFC Forum —NTAG, MIFARE Ultralight, FeliCa, ICODE— de modo que el mismo mensaje codificado se lee de manera idéntica en un iPhone, un Android y un lector dedicado. ¿Alguna vez escribiste una URL en una etiqueta y la viste abrirse en ambas plataformas sin hacer nada más? Eso es NDEF haciendo su trabajo. La capa de radio resuelve la conversación; NDEF le da forma a los bytes. Para la parte de radio, mira cómo funciona NFC realmente; para el contexto más amplio, NFC frente a RFID y Bluetooth.

Cómo se estructura un mensaje NDEF

Un mensaje NDEF es uno o más registros concatenados. Según la especificación del NFC Forum y la referencia de NdefMessage de Android, el primer registro lleva una marca Message Begin (MB) y el último una marca Message End (ME). La mayoría de las etiquetas de consumo guardan un mensaje de un solo registro, aunque puedes agrupar varios cuando lo necesitas.

Cada cabecera de registro contiene un TNF (Type Name Format, 3 bits), banderas de control (MB, ME, CF, SR, IL), campos de longitud de tipo y de payload, una cadena de tipo corta, un ID opcional y el payload propiamente dicho.

La chuleta de TNF:

TNFSignificado
0x00Registro vacío
0x01Tipo bien conocido del NFC Forum — U, T, Sp, Sig
0x02Tipo de medio MIME, según RFC 2046
0x03URI absoluta, según RFC 3986
0x04Tipo externo del NFC Forum — por ejemplo android.com:pkg
0x05Desconocido
0x06Unchanged (registros fragmentados)

En teoría el payload de un registro puede alcanzar 2^32 − 1 octetos. En la práctica, el chip te impone un tope mucho antes —un NTAG213 trae 144 bytes de memoria de usuario.

Los tipos de registro que vas a encontrar

Unos pocos tipos bien conocidos hacen casi todo el trabajo.

El registro URI (TNF 0x01, tipo U) es con diferencia el más común. Su Record Type Definition usa un byte identificador de prefijo para abreviar el esquema —0x04 para https://, 0x05 para tel:, 0x06 para mailto:— así que el esquema no se guarda como texto literal. Codificar https://nfcore.app cuesta un byte de prefijo más once para nfcore.app: doce bytes en lugar de diecinueve. En una etiqueta de 144 bytes, eso importa.

El registro Text (tipo T) lleva UTF-8 más una cabecera corta con código de idioma. Smart Poster (tipo Sp) es a su vez un registro NDEF cuyo payload es un mensaje NDEF anidado: un sub-registro URI más Title (Text), Icon (imagen MIME), Action y Size opcionales. El Smart Poster RTD es el formato detrás de las etiquetas de "toca para ver el menú"; los lectores que no lo entienden recurren a la URI interna. Los registros MIME (TNF 0x02) llevan payloads tipados como image/png o application/vnd.bluetooth.ep.oob para handover Bluetooth. Los registros de tipo externo (TNF 0x04) enrutan a la app de un proveedor concreto.

Cómo decide el teléfono qué hacer con el toque

Ambas plataformas miran el tipo del primer registro para elegir el manejador. En Android, el framework NFC dispara un intent ACTION_NDEF_DISCOVERED y lo coteja con los filtros de intent registrados; las etiquetas sin NDEF disparan ACTION_TAG_DISCOVERED. En el iPhone XS y posteriores, Background Tag Reading analiza NDEF automáticamente y enruta un registro URL al navegador por defecto o a la app que registró un Associated Domain para ese host. La moraleja: pon tu registro más específico primero. Si combinas una URI con un registro Text para que un humano vea el destino antes de tocar, la URI tiene que ir primero o el sistema operativo no enrutará el toque.

Lo que te muestra NFCore

El flujo Write Data de NFCore te permite construir registros URL, Text, vCard, Wi-Fi y NDEF personalizados sin tocar hex. Después de escribir, la vista Memory Dump muestra los bytes —índice de byte, hex, ASCII— para que verifiques que la compresión de prefijo y el diseño del registro coinciden con lo que esperabas. La Command Console expone lecturas de página en bruto cuando quieres mirar el propio envoltorio TLV NDEF: el byte de longitud 0x03 que abre un mensaje NDEF y el terminador 0xFE.

Preguntas frecuentes

¿NDEF es igual en iPhone y Android?

Sí. NDEF está definido por el NFC Forum, y el mismo mensaje codificado se lee de manera idéntica en iOS Core NFC y en android.nfc de Android. Las diferencias están en lo que cada sistema operativo hace con el resultado, no en cómo se interpretan los bytes.

¿Cuál es la diferencia entre un registro NDEF y un mensaje NDEF?

Un mensaje es el contenedor; los registros son los elementos que van dentro. Un mensaje NDEF es uno o más registros concatenados, con el primero llevando la marca Message Begin y el último la marca Message End.

¿Por qué mi registro URL ocupa menos bytes de lo que esperaba?

El registro URI usa un byte identificador de prefijo —0x04 para https://, 0x05 para tel:, 0x06 para mailto:— así que el esquema no se guarda como texto literal. En un NTAG213 de 144 bytes eso ahorra varios bytes por registro.

¿Necesito NDEF de verdad?

Si tu lector es tu propia app personalizada hablando con tu propia etiqueta, no. Pero todo teléfono de consumo y todo manejador por defecto del sistema operativo espera NDEF. Úsalo a menos que tengas una razón específica para no hacerlo.

Cerrando

Una vez que tienes el modelo de mensaje y registro en la cabeza, el resto del ecosistema NFC encaja con limpieza. La capacidad del NTAG te dice qué registros caben; la autoría Smart Poster se vuelve "un sub-registro URI más metadatos opcionales". NDEF convierte la memoria de la etiqueta en algo que cualquier teléfono puede enrutar; cuando puedes ver los bytes en el Memory Dump de NFCore, el formato deja de parecer magia.


¿Listo para Comenzar?

Descarga NFCore y comienza a gestionar tus etiquetas NFC como un profesional.