Por Qué la Lectura NFC en Segundo Plano del iPhone Necesita un Enlace Universal
Si una etiqueta NFC abre Safari en lugar de una app en el iPhone, la etiqueta no es el problema — la URL no es un enlace universal funcional. Esto es lo que la lectura NFC en segundo plano realmente comprueba, y los errores de configuración que lo rompen sin avisar.
Qué Es
La lectura NFC en segundo plano del iPhone solo entrega el toque a una app cuando el registro NDEF de la etiqueta contiene un Universal Link de Apple válido — no una URL cualquiera, y no un esquema personalizado como myapp://. Si el enlace no se resuelve como un universal link correctamente configurado, iOS lo trata como cualquier otra dirección web y lo abre en Safari.
Por eso la lectura NFC en segundo plano confunde a la gente. Una etiqueta puede parecer perfectamente correcta — la tocas, el teléfono vibra, se abre una pantalla — y aun así fallar, porque "se abrió una pantalla" no es lo mismo que "se abrió la app correcta". Esto es lo que iOS comprueba realmente antes de enrutar un toque, y los errores de configuración que hacen que una etiqueta termine en el navegador sin que nadie se dé cuenta.
Cómo Funciona Realmente
Cuando tocas una etiqueta con la pantalla bloqueada o la app cerrada, iOS lee el mensaje NDEF y solo mira el primer registro — un universal link en un segundo o tercer registro se ignora. Ese registro tiene que ser de tipo URI y apuntar a un dominio que la app haya reclamado explícitamente. Además de los enlaces https://, los únicos otros esquemas que iOS admite en segundo plano son mailto:, sms:, tel:, FaceTime, Apple Maps y X-HM:// de HomeKit. Los esquemas personalizados de apps nunca activan el enrutamiento en segundo plano, aunque sí funcionan en una sesión Core NFC en primer plano. (Consulta nuestros artículos sobre registros URI NDEF y tipos de etiqueta NFC Forum para saber cómo codifican esto las etiquetas.)
Reclamar un dominio requiere el entitlement Associated Domains en Xcode, más un archivo apple-app-site-association firmado y alojado en ese dominio por HTTPS. Sin ambos, iOS abre el enlace como un simple marcador.
También necesita un iPhone XS o más reciente, desbloqueado al menos una vez desde el reinicio, y se pausa mientras hay una sesión NFC o una transacción de Apple Pay activa, la cámara en uso, o el Modo Avión encendido. Nada de esto ocurre en silencio — primero aparece una notificación del sistema, y el usuario tiene que tocarla antes de que la app se abra.
Dónde Lo Verás
Esto importa sobre todo en casos de "toca y abre": una automatización de Atajos disparada por una etiqueta en el escritorio, una escena de casa inteligente, una etiqueta de tarjeta de presentación que abre una pantalla de guardar contacto en vez de una página web, o una pulsera de evento que lleva a los asistentes directo a una app de registro. Una etiqueta https:// simple funciona en cualquier teléfono, pero no puede entregar el control a una app — el universal link solo vale la pena cuando el mapeo dominio-a-app está realmente configurado.
Aquí también es donde el fallo se vuelve confuso. Desarrolladores han reportado casos en los que todo parecía correcto sobre el papel — archivo de asociación firmado, entrada applinks:, validador con resultado correcto — y la etiqueta seguía abriendo Safari. Culpables habituales: un certificado de firma que no coincide, una caché desactualizada en el dispositivo, un Team ID equivocado, o el archivo servido sin el tipo application/json. Nada de esto lanza un error visible; la etiqueta simplemente sigue cayendo en el navegador.
Consejos, Errores Comunes y una Guía Rápida con NFCore
Antes de asumir que la etiqueta está rota, revisa en orden: si el registro URI es el primero, si Associated Domains está activado para la app, y si el archivo de asociación es HTTPS, está firmado correctamente y se sirve como application/json.
Para comprobar qué hay realmente escrito en una etiqueta propia, el Inspector de Etiquetas de NFCore lee el payload NDEF crudo para ver cuál registro va primero y cuál es la URL real. Para codificar el enlace tú mismo, puedes escribir el registro NDEF con el escritor de NFCore, definiendo el registro URI directamente.
Vale la pena ser honestos: NFCore puede confirmar qué hay en la etiqueta, pero no puede arreglar una configuración de universal link rota — eso es un problema del lado del desarrollador de la app, no algo que una app lectora/escritora pueda cambiar.
Preguntas Frecuentes
¿Por qué mi iPhone abre Safari en lugar de mi app al tocar una etiqueta NFC?
La URL de la etiqueta no se reconoce como un universal link funcional. Cuando iOS no puede mapear el dominio a una app instalada, abre la URL como cualquier dirección web común — sin ningún error, así que esto se ve idéntico a una etiqueta que sí funciona.
¿Puedo usar un esquema de URL personalizado como myapp:// en una etiqueta NFC para la lectura en segundo plano?
No. La lectura en segundo plano solo enruta a través de Universal Links de Apple, más una lista corta de esquemas del sistema como mailto:, tel: y enlaces de Apple Maps. Los esquemas personalizados de apps se ignoran en silencio en segundo plano, aunque funcionen en una sesión Core NFC en primer plano.
¿Qué iPhones admiten la lectura NFC en segundo plano?
iPhone XS y más recientes, desbloqueados al menos una vez desde el último reinicio. La lectura también se pausa mientras hay una sesión NFC en primer plano, una transacción de Apple Pay o la cámara activa, o mientras el Modo Avión está encendido.
¿Por qué una etiqueta sigue abriendo Safari aunque mi configuración de universal link parezca correcta?
Los universal links dependen de un archivo de configuración firmado alojado en tu dominio, y esa validación puede fallar en silencio: un certificado que no coincide, una caché desactualizada en el dispositivo, un Team ID que no coincide, o el tipo de contenido incorrecto en el archivo. No hay ningún mensaje de error para nada de esto — la etiqueta simplemente sigue cayendo en el navegador.
Conclusión
Que una etiqueta NFC tocada abra una app o solo una pestaña del navegador se reduce a una sola cosa: un universal link correctamente configurado, no la etiqueta en sí. Consigue el orden del registro, el entitlement Associated Domains y el archivo de asociación alojado correctamente, y la entrega es instantánea. Falla en cualquiera de ellos, y la etiqueta seguirá "funcionando" — solo que no hará lo que se construyó para hacer.