Guía completa de Universal Links
Todo lo que necesitas saber sobre universal links, deep links y app links para iOS y Android
Sáltate la configuración: un enlace que abre tu app o la tienda correcta
- Plan gratis, sin tarjeta
- Redirección a App Store y Google Play
- Abre tu app con Pro
Tabla de contenidos
¿Qué son los Universal Links?
Los universal links son URLs que funcionan de forma fluida entre la web y las apps móviles. Cuando un usuario toca un universal link en iOS, el sistema comprueba si hay una app instalada que pueda manejar ese enlace. Si la app está instalada, se abre directamente el contenido específico. Si no, el enlace se abre en Safari.
En Android, la tecnología equivalente se llama App Links. El concepto es el mismo: una URL que enruta de forma inteligente al usuario hacia tu app o tu sitio web.
Alguien toca un enlace https
https://yourdomain.com/products/…
¿Hay instalada una app que maneje este dominio?
Instalada
La app se abre en ese contenido exacto
No instalada
La misma URL abre tu sitio web
En Safari o en el navegador
Beneficios clave
- Experiencia de usuario fluida, sin prompts ni redirecciones
- Una sola URL funciona en todas las plataformas
- Mejor atribución y analítica
- Mejor SEO con URLs HTTPS estándar
- Funciona en email, SMS, redes sociales y otros canales
Cómo funcionan los Universal Links
El proceso incluye tres componentes clave:
Archivo Apple App Site Association (AASA)
Un archivo JSON alojado en tu dominio en /.well-known/apple-app-site-association que indica a iOS qué apps pueden manejar tu dominio.
Configuración de la app
Tu app debe configurarse para manejar dominios y patrones de URL específicos en sus entitlements (iOS) o intent filters (Android).
Código de manejo de URL
Tu app implementa código para recibir la URL del deep link y navegar a la pantalla o contenido correcto.
01 · Tu dominio
Archivo de asociación
Indica al sistema qué apps pueden manejar el dominio
Ambas partes deben coincidir
El sistema contrasta el archivo con la app
02 · Tu app
Configuración de la app
Entitlements en iOS, intent filters en Android: los dominios y rutas que maneja
03 · Tu app
Código de manejo de URL
Recibe la URL dentro de la app
La pantalla correcta
Implementación de Universal Links en iOS
Paso 1: Crear el archivo AASA
Crea un archivo llamado apple-app-site-association (sin extensión) con esta estructura: apple-app-site-association
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.com.yourcompany.yourapp",
"paths": [
"/products/*",
"/articles/*",
"/user/*"
]
}
]
}
}Importante
El archivo debe servirse por HTTPS con un certificado SSL válido. También debe devolver el header Content-Type: application/json.
Paso 2: Configurar tu app iOS
En Xcode, añade la capability Associated Domains con tu dominio:
applinks:yourdomain.com
applinks:www.yourdomain.comPaso 3: Manejar la URL en tu app
// AppDelegate.swift
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL else {
return false
}
// Handle the URL and navigate to appropriate screen
handleUniversalLink(url)
return true
}Implementación de App Links en Android
Paso 1: Crear assetlinks.json
Aloja este archivo en https://yourdomain.com/.well-known/assetlinks.json:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourcompany.yourapp",
"sha256_cert_fingerprints": [
"XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"
]
}
}]Paso 2: Actualizar AndroidManifest.xml
<activity android:name=".MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="yourdomain.com" />
<data android:pathPrefix="/products" />
</intent-filter>
</activity>Paso 3: Manejar el Intent
// MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val action = intent.action
val data = intent.data
if (Intent.ACTION_VIEW == action && data != null) {
// Handle the deep link
handleDeepLink(data)
}
}Buenas prácticas y errores comunes
Haz esto
- ✅ Usa siempre HTTPS en tu dominio
- ✅ Prueba en dispositivos reales, no solo en simuladores
- ✅ Define la URL de tu sitio web para quien no tiene la app (fallback URL)
- ✅ Añade seguimiento analítico completo
- ✅ Maneja los edge cases correctamente
- ✅ Mantén actualizados tus archivos AASA/assetlinks
❌Evita esto
- ❌ No uses redirecciones para archivos AASA/assetlinks
- ❌ No olvides validar la sintaxis JSON
- ❌ No hardcodees la lógica de navegación de la app
- ❌ No asumas que la app siempre estará instalada
- ❌ No omitas pruebas en distintas versiones del SO
Pruebas y depuración
Pruebas en iOS
- 1. Usa el Validador AASA de Apple
- 2. Prueba enlaces en Notas, Mensajes o Mail
- 3. Revisa logs en Xcode Console
- 4. Verifica la asociación de dominio en Ajustes → Developer
Pruebas en Android
- 1. Usa adb shell am start -a android.intent.action.VIEW -d "your-url"
- 2. Prueba en Chrome, Gmail y apps de mensajería
- 3. Comprueba la verificación con adb shell dumpsys package domain-preferred-apps
- 4. Monitoriza errores en logcat
Analítica y atribución
Una analítica correcta es clave para entender el rendimiento de tus universal links. Sigue estas métricas:
- CTR por canal
- Tasa de apertura de app vs visitas al sitio web
- Costo de adquisición por canal
- Tasas de conversión del contenido deep-linked
- Tiempo hasta la primera acción tras el deep link
- Rendimiento por plataforma (iOS vs Android)
Consejo pro
Usa una plataforma de smart links como Appy para gestionar universal links automáticamente, medir analítica y llevar a quien no tiene la app a la tienda o a tu sitio web. Ahorras semanas de desarrollo y obtienes infraestructura de nivel enterprise.
Probar Appy gratisConclusión
Los universal links son esenciales para apps móviles modernas. Ofrecen mejor experiencia de usuario, mejor atribución y funcionamiento confiable entre plataformas. Aunque la implementación exige atención al detalle, los beneficios lo compensan.
Empieza por lo básico, prueba a fondo y mejora según datos reales. Y si quieres evitar la complejidad, considera usar una plataforma como Appy que lo gestiona automáticamente.
Recursos relacionados de Appy
Explora las herramientas de Appy para universal links, deep links y QR codes para acelerar el crecimiento de apps móviles.
- Validador de Universal Links para probar iOS Universal Links y Android App Links.
- Generador de QR con marca para campañas de instalación y funnels offline.
- Funciones de smart links como deep links, reglas de routing y analítica.
Seguir explorando
Cómo medir instalaciones de apps sin fingerprinting
Apple no permite el fingerprinting ni siquiera cuando el usuario acepta el rastreo, y los reguladores europeos consideran que el rastreo por IP es un acceso al dispositivo. Aquí tienes lo que sigue midiendo instalaciones con pruebas en iPhone y Android, y un plan de medición que nunca tiene que adivinar.
Cómo tratan los navegadores in-app los deep links: Instagram, TikTok, Facebook, Gmail, Telegram y más
Por qué tu enlace abre la app desde Safari pero muere dentro de Instagram: el tipo de navegador que usa cada app, las reglas de iOS y Android y lo documentado app por app, de Instagram a Telegram.
Descubre qué enlace trajo cada instalación: el SDK de Appy para iOS y Android
Appy ahora sigue tus enlaces más allá de la tienda de apps. El nuevo SDK te muestra instalaciones, eventos in-app e ingresos de cada enlace, código QR y campaña, y abre la pantalla correcta a los nuevos usuarios.
¿Buscas otra cosa? Explora todos los temas en el blog.
Evita la complejidad. Usa Appy.
Appy gestiona universal links, deep linking, QR codes y analítica automáticamente. Sin código.