Crear APK gratis

Estructura de la app y navegación

Enlaces profundos

Abre páginas específicas desde URLs y notificaciones

1¿Qué son los enlaces profundos?#

Los enlaces profundos permiten que fuentes externas (navegadores, SMS, correos, redes sociales, notificaciones push, códigos QR) abran tu app directamente en una página específica en lugar de la página de inicio.

Tu app admite dos tipos, y NO son igual de fáciles:

  1. ⚡ Custom Scheme (myapp://path): funciona de inmediato, sin nada que configurar. Ideal para notificaciones push y códigos QR.
  1. 🌐 Enlaces https:// (https://mysite.com/page): necesitan UN archivo subido a tu sitio web. Sin él, Android mantiene el enlace en el navegador y tu app nunca se abre. Esta es la razón más común por la que los enlaces profundos 'no funcionan'.

Ambos se explican abajo. Si solo necesitas algo que funcione hoy, usa el esquema personalizado.

2Cómo funcionan las URLs de esquema personalizado#

Cuando se toca un enlace de esquema personalizado (p. ej., myapp://products/shoes), la app:

  1. Recibe la URL del esquema personalizado
  2. La asigna automáticamente a la URL de tu sitio web
  3. Abre el WebView en la página correcta

✅ El esquema se obtiene del nombre de tu app (en minúsculas, solo letras).

✅ Ejemplo de correspondencia:
myapp://products/shoes
→ https://mysite.com/products/shoes

Los segmentos de ruta después del esquema se conservan y se añaden al dominio de tu sitio web.

Custom scheme format:
  <appname>://<path>

Examples:
  myshop://cart
  → https://myshop.com/cart

  puma://in/en/help
  → https://in.puma.com/in/en/help

Esta es la parte que la gente pasa por alto, así que léela antes de probar.

AppMint pone tu dominio en la app automáticamente. Pero Android NO abrirá tu app desde un enlace https:// hasta que tu SITIO WEB demuestre que la app te pertenece. En Android 12 y posteriores, un enlace sin comprobar simplemente abre el navegador: sin diálogo, sin opción. Por eso un enlace puede parecer que 'no hace nada'.

La prueba es un archivo pequeño. AppMint ya lo creó por ti: después de compilar, busca assetlinks.json en Descargas. Contiene el nombre del paquete y la huella digital de firma de tu app.

Súbelo a tu sitio web EXACTAMENTE en esta dirección (el nombre de la carpeta empieza con un punto):

https://yoursite.com/.well-known/assetlinks.json

Rules — all four must be true:
  1. Served over https (not http)
  2. Content-Type: application/json
  3. NO redirect (a redirect to www breaks it)
  4. Reachable publicly — no login, no Cloudflare challenge

Check it from any computer:
  curl -i https://yoursite.com/.well-known/assetlinks.json

4¿Publicas en Google Play? Usa la huella digital de Play#

Google Play vuelve a firmar tu app con SU propia clave. Así que la huella digital dentro del assetlinks.json que generó AppMint, que es tu clave local, no coincidirá con lo que los usuarios realmente instalan desde Play.

Si publicas en Play, reemplaza la huella digital:

  1. Play Console → tu app → Test and release → Setup → App integrity
  2. Copia el SHA-256 de 'App signing key certificate'
  3. Pon ese valor en assetlinks.json y vuelve a subirlo

Puedes incluir AMBAS huellas digitales en el mismo archivo: la local para los APK que compartes directamente y la de Play para las instalaciones desde Play. Así funcionan las dos.

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.yourapp.name",
    "sha256_cert_fingerprints": [
      "AA:BB:...",   // your local key (direct APK)
      "11:22:..."    // Play App Signing key
    ]
  }
}]

5Comprueba si Android lo aceptó#

Después de subir el archivo, REINSTALA la app (Android solo comprueba al instalar, y puede tardar un minuto).

