🍎
iOS | Custom URL Scheme で起動したときの URL を取得する方法
こんにちは。本職は Android ですが、最近 iOS を触り始めた者です。
ライフサイクルを管理する2つのクラス
iOS 13 からライフサイクルを管理するクラスとして SceneDelegate が導入されました(プロジェクト作成時、自動で生成されています)。従来の AppDelegate も引き続き利用できますが、ライフサイクルメソッドが呼ばれるのは AppDelegate か SceneDelegate のどちらか一方のようです。
Custom URL Scheme の URL を取得する
my-app://
などの Custom URL Scheme を使ってアプリを起動するとき、その URL を取得したいことが多々あると思います。SceneDelegate を使用している場合、以下のメソッドで取得できます。
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
...
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// アプリ未起動からディープリンクで起動した場合、このメソッドが呼ばれる
if let url = connectionOptions.urlContexts.first?.url {
print("url \(url)")
}
}
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
// アプリ起動中にディープリンクでフォアグランド化した場合、このメソッドが呼ばれる
if let url = URLContexts.first?.url {
print("url \(url)")
}
}
...
}
ディープリンクで起動したときのデバッグ方法
アプリ未起動からディープリンクで起動したときのデバッグは以下の方法でできました。
Discussion