Skip to main content
すっさんぽ
  1. Posts/

カスタム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を受信するメソッド」とのこと。