Appy

Herramienta dev gratis

Validador de enlaces universales

Asegúrate de que tus enlaces abran la app. Pega un dominio para revisar los Universal Links de iOS y los App Links de Android, y obtén un resultado claro con pasos de corrección para tu equipo técnico.

Ejecutar validación
Pega un dominio o URL y valida tu configuración de apertura de app.

Cómo funciona

Qué pasa cuando alguien toca tu enlace

Ninguna de las dos plataformas consulta tu dominio en el momento del toque. Lo comprueban al instalar la app, guardan la respuesta y la usan cuando alguien toca un enlace. Por eso un archivo roto puede pasar días sin que nadie lo note, y por eso uno corregido no surte efecto al instante.

iPhone y iPad

apple-app-site-association
  1. Al instalar

    Lee Associated Domains

    iOS revisa las entradas applinks: del entitlement Associated Domains de la app.

  2. Al instalar

    Lo descarga vía la CDN de Apple

    La CDN de Apple descarga el archivo de tu dominio y le entrega al dispositivo su copia en caché.

  3. Al tocar

    Compara el enlace

    iOS compara el dominio y la ruta tocados con los app IDs y las reglas paths o components de ese archivo.

  4. Resultado

    Coincide: se abre tu app

    Sin coincidencia o sin archivo: Safari abre la página

Android

assetlinks.json
  1. Al instalar

    Lee los intent filters

    Android busca los intent filters marcados con autoVerify para tu dominio.

  2. Al instalar

    Descarga assetlinks.json

    Pide el archivo en /.well-known/ de cada host declarado. Una redirección cuenta como fallo.

  3. Al instalar

    Verifica el certificado de firma

    El package name y la huella SHA-256 del archivo deben coincidir con el certificado que firmó la app instalada.

  4. Resultado

    Verificado: se abre tu app

    Sin verificar: se abre el navegador, o un selector de apps en versiones antiguas de Android

El validador revisa la parte de servidor de ambas cadenas: si cada archivo está donde iOS y Android lo buscan, y si contiene lo que necesitan leer.

Comprobaciones

Qué revisa esta herramienta

Cada ejecución hace hasta diez peticiones: los dos archivos de asociación en tu dominio y en su gemelo con o sin www, la copia de la CDN de Apple y la Digital Asset Links API de Google. Esto es lo que mira.

  • Dos ubicaciones, dos hosts

    Busca apple-app-site-association en /.well-known/ y en la raíz, y assetlinks.json en /.well-known/, tanto en tu dominio como en su versión con www.

  • HTTPS y un 200

    Muestra el código HTTP de cada petición, además de los tiempos de espera agotados y los errores de conexión que impiden cargar un archivo.

  • Redirecciones

    Sigue las redirecciones, muestra dónde terminó cada petición y avisa si la URL final está en otro host o en HTTP sin cifrar.

  • HTML donde debería haber JSON

    Detecta una página de login, una plantilla de error o un desafío anti-bots de Cloudflare, Akamai y servicios similares, y muestra la cabecera Content-Type recibida.

  • JSON válido

    Analiza cada archivo y, si falla, cita el error del parser para que sepas qué corregir.

  • applinks y app IDs

    Confirma que existe applinks.details y lista todos sus app IDs. Añade tu App ID en Avanzado para comprobar que el tuyo está. Reconoce archivos firmados (PKCS7), pero no los decodifica.

  • Relation y package names

    Comprueba que assetlinks.json sea un array JSON con la relation delegate_permission/common.handle_all_urls y lista sus package names. Añade tu paquete en Avanzado para cotejarlo.

  • Huella SHA-256

    Pega la huella de tu certificado de firma en Avanzado y el validador la busca en el archivo, con o sin dos puntos.

  • La copia de Apple, la vista de Google

    Lee la copia que la CDN de Apple entrega a los iPhone y pregunta a la Digital Asset Links API de Google qué encuentra para tu sitio, para que compares ambas con tu servidor.

¿Aún no tienes el archivo o su JSON no es válido?Créalo con el generador de AASA y assetlinks.json

Lo que no puede ver

La parte de la app: el entitlement Associated Domains, los intent filters, si una ruta concreta encaja con tus reglas paths o components y cómo se comporta cada navegador in-app. Pruébalo en un dispositivo real antes de lanzar.

Resolución de problemas

Por qué los enlaces siguen abriendo el navegador

