Saltar al contenido principal

Enlaces profundos

Navega a rutas cuando la aplicación recibe una nueva URL.

Los enlaces profundos (deep links) son enlaces que no solo abren una aplicación, sino que también llevan al usuario a una ubicación específica "profunda" dentro de la aplicación. Por ejemplo, un enlace profundo de un anuncio de un par de zapatillas podría abrir una aplicación de compras y mostrar la página del producto para esos zapatos en particular.

Flutter admite enlaces profundos en iOS, Android y la web. Al abrir una URL se muestra esa pantalla en tu aplicación. Con los siguientes pasos, puedes iniciar y mostrar rutas utilizando rutas nombradas (ya sea con el parámetro routes o onGenerateRoute), o mediante el uso del widget Router.

Si estás ejecutando la aplicación en un navegador web, no se requiere ninguna configuración adicional. Las rutas se manejan de la misma manera que un enlace profundo de iOS o Android. Por defecto, las aplicaciones web leen la ruta del enlace profundo desde el fragmento de la URL usando el patrón: /#/path/to/app/screen, pero esto se puede cambiar configurando la estrategia de URL para tu aplicación.

Si prefieres el aprendizaje visual, mira el siguiente video:

Ver en YouTube en una nueva pestaña: "Deep linking in Flutter"

Primeros pasos

#

Para comenzar, consulta nuestras guías prácticas (cookbooks) para Android e iOS:

Migración desde enlaces profundos basados en plugins

#

Si has escrito un plugin para manejar enlaces profundos, como se describe en Deep Links and Flutter applications (un artículo gratuito en Medium), debes desactivar el manejador de enlaces profundos por defecto de Flutter. Para hacer esto, establece FlutterDeepLinkingEnabled en false en Info.plist o flutter_deeplinking_enabled en false en AndroidManifest.xml.

Comportamiento

#

El comportamiento varía ligeramente según la plataforma y si la aplicación está iniciada y en ejecución.

Plataforma / EscenarioUso de NavigatorUso de Router
iOS (no iniciada) La aplicación recibe initialRoute ("/") y poco después recibe un pushRoute La aplicación recibe initialRoute ("/") y poco después usa el RouteInformationParser para analizar la ruta y llamar a RouterDelegate.setNewRoutePath, lo que configura el Navigator con la Page correspondiente.
Android - (no iniciada) La aplicación recibe initialRoute que contiene la ruta ("/deeplink") La aplicación recibe initialRoute ("/deeplink") y la pasa al RouteInformationParser para analizar la ruta y llamar a RouterDelegate.setNewRoutePath, lo que configura el Navigator con las Pages correspondientes.
iOS (iniciada) Se llama a pushRoute La ruta es analizada y el Navigator se configura con un nuevo conjunto de Pages.
Android (iniciada) Se llama a pushRoute La ruta es analizada y el Navigator se configura con un nuevo conjunto de Pages.

Al usar el widget Router, tu aplicación tiene la capacidad de reemplazar el conjunto actual de páginas cuando se abre un nuevo enlace profundo mientras la aplicación se está ejecutando.

Para aprender más

#