- La verificación de App Links depende críticamente de la coincidencia exacta entre la huella SHA-256 de la Play Console y el archivo assetlinks.json.
- iOS utiliza un sistema de CDN intermedio para validar los Universal Links, lo que puede generar retrasos en la actualización de los archivos AASA.
- El comportamiento nativo de los sistemas operativos puede bloquear la apertura de apps si el usuario interactúa directamente con la barra de direcciones del navegador.
Seguro que te ha pasado: te has dejado la piel configurando los enlaces de tu aplicación y, cuando llega el momento de la verdad, el móvil decide abrir el navegador en lugar de saltar directamente a tu app. Es una situación frustrante que puede hacerte pensar que el código está roto, cuando en realidad el ecosistema de iOS y Android tiene sus propias mañas y reglas que no siempre son evidentes a primera vista.
Para poner orden en este caos, es fundamental entender que no estamos hablando de un solo problema, sino de una interacción compleja entre servidores, certificados de firma y el sistema operativo del dispositivo. Ya sea que estés peleándote con los Universal Links de Apple o con los App Links de Google, la clave está en seguir una metodología de descarte para no volverse loco tocando archivos al azar.
El laberinto de los Universal Links en iOS

Antes de entrar en pánico, lo primero es comprobar si el enlace está realmente roto. Apple ha diseñado los Universal Links para que, en ciertos casos, el navegador conserve el control. Por ejemplo, si el usuario escribe la URL a mano en Safari o si el enlace apunta al mismo dominio donde ya se encuentra el usuario, la app no se abrirá. Para hacer una prueba real, lo más sencillo es pegar el link en la app de Notas y mantenerlo pulsado; si el menú sugiere abrir tu app, la configuración es correcta y el problema es simplemente el comportamiento esperado del sistema.
Un punto crítico es que, desde iOS 14, los dispositivos no consultan tu servidor directamente, sino que pasan por el CDN de Apple. Esto significa que puedes tener el archivo apple-app-site-association perfecto en tu web, pero si Apple aún no lo ha indexado, el teléfono no se enterará. Para diagnosticar esto, puedes usar herramientas como el validador de Appy o, si tienes un Mac, la herramienta swcutil para contrastar la URL con el archivo local.
Si tienes acceso al modo desarrollador en el iPhone, puedes ir a Ajustes > Desarrollador > Universal Links para ver la pantalla de diagnósticos. Allí podrás ver si el estado es approved o si ha sido denegado. Si ves que el archivo no se actualiza, recuerda que el sistema revisa la asociación aproximadamente cada semana, aunque reinstalar la aplicación suele forzar una actualización inmediata del archivo AASA.
Dominando los App Links en Android

En el mundo de Android, la cosa cambia porque no hay un intermediario como el CDN de Apple; el dispositivo descarga el archivo assetlinks.json directamente desde la carpeta .well-known de tu servidor. A partir de Android 12, la verificación se ha vuelto mucho más estricta: si el enlace no está verificado, el sistema ni siquiera preguntará al usuario y abrirá el enlace en el navegador por defecto.
Uno de los errores más comunes y desesperantes ocurre con la firma de la app. Es muy habitual que el enlace funcione en tu dispositivo de pruebas pero falle en producción. Esto pasa porque, al usar Play App Signing, Google firma la aplicación con una clave distinta a la que usas para subir el APK. Para solucionarlo, debes copiar la huella SHA-256 que aparece en la consola de Google Play (Release > Setup > App signing) y añadirla al array de huellas de tu archivo JSON, manteniendo también la de debug para no romper el flujo de desarrollo.
Para quienes se encuentran en un callejón sin salida donde todo parece estar bien configurado pero los links siguen sin responder, existe un truco un tanto drástico pero efectivo. A veces, el problema reside en la caché del sistema. Borrar el almacenamiento y la caché de Android System Webview, Google Play Services y Google Services Framework, seguido de un reinicio, ha resultado ser la solución definitiva para errores persistentes de redirección.
La revolución de los App Links dinámicos en Android 15

Con la llegada de Android 15, se ha introducido una funcionalidad que es una auténtica maravilla para los desarrolladores: los App Links dinámicos. Básicamente, permiten cambiar las reglas de cómo se abren los enlaces directamente desde el servidor, sin tener que obligar a los usuarios a actualizar la aplicación desde la tienda. Esto se logra mediante la sección dynamic_app_link_components en el archivo assetlinks.json.
Esta capacidad es oro puro para gestionar campañas de marketing temporales o crear rutas específicas para influencers. Por ejemplo, puedes activar una ruta de /promo/verano y luego eliminarla cuando termine la oferta, todo desde tu servidor. No obstante, hay una regla de oro: el archivo JSON no puede expandir el alcance definido en el manifiesto de la app. Por tanto, lo ideal es configurar un filtro de intents muy amplio en el manifiesto y luego usar el JSON para refinar y restringir exactamente qué URLs deben abrir la aplicación.
Consideraciones técnicas y errores comunes
Es vital recordar que si un enlace no es una etiqueta ancla estándar, sino que se dispara mediante la instanciación de un nuevo WebView o a través de JavaScript (como un onload), el sistema operativo no lo reconocerá como una acción iniciada por el usuario y, por ende, no disparará la apertura de la app. Para evitar esto, siempre se recomienda usar enlaces tradicionales dentro del flujo de navegación.
Además, hay que tener cuidado con las redirecciones. Si tu servidor redirige automáticamente de http a https o de example.com a www.example.com, Android podría fallar en la verificación del archivo assetlinks.json. Asegúrate de que el archivo sea accesible directamente y sin saltos intermedios para garantizar que la asociación se establezca sin errores. No obstante, cabe destacar que las redirecciones HTTP 3xx suelen conservar la referencia al evento de usuario original, a diferencia de las redirecciones por JavaScript.
Mantener la coherencia entre los certificados de firma, la correcta publicación de los archivos de asociación en el servidor y la comprensión de los comportamientos nativos de cada sistema operativo es lo que garantiza que los usuarios lleguen a tu contenido sin fricciones. Ya sea ajustando el SHA-256 en la Play Console, verificando el CDN de Apple o aprovechando las nuevas reglas dinámicas de Android 15, la clave reside en validar cada paso del flujo de verificación para evitar que el navegador se interponga en la experiencia del usuario.