深度連結不僅能開啟應用,還能將使用者帶到應用內部的特定“深層”位置。例如,一則運動鞋廣告的深度連結可能會開啟一個購物應用,並顯示該特定鞋子的產品頁面。

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解析路徑,並使用一組新的 Pages 配置 Navigator。
Android (已啟動)呼叫 pushRoute解析路徑,並使用一組新的 Pages 配置 Navigator。

當使用 Router 小部件時,當應用正在執行時開啟新的深度連結時,您的應用能夠替換當前的頁面集。

瞭解更多

#