Registros NDEF personalizados: más allá de URL y texto
URL y Text son solo dos de los tipos de registro que admite NDEF. Los registros personalizados —MIME y External Type— son la base de los Smart Posters, las etiquetas de emparejamiento Bluetooth y los datos específicos de cada app. Aquí está lo que hay detrás, y cómo escribir uno tú mismo con NFCore.
Qué es (respuesta en un párrafo)
Un registro NDEF personalizado es cualquier registro NFC que no usa los tipos "conocidos" del NFC Forum: nada de un simple registro URL ni de Text. En su lugar, se apoya en uno de dos mecanismos de autoservicio: un registro MIME (etiquetado con una cadena MIME estándar o inventada) o un registro External Type (etiquetado con un dominio que tú controlas, como com.yourapp:sensor-reading). Si alguna vez escribiste un registro de URL o Wi-Fi con NFCore, ya usaste el lado "conocido" de NDEF. Los registros personalizados son la otra mitad — el mecanismo detrás de los Smart Posters, las etiquetas de emparejamiento Bluetooth y cualquier dato específico que una app necesite guardar en una etiqueta.
Cómo funciona en realidad
Cada registro NDEF empieza con un byte de cabecera llamado Type Name Format (TNF). Le indica al lector a qué espacio de nombres pertenece la cadena de tipo del registro. Para un registro personalizado, eliges uno de estos dos valores de TNF:
TNF_MIME_MEDIA— el tipo es una cadena MIME, ya sea estándar (comotext/vcard) o inventada para tu propia app.TNF_EXTERNAL_TYPE— el tipo es una cadena de dominio inverso, comocom.yourapp:config, que se espera que solo tú uses.
La clase NdefRecord de Android te da los métodos estáticos createMime() y createExternal(), así que nunca tienes que ensamblar los bytes de cabecera a mano — solo indicas la cadena MIME o el dominio:tipo, más un payload en bytes. Core NFC en iOS hace el mismo trabajo con un enum NFCTypeNameFormat: .media para registros MIME y .nfcExternal para registros External Type. Escribe un registro con TNF_EXTERNAL_TYPE en Android, léelo de vuelta en iOS con .nfcExternal, y funciona sin problemas — siempre que ambos lados coincidan exactamente en la cadena dominio:tipo. Ese acuerdo es todo el contrato. Sin registro central, sin proceso de aprobación.
Dónde los verás
El ejemplo más común es el tipo de registro Smart Poster, que en realidad no es un solo registro personalizado sino una pequeña composición de registros conocidos — un registro URI más registros Text y Action — que le dice al lector si debe abrir un enlace, guardarlo o actuar sobre él en segundo plano. Los registros personalizados propiamente dichos aparecen cuando un producto necesita datos estructurados que un tipo conocido simplemente no puede expresar. La etiqueta de emparejamiento de un altavoz Bluetooth, por ejemplo, guarda un registro MIME con un tipo documentado como application/vnd.bluetooth.ep.oob, de modo que un solo toque inicia el emparejamiento en lugar de un recorrido por el menú de ajustes de Bluetooth. Es el mismo mecanismo de handover estático que el NFC Forum definió para etiquetas pasivas — sin alimentación, sin negociación, solo un registro que cualquier lector puede recoger al primer contacto. Es un primo cercano de cómo Apple Pay y Google Pay usan NFC: un payload personalizado y muy específico que viaja por el mismo enlace NFC que también puede llevar un simple registro Text.
Consejos, trampas habituales y una guía rápida con NFCore
Elige un dominio External Type que realmente controles — el nombre de paquete de tu app, o un dominio que poseas — en lugar de adivinar algo genérico que otro desarrollador también podría elegir. Y recuerda: los bytes crudos de una etiqueta sin cifrar, registro personalizado incluido, son legibles por cualquiera con un teléfono compatible. Vale la pena revisar qué es lo que realmente está en riesgo cuando cualquiera puede leer una etiqueta antes de poner algo sensible en una.
¿Quieres probarlo? Abre el modo de escritura sin procesar de NFCore, elige un registro personalizado, introduce una cadena dominio:tipo que controles (por ejemplo, com.yourname:note) y escribe un payload de texto breve. Lee la etiqueta de inmediato para confirmar que el tipo y el payload coinciden con lo que escribiste. Esa comprobación de ida y vuelta es la forma más rápida de detectar un error de tipeo en la cadena dominio:tipo antes de que termine en diez etiquetas en lugar de una. Puedes descargar NFCore para iOS o Android desde nfcore.app si quieres probar esto en tus propias etiquetas.
Preguntas frecuentes
¿Cuál es la diferencia entre un registro MIME y un registro External Type?
El tipo de un registro MIME es una cadena MIME estándar (como application/vnd.bluetooth.ep.oob), así que cualquier app que ya maneje ese tipo MIME en otro contexto puede reclamarlo. El tipo de un registro External Type es una cadena de dominio inverso que tú mismo inventas (como com.yourapp:config), lo que garantiza que no chocará con el tipo de registro de nadie más.
¿Puedo leer en iOS un registro NDEF personalizado escrito por una app de Android, o viceversa?
Sí — TNF_EXTERNAL_TYPE en Android y .nfcExternal en Core NFC de iOS describen el mismo formato en el cable. Mientras ambas apps coincidan en la cadena exacta de dominio:tipo, el registro se transfiere correctamente entre plataformas.
¿Necesito la aprobación del NFC Forum para inventar mi propio tipo de registro?
No. Tanto External Type como MIME son mecanismos de autoservicio — no se registran ante el NFC Forum. Ese es justamente el sentido de la convención del prefijo de dominio: si eres dueño del dominio o del nombre de paquete que usas, no hace falta ningún registro central ni paso de aprobación.
Conclusión
Los registros NDEF personalizados no son un formato avanzado ni restringido — son el mismo mecanismo MIME o External Type del que ya depende cada etiqueta de emparejamiento Bluetooth y cada función NFC específica de una app, sin nada que se interponga entre tú y escribir uno. Una vez que te sientas cómodo construyendo un solo registro personalizado, combinar varios — tal como Smart Poster combina un registro URI, Text y Action — es simplemente ese mismo bloque de construcción, repetido.
¿Listo para Comenzar?
Descarga NFCore y comienza a gestionar tus etiquetas NFC como un profesional.