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