App이 URL로 특정된 리소스를 열어야 할 때 AppDelegate에 수신되는 delegate 메소드에 대해 알아봅니다.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { ... }
url
이 함수는 App의 launch time 때 불리는
func application(_:willFinishLaunchingWithOptions:)
func application(_:didFinishLaunchingWithOptions:)
위 함수들에서 false를 리턴하면 절대 불리지 않습니다.
만일 App이 Suspended 상태거나 background 실행 중에 URL이 도달한다면, 시스템은 이 메서드를 호출하기위해 App을 foreground 상태로 우선 올립니다.
이 delegation 메서드를 위한 notification은 없습니다.
예시1)
앱의 특정 기능이 카카오 로그인을 요구한다고 가정할 때,
앱에서 카카오톡으로 이동한 후 사용자가 [동의하고 계속하기] 버튼 또는 로그인 취소버튼을 눌렀을 때 다시 카카오톡에서 앱으로 이동하는 과정을 거칩니다.
이 때 카카오톡에서 앱으로 들어왔을 때 카카오 로그인 처리를 정상적으로 완료하기 위해 이 메서드에 작업합니다.
예시2)
URLScheme으로 온 이벤트를 처리합니다.
예시3)
DeepLink 처리
실무하면서도 많이 들락날락했던 Delegate 메서드 입니다.
URLScheme, DeepLink도 정리가 필요하겠네요!