El comando de abajo te dice la verdad. Busca tu dominio con 'verified'. Si dice 'legacy_failure' o falta el dominio, el archivo no se está leyendo correctamente: vuelve y revisa las cuatro reglas.

# Does Android consider your domain verified?
adb shell pm get-app-links com.yourapp.name

# Force a re-check without reinstalling (Android 12+):
adb shell pm verify-app-links --re-verify com.yourapp.name

# Google's own checker (open in a browser):
https://digitalassetlinks.googleapis.com/v1/statements:list?
  source.web.site=https://yoursite.com&
  relation=delegate_permission/common.handle_all_urls

6Por qué suele fallar#

En orden de frecuencia como causa:

  1. El archivo no está subido, o está en la ruta equivocada. Debe ser /.well-known/assetlinks.json, con el punto.
  1. www vs sin www. Android trata https://example.com y https://www.example.com como dominios DIFERENTES. AppMint registra el host exacto de la URL de tu sitio web. Si usas ambos, coloca el archivo en los dos y dinos qué host ingresaste.
  1. Una redirección. Muchos hosts redirigen el dominio raíz a www. Eso rompe la verificación aunque el archivo cargue en un navegador.
  1. Publicada en Play pero usando la huella digital local: consulta el paso anterior.
  1. No se reinstaló después de subir el archivo. Android comprueba al instalar.

Los enlaces de esquema personalizado (myapp://...) no necesitan NADA de esto y siempre funcionan: úsalos para notificaciones push y códigos QR si quieres algo que funcione hoy.

Prueba tus enlaces profundos desde un PC conectado con depuración por USB:

  1. Activa la depuración por USB en tu teléfono
  2. Conecta por USB
  3. Ejecuta los comandos de abajo.

⚠️ Importante: 'am start' con un enlace https puede abrir tu app incluso cuando la verificación ha FALLADO, porque le entregas el enlace directamente a Android. No demuestra que un toque real en Gmail o Chrome vaya a funcionar. Eso solo lo dice 'pm get-app-links' (paso anterior). Usa am start para comprobar el enrutamiento de tu PÁGINA, no la configuración de tu dominio.

# Test custom scheme:
adb shell am start -a android.intent.action.VIEW \
  -d "myapp://some/page"

# Test website URL:
adb shell am start -a android.intent.action.VIEW \
  -d "https://mysite.com/some/page"

# Verify which app handles it:
adb shell cmd package resolve-activity --brief \
  -a android.intent.action.VIEW \
  -d "myapp://some/page"

Al enviar una notificación push con OneSignal, pega cualquier URL de enlace profundo en el campo 'Launch URL'. La app se abrirá y navegará directamente a esa página.

Ambos tipos de URL funcionan:
✅ https://mysite.com/flash-sale
✅ myapp://flash-sale

OneSignal Dashboard → New Push:

Launch URL: https://mysite.com/flash-sale
  OR
Launch URL: myapp://flash-sale

Both will open the app on the sale page.

9Importante: comportamiento en inicio en caliente#

Si tu app ya se está ejecutando en segundo plano cuando se activa un enlace profundo, Android entrega el enlace directamente sin reiniciar la app; esto se llama 'inicio en caliente'.

✅ Tu app maneja esto automáticamente. El WebView navegará a la nueva página incluso cuando la app ya esté abierta.

⚠️ Si los enlaces profundos solo abren la página de inicio, comprueba que:

  • La URL de tu sitio web en la configuración coincide con el dominio del enlace profundo
  • La ruta en la URL del esquema personalizado es correcta

⚠️ Si los enlaces https:// no abren la app EN ABSOLUTO, no es un problema de inicio en caliente: es el paso de assetlinks.json de arriba. Que los enlaces de esquema personalizado funcionen mientras los https no hacen nada es la señal clásica.

Warm launch works automatically.
No extra setup needed.

Esta página se genera a partir de la Guía de integración dentro de la propia app, así que dice exactamente lo mismo que la versión actual. Léela como Markdown.

Comprobado con la guía publicada el 2026-10-22.