深度連結
深度連結不僅能開啟應用,還能將使用者帶到應用內部的特定“深層”位置。例如,一則運動鞋廣告的深度連結可能會開啟一個購物應用,並顯示該特定鞋子的產品頁面。
Flutter 支援 iOS、Android 和 Web 上的深度連結。開啟 URL 會在您的應用中顯示該螢幕。透過以下步驟,您可以使用命名路由(透過 routes 引數或 onGenerateRoute)或使用 Router 小部件啟動和顯示路由。
如果您在 Web 瀏覽器中執行應用,則無需額外設定。路由路徑的處理方式與 iOS 或 Android 深度連結相同。預設情況下,Web 應用使用以下模式從 URL 片段讀取深度連結路徑:/#/path/to/app/screen,但這可以透過配置應用的 URL 策略進行更改。
如果您是視覺學習者,請觀看以下影片
開始使用
#要開始使用,請檢視我們的 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 | 解析路徑,並使用一組新的 Pages 配置 Navigator。 |
| Android (已啟動) | 呼叫 pushRoute | 解析路徑,並使用一組新的 Pages 配置 Navigator。 |
當使用 Router 小部件時,當應用正在執行時開啟新的深度連結時,您的應用能夠替換當前的頁面集。
瞭解更多
#- 學習 Flutter 的新導航和路由系統介紹了 Router 系統。
- Google I/O 2023 的 深入探討 Flutter 深度連結影片
- Flutter 深度連結:終極指南,一個分步教程,展示瞭如何在 Flutter 中實現深度連結。