深度链接是一种不仅能打开应用,还能将用户带到应用内特定“深层”位置的链接。例如,一个运动鞋广告的深度链接可能会打开一个购物应用,并显示该特定鞋子的产品页面。

Flutter 支持 iOS、Android 和 Web 上的深度链接。打开 URL 会在您的应用中显示该屏幕。通过以下步骤,您可以使用命名路由(通过 routes 参数或 onGenerateRoute),或使用 Router 小部件来启动和显示路由。

如果您在 Web 浏览器中运行应用,则无需额外设置。路由路径的处理方式与 iOS 或 Android 深度链接相同。默认情况下,Web 应用使用以下模式从 URL 片段读取深度链接路径:/#/path/to/app/screen,但这可以通过为您的应用配置 URL 策略来更改。

如果您是视觉学习者,请查看以下视频

在新标签页上观看 YouTube 视频:“Flutter 中的深度链接”

开始使用

#

要开始使用,请参阅我们针对 Android 和 iOS 的开发手册

从基于插件的深度链接迁移

#

如果您已经编写了处理深度链接的插件,如深度链接与 Flutter 应用(Medium 上的免费文章)中所述,您应该选择禁用 Flutter 的默认深度链接处理程序。为此,请在 Info.plist 中将 FlutterDeepLinkingEnabled 设置为 false,AndroidManifest.xml 中将 flutter_deeplinking_enabled 设置为 false。

行为

#

行为会根据平台以及应用是否已启动和正在运行而略有不同。

平台 / 场景使用 Navigator使用 Router
iOS(未启动)应用获取 initialRoute ("/"),并在短时间后获取一个 pushRoute应用获取 initialRoute ("/"),并在短时间后使用 RouteInformationParser 解析路由并调用 RouterDelegate.setNewRoutePath,这将使用相应的 Page 配置 Navigator。
Android - (未启动)应用获取包含路由 ("/deeplink") 的 initialRoute应用获取 initialRoute ("/deeplink") 并将其传递给 RouteInformationParser 以解析路由并调用 RouterDelegate.setNewRoutePath,这将使用相应的 Pages 配置 Navigator。
iOS(已启动)调用 pushRoute路径被解析,并且 Navigator 配置了一组新的 Pages。
Android(已启动)调用 pushRoute路径被解析,并且 Navigator 配置了一组新的 Pages。

当使用 Router 小部件时,您的应用能够在应用运行时打开新的深度链接时替换当前页面集。

了解更多

#