🔥
[SwiftUI]Deep Linkで値を受け取り画面を出し分けする
SwiftUIでDeep Link
で起動されたURLを取得する方法についてまとめました。
Deep Linkとは
アプリを起動して特定のコンテンツへ直接遷移できる技術です。
方法としては以下の2つがあります。
- Custom URL Scheme:(非推奨)
custom-scheme://
のように、スキームがアプリ独自のものです - Universal Links:(推奨)
https://example.com/some/page
のように、HTTP
のスキームでアプリを起動できます。
設定方法については割愛します。
SwiftUIで受け取り
View.onOpenURL
を使用します。
次のように、メインのContentView
に対し、onOpenURL
を追加します。
@main
struct CustomSchemeSampleApp: App {
@State var index: Int = 0
var body: some Scene {
WindowGroup {
if self.index == 0 {
ContentView()
.onOpenURL(perform: { url in
debugPrint(url)
self.index = 1
})
} else {
SecondView()
}
}
}
}
Safari等のブラウザで、custom-scheme://
と検索窓に打ち込んで開くと、アプリが起動します。
この例では、indexによってViewを切り替えています。URLの内容はパースしていません。
custom-scheme://
で起動→ContentView
を起動→onOpenURL
でViewを切り替え→SecondView
を表示、の順になっています。
サンプルコード
参考
Discussion