Guía completa de Universal Links
Todo lo que necesitas saber sobre universal links, deep links y app links para iOS y Android
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.
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.
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
- ✅ Implementa URLs de fallback para usuarios web
- ✅ 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 fallback 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 ofrecer fallbacks. 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
Deep Linking vs Universal Links: comparación completa
Comprende las diferencias clave entre deep links y universal links, cuándo usar cada uno y cómo implementarlos correctamente.
¿Universal Links abren Safari? Corrige AASA, App Links, redirecciones y headers
Flujo práctico para corregir universal links y app links que abren navegador en lugar de la app.
Cierre de Firebase Dynamic Links: guía completa de migración a Appy
Firebase Dynamic Links se cierra. Aquí tienes una guía completa para migrar a Appy con cero tiempo de inactividad.
¿Buscas otra cosa? Explora todos los temas en el blog de Appy.
Evita la complejidad. Usa Appy.
Appy gestiona universal links, deep linking, QR codes y analítica automáticamente. Sin código.