¿Qué es NDEF, y por qué lo usa toda etiqueta legible?
NDEF, el NFC Data Exchange Format, es un contenedor pequeño que dice qué guarda una etiqueta y a la vez lo guarda. Una etiqueta escrita en NDEF la entiende cualquier lector conforme, incluido el del sistema operativo. Una etiqueta escrita sin NDEF guarda bytes que solo su propio programa sabe interpretar.
El problema que resuelve NDEF
Una etiqueta es un bloque pequeño de memoria. Sin un acuerdo previo, los bytes que contiene no significan nada para quien no los escribió: ¿es una dirección web, una medida de temperatura, un identificador o ruido?
NDEF aporta ese acuerdo. Envuelve el contenido en una estructura que explica qué es ese contenido, de modo que un lector que nunca antes ha visto esa etiqueta puede aun así decidir qué hacer con ella.
La forma de un mensaje
Un mensaje NDEF es una sucesión de registros. Cada registro lleva una cabecera pequeña que describe de qué clase de cosa se trata y cómo hay que interpretar ese tipo, seguida del contenido en sí.
Esa cabecera es todo el sentido del invento. Es lo que permite a un teléfono ver un registro y concluir «esto es una dirección web» en vez de «esto son cuarenta bytes». De los registros de tipo conocido se encarga el sistema operativo sin que intervenga ninguna aplicación, y por eso un acercamiento puede abrir un navegador en un aparato donde no se ha instalado nada para ello.
Cómo se ve una etiqueta sin NDEF
Se ve como si estuviera rota, y ese es el problema práctico.
El teléfono detecta la etiqueta, identifica su técnica y anuncia que no hay nada sobre lo que actuar. Para quien acerca el teléfono, eso es indistinguible de una lectura fallida, aunque la lectura haya salido perfectamente y la memoria pueda estar llena de datos.
De ahí viene buena parte de los avisos de «mi teléfono ve la etiqueta pero no pasa nada». El lado radio ha funcionado. Sencillamente no había nada en un formato que algo pudiera interpretar.
Lo que cuesta el contenedor
Bytes. La estructura trae consigo una sobrecarga, y en una etiqueta pequeña esa sobrecarga es una parte apreciable de lo que has pagado. Una etiqueta anunciada con cierta capacidad ofrece menos de esa capacidad para tu contenido real, y el déficit crece con el número de registros.
De ahí sale una regla que merece la pena aplicar: un registro es mejor que varios. Una sola dirección web en un registro deja más sitio y se lee más rápido que esa misma información repartida en un enlace, un título y una nota, porque cada registro adicional trae bytes de cabecera que el lector debe leer.
La excepción es la redundancia deliberada, por ejemplo un registro de texto adicional para que en las plataformas que ignoran el tipo de registro principal aparezca al menos algo legible. Esos bytes valen la pena.
Preguntas frecuentes
¿Tengo que usar NDEF?
Técnicamente no, pero para todo lo que vaya a leer el teléfono de otra persona la respuesta en la práctica es sí. Sin NDEF tendrías que distribuir una aplicación que conozca tu reparto de memoria, lo que anula el sentido de pegar una etiqueta en un cartel.
¿Todos los teléfonos leen NDEF igual?
El análisis es el mismo, la reacción no. Las dos plataformas leen el contenedor de forma idéntica y después aplican sus propias reglas sobre qué tipos de registro disparan una acción, y es justo ahí donde el comportamiento se separa.
¿Puede una etiqueta guardar NDEF y otros datos a la vez?
En muchos chips sí, porque NDEF ocupa una zona determinada y el resto de la memoria puede contener lo que quieras. Solo la parte NDEF la entiende un lector cualquiera, todo lo que quede fuera necesita tu propio programa.
¿Por qué mi etiqueta muestra menos espacio libre del anunciado?
Una parte de la memoria sostiene la estructura que describe la propia etiqueta, y el contenedor NDEF trae su propia sobrecarga. Ambas se descuentan antes que tu contenido, y la diferencia es normal, no un defecto.