カスタムURLスキームで起動したときにapplication(_:open:options:)が呼ばれない
Table of Contents
UIApplicationDelegateのapplication(_:open:options:)
を実装しているのに、カスタムURLスキームでアプリを起動しても、それが呼ばれない現象に遭遇しました。
前提 #
- SwiftUIのアプリケーション
@UIApplicationDelegateAdapter
で適切にAppDelegateをセットしているapplication(_:didFinishLaunchingWithOptions:)
は呼ばれるのに……
結論 #
ViewのインスタンスメソッドonOpenURL(perform:)
で実装するとのこと。下の例ではButtonに付けていますが、NavigationViewやVStackなどの外側の構造につけるほうが分かりやすいでしょう。
ドキュメント
// 例
Button {
// Action
} label: {
Text("OK")
}
.onOpenURL { url in
// ここにカスタムURLスキームのURLが通知される
}
なお、ドキュメントによれば「NSUserActivityではなく、Universal Linksを受信するメソッド」とのこと。