Casi todos los casos se reducen a uno de estos ocho. Los del lado del servidor los ves en el validador; el resto solo aparece en un teléfono real.

  1. 01iOS + Android

    El toque ocurre dentro de Instagram, Facebook o TikTok

    Funciona desde Notas o Mensajes, pero abre una web desde la bio o un anuncio.

    Solución

    Estas apps abren los enlaces en su propio navegador in-app, que a menudo se queda con la URL en vez de pasársela a iOS o Android. Prueba cada canal por separado y asegúrate de que el enlace lleve a un buen destino aunque la app no se abra, como la ficha de la tienda o tu sitio web.

    Prueba en un dispositivoDeep links en Instagram y TikTok
  2. 02iOS + Android

    El archivo de asociación redirige

    El archivo se abre bien en el navegador, pero la verificación falla.

    Solución

    Apple y Android esperan un 200 directo en la URL exacta. Quita en /.well-known/ las redirecciones de http a https, del dominio raíz a www o por idioma.

  3. 03iOS + Android

    Content-Type incorrecto

    El archivo carga, pero la plataforma lo ignora.

    Solución

    Sirve ambos archivos como application/json. El archivo AASA no tiene extensión, así que muchos servidores envían application/octet-stream o text/plain.

  4. 04iOS

    La CDN de Apple aún tiene el archivo viejo

    Corregiste el archivo, pero los iPhone siguen abriendo Safari.

    Solución

    La CDN de Apple sirve una copia en caché que va por detrás de tu servidor; el validador muestra ambas. Mientras pruebas, añade ?mode=developer al entitlement y activa Associated Domains Development en los ajustes de desarrollador del dispositivo.

  5. 05Android

    Falta la clave de Play App Signing

    Tus builds abren la app; las instalaciones desde Play Store abren el navegador.

    Solución

    Con Play App Signing, Google firma la app que instala la gente. Añade el SHA-256 que aparece en Play Console, Integridad de la app, certificado de la clave de firma de la app. Conserva también la clave de subida si distribuyes builds fuera de Play.

    Visible en el validadorAndroid App Links sin verificar
  6. 06iOS

    El enlace apunta al mismo dominio de la página

    Los botones de tu web abren más páginas web en lugar de la app.

    Solución

    iOS mantiene a la persona en Safari cuando toca un enlace universal al dominio en el que ya está. Pon los enlaces de la app en un subdominio aparte o usa un Smart App Banner en la web.

  7. 07iOS

    La persona eligió Safari una vez

    El enlace funciona en tu teléfono, pero no en el de un compañero.

    Solución

    Tocar el dominio en la esquina superior derecha tras abrirse la app le dice a iOS que prefiera Safari para ese dominio. Para revertirlo, mantén pulsado el enlace y elige abrirlo en la app.

  8. 08iOS

    El App ID no coincide con la build

    Funciona en la build de staging, falla en la de producción.

    Solución

    La entrada debe ser tu Team ID más el bundle ID exacto de la app publicada, por ejemplo ABCDE12345.com.example.app. Escríbelo en Avanzado y el validador lo comprueba.

Olvídate de la fontanería

Crea enlaces que simplemente funcionan

Un enlace de Appy mira cada toque y lo envía al sitio correcto: App Store en un iPhone, Google Play en Android, tu web en un ordenador. Activa los deep links en Pro y quien ya tenga la app entrará directamente en ella.

  • Plan gratuito
  • Sin tarjeta de crédito
  • Clics ilimitados en todos los planes
  • Tus enlaces siguen funcionando si cancelas

En Enterprise, tu app recibe su propio dominio de enlaces y Appy aloja allí apple-app-site-association y assetlinks.json por ti. Cómo funciona el SDK

Preguntas frecuentes

¿Qué es el archivo apple-app-site-association (AASA)?

Un archivo JSON en tu dominio que le dice a iOS qué apps pueden abrir qué enlaces. Vive en https://tu-dominio/.well-known/apple-app-site-association, sin extensión .json, y lista tus app IDs (Team ID más bundle ID) con las reglas paths o components que gestionan.

¿Dónde tienen que estar los archivos de asociación?

iOS lee /.well-known/apple-app-site-association y Android lee /.well-known/assetlinks.json, en cada host que uses en tus enlaces. Ambos deben cargar por HTTPS con un 200 directo, sin redirecciones y con el content type application/json.

¿Por qué los enlaces universales abren Safari en lugar de mi app?

O la verificación falló (archivo ausente, redirigido o inválido, o un app ID que no coincide con la build), o iOS eligió Safari a propósito: el toque vino de un navegador in-app o de una página del mismo dominio, o la persona eligió Safari alguna vez. Pasa primero el validador; si todo está bien, prueba esos casos en un dispositivo.

¿Cómo compruebo mi assetlinks.json?

Escribe tu dominio arriba y abre Avanzado para añadir tu package name y tu huella SHA-256. En un teléfono de pruebas, adb shell pm get-app-links com.example.app muestra si Android marcó cada dominio como verificado.

¿Por qué Android dice que falló la verificación de App Links?

Lo más habitual es que la huella de assetlinks.json sea la de tu clave de subida, mientras que las instalaciones desde Play Store van firmadas con la clave de firma de Google. Después vienen las redirecciones, un content type incorrecto y la protección anti-bots en /.well-known/. Tras corregir el archivo, ejecuta adb shell pm verify-app-links --re-verify com.example.app.

¿Cuánto tarda Apple en recoger un AASA modificado?

No hay refresco instantáneo. Los dispositivos reciben el archivo de la CDN de Apple, que sirve una copia en caché, así que un arreglo en tu servidor tarda en llegar. El validador muestra la copia de la CDN junto a la tuya. Durante el desarrollo, ?mode=developer en el entitlement permite que el dispositivo lo descargue directamente de tu servidor.

¿Funcionan los enlaces universales dentro de Instagram, Facebook o TikTok?

A menudo no. Estas apps abren los enlaces en su propio navegador in-app, y que el toque llegue a tu app depende de la app y de la ubicación. Prueba cada canal y asegúrate de que tu sitio web o la ficha de la tienda funcionen bien como destino por sí solos.

¿El validador revisa mi app, los entitlements o las rutas?

No. Lee lo que devuelven tu servidor, la CDN de Apple y la Digital Asset Links API de Google. La parte de la app, es decir, el entitlement Associated Domains, los intent filters y si una ruta encaja con tus reglas, requiere una prueba en un dispositivo real.

¿Qué diferencia hay entre deep links y enlaces universales?

Un deep link es cualquier enlace que abre una pantalla concreta de una app. Los Universal Links de iOS y los App Links de Android son el tipo verificado: URLs HTTPS normales que abren la app si está instalada y una página web si no lo está.

¿Necesito una cuenta? ¿Puedo compartir el resultado?

No necesitas cuenta y el validador es gratuito. Cada ejecución tiene su propia URL, que puedes copiar y enviar a tu desarrollador. Esas páginas de resultados no se indexan en buscadores.