Firebase Dynamic Links es un servicio de Google para crear enlaces inteligentes que dirigen al usuario al lugar correcto de la aplicación independientemente de si la aplicación está instalada o no. Según la Documentación de Firebase, Dynamic Links redirigen automáticamente al usuario a App Store o Google Play si la aplicación no está instalada y restauran el contexto de transición después de la instalación. Los Smart Links de Firebase resuelven el problema de URL Scheme, que no funciona con aplicaciones no instaladas.
Puntos clave
Firebase Dynamic Links es un servicio en la nube de Google que crea enlaces universales unificados para aplicaciones móviles en iOS y Android. Un enlace dinámico contiene un deep link al contenido dentro de la aplicación, pero se comporta como un enlace HTTPS normal: si la aplicación está instalada, la abre directamente; si no, redirige a la tienda de aplicaciones.
A diferencia de los URL Scheme normales, Dynamic Links pueden funcionar con aplicaciones no instaladas gracias a la tecnología deferred deep link. Cuando un usuario instala la aplicación después de hacer clic en el enlace, Firebase guarda los parámetros de transición y los pasa en el primer inicio. Esto abre oportunidades para programas de referidos, campañas de marketing e invitaciones.
Los URL Scheme requieren que la aplicación esté instalada y no tienen un mecanismo de fallback estándar. Firebase Dynamic Links resuelven este problema a través de un servicio web intermedio de Firebase que determina el estado de instalación de la aplicación en el dispositivo y enruta al usuario correctamente. Al mismo tiempo, un único enlace funciona de forma idéntica en ambas plataformas.
Firebase Dynamic Link utiliza un dominio como yourcode.page.link, que se registra en Firebase Console. Cuando un usuario hace clic en dicho enlace, Firebase determina el tipo de dispositivo y el estado de instalación de la aplicación. Para iOS se utiliza el mecanismo Universal Links, para Android App Links con verificación automática mediante Digital Asset Links.
El proceso de manejo incluye varias etapas secuenciales: al hacer clic en el enlace, el navegador envía una solicitud GET al servidor de Firebase; el servidor determina la plataforma y verifica la presencia de la aplicación en el dispositivo. Si la aplicación está instalada, se genera una redirección a un Universal Link o Intent con parámetros para abrir la pantalla objetivo. Si la aplicación no está instalada, redirige a App Store o Google Play para su descarga.
La aplicación recibe el enlace durante la inicialización del SDK de Firebase. El método getDynamicLink() devuelve un PendingResult con datos de la transición. Después de una obtención exitosa, se extraen los parámetros del deep link, las etiquetas UTM para análisis y los datos arbitrarios pasados al crear el enlace.
Firebase Console proporciona una interfaz visual para crear Dynamic Links. El desarrollador especifica la URL del deep link, el nombre de la campaña, la configuración para iOS y Android por separado, así como los parámetros de análisis. Después de la creación, Firebase genera un enlace corto como https://yourcode.page.link/abc123, que se puede usar en materiales publicitarios, campañas de correo electrónico y redes sociales.
Para la creación programática de Dynamic Links se utiliza la API REST de Firebase o el SDK del cliente. La API REST permite generar enlaces en masa para campañas de marketing con parámetros personalizados, incluidos enlaces para redes sociales y análisis asíncrono de clics. Al crear enlaces a través de la API, es importante especificar correctamente los parámetros socialMetaTagInfo — determinan cómo se muestra el enlace al compartirlo en mensajeros y redes sociales con una tarjeta de vista previa.
| Parámetro | Propósito | Obligatorio |
|---|---|---|
| Deep Link URL | Enlace interno al contenido de la aplicación | Sí |
| iOS Bundle ID | Identificador de la aplicación en App Store | Para iOS |
| Android Package Name | Nombre del paquete en Google Play | Para Android |
| Fallback URL | Página web si la aplicación no está instalada | No |
| Etiquetas UTM | Parámetros para Google Analytics | No |
Para trabajar con Firebase Dynamic Links en iOS, es necesario integrar el SDK de Firebase a través de CocoaPods o Swift Package Manager, configurar Info.plist con GOOGLE_APP_ID y registrar el dominio de Dynamic Links en Associated Domains del proyecto. Después de eso, la aplicación maneja automáticamente los Universal Links generados por Firebase.
En Xcode, es necesario añadir la capacidad Associated Domains con una entrada como applinks:yourcode.page.link. El SDK de Firebase utiliza el método application(_:continue:restorationHandler:) para manejar Universal Links, por lo que no se requiere integración adicional con AppDelegate — Firebase extrae automáticamente los parámetros de Dynamic Link de User Activity.
Ejemplo de configuración de Info.plist para la inicialización correcta de Firebase y el registro del manejador de Dynamic Links. La clave FIROptions debe contener el identificador del proyecto de GoogleService-Info.plist.
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Si el proxy de AppDelegate está desactivado, es necesario llamar manualmente al método handleUniversalLink(_:) y pasar User Activity desde continue NSUserActivity. El SDK de Firebase extrae automáticamente los parámetros del enlace y devuelve un DynamicLink a través del completion handler.
En Android, la integración de Firebase Dynamic Links comienza agregando dependencias en build.gradle y el archivo google-services.json de Firebase Console. El dominio de Dynamic Links se registra en Firebase Console, después de lo cual todos los enlaces con este dominio son reconocidos automáticamente por la aplicación Android a través de un Intent Filter con action VIEW. Para un funcionamiento correcto, también es necesario agregar el plugin de Google Services en el build.gradle raíz y del módulo, y realizar la sincronización de Gradle.
Para manejar correctamente los enlaces en Android, es necesario agregar un Intent Filter para el dominio de Dynamic Links en la Activity que debe recibir los enlaces entrantes. El filtro debe incluir el esquema https, el host de su dominio de Dynamic Links y la ruta predeterminada.
Ejemplo de Intent Filter en AndroidManifest.xml para recibir Dynamic Links en el dominio yourcode.page.link.
<activity android:name=".MainActivity"
android:launchMode="singleTask">
<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"
android:host="yourcode.page.link" />
</intent-filter>
</activity>
Es importante establecer launchMode en singleTask para la Activity que recibe Dynamic Links. Esto evita la creación de una nueva instancia de Activity al hacer clic repetido en el enlace y permite manejar todos los deep links entrantes en una única instancia.
El SDK de Firebase para Android proporciona el método FirebaseDynamicLinks.getInstance().getDynamicLink(intent), que devuelve un objeto PendingTask con datos del enlace. Del objeto DynamicLink se extraen la URI profunda, los parámetros UTM y la marca de tiempo de la transición. Se recomienda realizar el manejo en los métodos onCreate() y onNewIntent() de la Activity.
Al manejar, es importante considerar que un Dynamic Link puede recibirse tanto al iniciar la aplicación desde un estado frío (cold start) como al pasar desde otra aplicación a una aplicación ya en ejecución. Para el segundo caso, es necesario sobrescribir onNewIntent() y volver a llamar a la verificación de Dynamic Link.
Ejemplo de recepción y manejo de Firebase Dynamic Link en MainActivity. El código maneja tanto cold start como la transición desde otra aplicación.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deepLink = link?.link.toString()
handleDeepLink(deepLink)
}
}
}
El método addOnSuccessListener devuelve un DynamicLink, del cual se extrae el enlace objetivo a través de link?.link. Si el listener devuelve null, significa que el Intent no contiene un Dynamic Link — es un inicio normal de la aplicación sin un enlace entrante. También están disponibles las etiquetas UTM para análisis de clics, incluyendo campaign, medium, source y content, que se pueden pasar a Google Analytics para una evaluación detallada de la efectividad de cada canal de marketing.
Preguntas frecuentes
Firebase Dynamic Links soporta deferred deep link — el enlace conserva el contexto incluso si la aplicación no está instalada. Después de la instalación, la aplicación recibe todos los parámetros de transición, lo que es imposible con los URL Scheme o Universal Links normales.
Firebase Dynamic Links están incluidos en el plan gratuito Firebase Spark. No hay límites en la cantidad de enlaces que se pueden crear. Sin embargo, desde 2024 Google anunció la transición a una nueva infraestructura, por lo que las condiciones pueden cambiar.
Dynamic Links están diseñados para aplicaciones móviles. Al hacer clic en el enlace desde un navegador web de escritorio, se abrirá la URL de fallback. Para aplicaciones web, use enlaces normales o su propia lógica de redirección.
Firebase Console proporciona un botón Test Dynamic Link para previsualizar el comportamiento. También puede usar el emulador de Android o el simulador de iOS con el SDK de Firebase instalado para probar localmente todos los escenarios de transición.
Un enlace corto de Firebase Dynamic Link consta del dominio page.link y un sufijo aleatorio de aproximadamente 7 caracteres. La longitud total es de unos 30 caracteres. El deep link interno puede tener cualquier longitud, pero se recomienda limitarlo a 2 KB para compatibilidad.
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