跳到主内容

深度链接

当应用收到新 URL 时导航至相应路由。

深度链接(Deep links)不仅能打开应用,还能将用户直接带到应用内部的特定位置。例如,点击运动鞋广告中的深度链接可以打开购物应用,并直接显示该特定鞋款的产品页面。

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

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

如果你更喜欢通过视频学习,请观看以下视频:

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

开始使用

#

若要开始,请查看我们的 Android 和 iOS 实战手册(Cookbooks):

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

#

如果你按照 Deep Links and Flutter applications(Medium 上的免费文章)所述编写了插件来处理深度链接,则应停用 Flutter 的默认深度链接处理程序。为此,请在 Info.plist 中将 FlutterDeepLinkingEnabled 设置为 false,或者AndroidManifest.xml 中将 flutter_deeplinking_enabled 设置为 false。

行为

#

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

平台 / 场景使用 Navigator使用 Router
iOS (未启动) 应用获取 initialRoute ("/"),并在短时间后获取一个 pushRoute 应用获取 initialRoute ("/"),并在短时间后使用 RouteInformationParser 解析路由并调用 RouterDelegate.setNewRoutePath,从而配置带有相应页面的 Navigator。
Android (未启动) 应用获取包含该路由 ("/deeplink") 的 initialRoute 应用获取 initialRoute ("/deeplink") 并将其传递给 RouteInformationParser 进行解析,然后调用 RouterDelegate.setNewRoutePath,从而配置带有相应页面的 Navigator。
iOS (已启动) 调用 pushRoute 解析路径,并使用一组新的页面配置 Navigator。
Android (已启动) 调用 pushRoute 解析路径,并使用一组新的页面配置 Navigator。

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

了解更多

#