Firebase Dynamic Links es un servicio de Google para crear enlaces inteligentes que llevan al usuario al lugar correcto dentro de una aplicación móvil o a un sitio web, dependiendo de si la aplicación está instalada en el dispositivo. Dynamic Links conservan el contexto de transición incluso en el primer lanzamiento después de la instalación desde la tienda de aplicaciones. Según la Documentación de Firebase, 2026, los enlaces dinámicos se procesan en una API única que determina automáticamente el comportamiento: abrir la aplicación, ir al sitio web o instalar la aplicación. El servicio es indispensable para programas de referidos, escenarios de incorporación y campañas de marketing.
Puntos clave
Firebase Dynamic Links es una tecnología de Google que crea un enlace único que lleva al contenido deseado en una aplicación móvil o sitio web, adaptando el comportamiento según la plataforma y el estado de instalación. El enlace verifica si la aplicación está instalada en el dispositivo: si es así — la abre con los parámetros pasados, si no — redirige a Google Play o App Store para su instalación, y después de la instalación redirige a la pantalla de destino.
La principal ventaja de Dynamic Links sobre los enlaces profundos regulares es el soporte para enlaces profundos diferidos. Deferred Deep Linking significa que el contexto de transición (parámetros del enlace) se conserva incluso si la aplicación aún no está instalada. Cuando el usuario instala la aplicación desde la tienda, el SDK de Dynamic Links lee el contexto guardado y lo pasa a la pantalla deseada. Sin esta tecnología, el usuario simplemente llegaría a la pantalla principal después de la instalación, perdiendo el código promocional, la invitación o el enlace a un pedido específico.
Dynamic Links se utilizan en programas de referidos para atraer nuevos usuarios con atribución a la cuenta del invitador. Las campañas de marketing con transiciones desde boletines de correo electrónico y redes sociales utilizan Dynamic Links para la medición precisa de conversiones. En escenarios de incorporación, el enlace lleva a un nuevo usuario a una pantalla de bienvenida con contenido personalizado. En el comercio electrónico, los enlaces a productos conservan el contexto y llevan a la ficha del producto incluso en el primer lanzamiento después de la instalación.
El mecanismo de funcionamiento de Dynamic Links consta de varias etapas, cada una de las cuales puede variar según el estado de la aplicación. Cuando un usuario hace clic en un enlace dinámico, el navegador envía una solicitud al servidor de Firebase. Firebase verifica si la aplicación está instalada mediante la comprobación de intent-filter o universal link. Si la aplicación está instalada, Firebase la abre con el enlace profundo pasado. Si no — redirige a la página de la tienda o a la versión web.
Un Dynamic Link estándar consta de una URL base, parámetros de enlace y etiquetas de marketing opcionales. La URL base es un dominio como your-app.page.link registrado en Firebase Console. Los parámetros de enlace profundo se establecen mediante parámetros de consulta: link (URL de destino dentro de la aplicación), apn (Android Package Name), ibi (iOS Bundle ID), st y sd (título y descripción para la vista previa social). Las etiquetas de marketing utm_source, utm_medium, utm_campaign se pasan a Google Analytics para su seguimiento.
| Parámetro | Descripción | Ejemplo |
|---|---|---|
| link | Enlace profundo de destino | https://yourapp.page.link/product/123 |
| apn | Android Package Name | com.example.myapp |
| ibi | iOS Bundle ID | com.example.myapp.ios |
| st | Título social | Oferta especial |
| sd | Descripción social | 30% de descuento en su primer pedido |
Firebase Console proporciona una interfaz visual para crear Dynamic Links en la sección Engage > Dynamic Links. En la consola, puede establecer todos los parámetros del enlace, incluido el enlace profundo, el comportamiento web, los metadatos sociales y las etiquetas UTM. Después de crear el enlace, la consola proporciona una URL lista para usar, así como estadísticas de clics y transiciones. Para la creación masiva de enlaces, se utiliza la API REST de Firebase Dynamic Links con autenticación OAuth 2.0.
Para la creación programática de Dynamic Links, se realiza una solicitud POST a la API de Firebase Dynamic Links. El cuerpo de la solicitud contiene dynamicLinkInfo con parámetros de enlace profundo, configuraciones de plataforma y metadatos sociales. La API devuelve una URL lista para usar como https://your-app.page.link/abc123. Para enlaces de larga duración, se utiliza suffix.option = UNIQUE — enlaces cortos con un sufijo único. Para enlaces temporales — SHORT, con posibles colisiones.
const axios = require("axios")
const apiUrl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY"
const data = {
dynamicLinkInfo: {
domainUriPrefix: "https://yourapp.page.link",
link: "https://yourapp.com/promo/summer",
androidInfo: { androidPackageName: "com.example.myapp" },
iosInfo: { iosBundleId: "com.example.myapp.ios" },
socialMetaTagInfo: {
socialTitle: "Promoción de verano",
socialDescription: "Hasta 50% de descuento hasta fin de mes"
}
},
suffix: { option: "UNIQUE" }
}
axios.post(apiUrl, data)
.then(res => console.log(res.data.shortLink))
.catch(err => console.error(err))
Dynamic Links generan automáticamente URL cortas con 6–8 caracteres después del dominio, lo que las hace adecuadas para su uso en SMS y redes sociales. Los parámetros UTM se añaden a través del campo utmParameters o directamente en el parámetro link. Firebase vincula automáticamente los clics en Dynamic Links con Google Analytics para Firebase, lo que permite realizar un seguimiento del tráfico de referidos y la atribución de campañas.
La configuración de Dynamic Links en Android incluye añadir el SDK de Firebase, configurar el intent-filter para la actividad que recibe enlaces profundos y procesar enlaces a través del SDK de Firebase Dynamic Links. Después de instalar el SDK y añadir google-services.json, debe registrar la actividad en AndroidManifest.xml con un intent-filter para procesar enlaces del dominio de su aplicación.
La actividad que procesa Dynamic Links debe tener un intent-filter para la acción VIEW y las categorías DEFAULT y BROWSABLE. AndroidManifest.xml incluye una etiqueta data con android:scheme, android:host y android:pathPrefix correspondientes a su enlace profundo. Para procesar enlaces del dominio page.link, también se añade un intent-filter con el esquema https y el host de su dominio de Dynamic Links.
<!-- AndroidManifest.xml -->
<activity android:name=".MainActivity">
<intent-filter>
<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"
android:host="yourapp.com"
android:pathPrefix="/promo" />
</intent-filter>
</activity>
Después de configurar el intent-filter, debe procesar el Dynamic Link entrante en el código de la Actividad. La API FirebaseDynamicLinks recibe el enlace del intent y devuelve un objeto PendingDynamicLinkData con los parámetros extraídos. El método getLink devuelve el enlace profundo de destino, que se puede analizar y utilizar para la navegación. Es importante manejar el enlace tanto en el inicio en frío (a través de getIntent en onCreate) como en el inicio en caliente (a través de onNewIntent).
La configuración de Dynamic Links en iOS requiere configuración tanto en el lado de Firebase como en el proyecto Xcode. Debe cargar una clave APNs en Firebase Console, añadir el SDK de Firebase a través de Swift Package Manager o CocoaPods y configurar el App Delegate para manejar Universal Links. Dynamic Links en iOS utilizan Universal Links para una transición fluida entre el navegador y la aplicación sin una página intermedia.
Universal Links es una tecnología de Apple que conecta su dominio con una aplicación móvil. El archivo apple-app-site-association (AASA) se carga en el servidor en https://your-app.page.link/apple-app-site-association. Firebase crea y mantiene automáticamente este archivo para su dominio de Dynamic Links. En Xcode, debe habilitar Associated Domains y especificar applinks:your-app.page.link en las Capacidades del proyecto.
Para iOS, el procesamiento de Dynamic Links se realiza a través del SDK de Firebase en el App Delegate o Scene Delegate. El método application:continueUserActivity: intercepta el Universal Link entrante y lo pasa a la API de Firebase Dynamic Links, que extrae el enlace de destino y los parámetros. El SDK de Firebase maneja automáticamente los Deferred Deep Links solicitando datos de instalación a través del almacenamiento a corto plazo de Firebase Installation API.
import FirebaseDynamicLinks
class AppDelegate: UIApplicationDelegate {
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping
([UIUserActivityRestoring]?) -> Void
) -> Bool {
return DynamicLinks.dynamicLinks()
.handleUniversalLink(userActivity.webpageURL!) {
dynamicLink, error in
if let link = dynamicLink?.url {
self.handleDeepLink(link)
}
}
}
}
Veamos un ejemplo completo de procesamiento de un Dynamic Link en una aplicación Android con Kotlin. MainActivity lee el Dynamic Link entrante tanto en el inicio en frío como en caliente de la aplicación. El enlace se analiza en parámetros que se utilizan para la navegación a la pantalla deseada con los argumentos pasados. El ejemplo muestra el procesamiento de un enlace a una página de promoción con un identificador de campaña promocional.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
handleDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleDynamicLink(intent)
}
private fun handleDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener { data ->
val deepLink = data?.link ?: return@addOnSuccessListener
val promoId = deepLink
.getQueryParameter("promoId") ?: ""
if (promoId.isNotEmpty()) {
navigateToPromoScreen(promoId)
}
}
.addOnFailureListener { e ->
Log.e("DL", "Error al procesar el enlace", e)
}
}
}
Para probar Dynamic Links, se utiliza Firebase Console, donde puede crear un enlace de prueba y enviarlo a un dispositivo a través de mensajería o correo electrónico. El depurador de Firebase Dynamic Links está disponible en https://your-app.page.link/?d=1 y muestra información detallada sobre el comportamiento del enlace. Al probar Deferred Deep Links, debe asegurarse de que la aplicación esté desinstalada, y después de la instalación, el enlace lleve a la pantalla correcta con los parámetros pasados.
Preguntas frecuentes
Los enlaces profundos regulares funcionan solo cuando la aplicación está instalada y no conservan el contexto después de la instalación. Dynamic Links admiten Deferred Deep Linking — el usuario instala la aplicación y llega inmediatamente a la pantalla de destino con los parámetros del enlace conservados.
No se requiere servidor para crear y procesar enlaces — todas las operaciones se realizan a través de Firebase Console, la API REST o el SDK de Firebase en el lado del cliente. Para la generación masiva de enlaces, se recomienda la API REST, pero la consola es adecuada para la creación manual.
Dynamic Links no tienen fecha de caducidad — se almacenan en Firebase para siempre a menos que se eliminen manualmente. Los enlaces cortos con el sufijo UNIQUE existen indefinidamente. Se recomienda crear enlaces únicos para cada campaña para una atribución precisa.
El procesamiento de un Dynamic Link requiere una conexión a internet en la etapa del clic porque el servidor de Firebase verifica el estado de instalación de la aplicación. Después de procesar el enlace, los datos se pasan a la aplicación a través de intent o Universal Link y están disponibles incluso sin conexión.
Firebase Dynamic Links son gratuitos en el plan Spark. En el plan Blaze, hay un límite de 50K clics por día por proyecto sin costo adicional. Superar el límite bloquea la creación de nuevos enlaces hasta el día siguiente.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también