Firebase Dynamic Links: qué es, creación de enlaces e integración

Autor: IT Sectr Publicado: 2026-04-29 Tiempo de lectura: 9 min

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

  • Dynamic Links — enlaces inteligentes que determinan automáticamente si instalar la aplicación o abrir una ya instalada en la pantalla deseada.
  • Deferred Deep Linking — conservación del contexto de transición en el primer lanzamiento después de la instalación: el usuario ve la pantalla de destino, no la principal.
  • Dominio del enlace — un dominio personalizado como your-app.page.link que se puede personalizar en Firebase Console.
  • Procesamiento del lado del cliente — los enlaces se procesan a través del SDK de Firebase Dynamic Links para Android e iOS con argumentos pasados al intent o scene.
  • Analítica — Firebase recopila automáticamente estadísticas de clics, instalaciones y transiciones a través de Dynamic Links.

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.

Característica clave: Deferred Deep Linking

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.

Casos de uso

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.

Anatomía de un enlace dinámico

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ámetroDescripciónEjemplo
linkEnlace profundo de destinohttps://yourapp.page.link/product/123
apnAndroid Package Namecom.example.myapp
ibiiOS Bundle IDcom.example.myapp.ios
stTítulo socialOferta especial
sdDescripción social30% 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.

Creación de un enlace a través de la API REST

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.

js
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))

Enlaces cortos y etiquetas UTM

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.

Integración de Dynamic Links en Android

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.

Configuración de intent-filter en AndroidManifest

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.

xml
<!-- 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>

Procesamiento del enlace en el código

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).

Integración de Dynamic Links en iOS

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.

Configuración de Universal Links

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.

Procesamiento del enlace a través del SDK de Firebase

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.

swift
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)
                }
            }
    }
}

Ejemplo de implementación en Kotlin

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.

kotlin
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)
            }
    }
}

Prueba de Dynamic Links

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

¿Cuál es la diferencia entre Dynamic Links y los enlaces profundos regulares?

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.

¿Necesito un servidor para que funcionen los Dynamic Links?

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.

¿Cuánto tiempo vive un Dynamic Link?

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.

¿Funcionan los Dynamic Links sin internet?

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.

¿Cuánto cuestan los Firebase Dynamic Links?

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

  • Firebase Dynamic Links — enlaces inteligentes que llevan al usuario a la aplicación o al sitio web, y cuando falta la aplicación — a la tienda con el contexto conservado después de la instalación.
  • Deferred Deep Linking — la ventaja clave que permite pasar contexto (código promocional, invitación, enlace a producto) en el primer lanzamiento después de la instalación.
  • Estructura del enlace incluye un dominio base (your-app.page.link), parámetros de enlace profundo, configuraciones de plataforma y metadatos sociales para la vista previa.
  • Creación de enlaces se realiza a través de Firebase Console, API REST o SDK de Firebase con soporte para etiquetas UTM para integración con Google Analytics.
  • Integración en Android requiere configurar un intent-filter en AndroidManifest y procesamiento a través de la API FirebaseDynamicLinks con soporte para inicio en frío y en caliente.
  • Integración en iOS utiliza Universal Links con archivo AASA, Associated Domains y procesamiento a través del SDK de DynamicLinks en AppDelegate o SceneDelegate.
  • Gratuito hasta 50K clics por día, sin caducidad de enlaces, con la posibilidad de crear un dominio personalizado para la personalización de enlaces.

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.

Discutir el proyecto

Lea también