TIL - 9 # DeepLink & Deferred Deep Link ## DeepLink DeepLink란 웹이나 앱에서 특정한 컨텐츠 또는 화면으로 바로 이동할 수 있게 해주는 하이퍼링크의 한 형태입니다. 일반적으로 하이퍼링크는 웹페이지 간에 연결을 제공하거나 웹 페이지 내에서 다른 부분으로 이동하는데 사용됩니다. 하지만 DeepLink는 주로 모바일 앱 환경에서 사용되며, 사용자를 앱 내 특정 화면으로 바로 이동시키는 역할을 합니다. 예를 들어, 특정 컨텐츠를 보여주는 앱이 있다고 가정을 해보겠습니다. 해당 컨텐츠를 웹에서 보는 것과 앱에서 보는 것은 사용자 경험에 차이가 있을 수 있습니다. DeepLink를 사용하면 뉴스 기사의 고유한 링크를 생성하여, 이 링크를 클릭하면 사용자는 앱을 설치했을 경우 해당 컨텐츠가 있는 앱 내의 화면으로 바로 이동할 수 있습니다. 따라서 딥링크를 이용하여 앱 내의 특정 제품, 콘텐츠, 기능 등으로 직접 연결할 수 있습니다. 이를 통해서 사용자의 편의성을 높이고 앱 사용을 더욱 효과적으로 할 수 있도록 도와줍니다. 딥링크는 URL 스킴 방식, 앱링크, 유니버셜 링크 3가지 방식으로 구분됩니다. ## URL 스킴 방식 URL Scheme 은 모바일 앱이나 디바이스의 다른 애플리케이션 상호작용하기 위한 방법중 하나입니다. URL Scheme은 특히 딥링크와 관련해서 사용되며, 다른 앱 또는 웹에서 클릭한 링크를 통해 앱 내의 특정 화면으로 직접 이동하는데 사용됩니다. URL Scheme은 아래와 같은 구조로 작동합니다. - URL Scheme 정의 : 앱 개발자는 자신의 앱에 대한 고유한 URL Scheme을 정의합니다. 이는 다른 앱이나 웹에서 앱을 호출할 떄 사용되는 식별자입니다. - URL 생성 : 다른 앱이나 웹에서 해당 앱을 호출하기 위해 URL Scheme을 포함한 URL을 생성합니다. URL Scheme은 “scheme://” 과 같은 형태를 가지며, 해당 앱의 고유한 식별자가 scheme 부분에 들어갑니다. - URL 호출 : 다른 앱이나 웹에서 생성한 URL을 클릭하거나 호출할 때, 해당 URL Scheme에 등록된 앱이 실행됩니다. - 앱 실행 및 처리: 앱이 실행되면서, URL Scheme을 분석하고 정의된 기능이나 화면으로 이동하는 등의 작업을 수행합니다. URL Scheme은 아래와 같은 단점이 있습니다. - 고유성 부족 : URL Scheme은 전역적으로 고유해야 합니다. 여러 앱이 같은 URL Scheme을 사용하려고 할 경우 충덜이 발생할 수 있습니다. - 보안 취약성: URL Scheme은 대체로 보안 수준이 낮을 수 있습니다. 다른 앱이나 웹에서 악의적인 목적으로 URL Scheme을 사용하여 앱을 호출하려는 시도가 있을 수 있습니다. - 오작동 가능성 : URL Scheme을 사용하는 앱이 설치되지 않은 상태에서 해당 URL을 호출하면, 사용자는 앱을 설치한 후에도 원하는 기능으로 바로 이동하지 못할 수 있습니다. - 호환성 문제 : URL Scheme은 특정 앱에서만 동작하도록 설계될 수 있습니다. 따라서 새로운 버전의 앱에서 URL Scheme의 구조가 변경되었을 경우, 이전 버전의 앱과 호환성 문제가 발생할 수 있습니다. 이러한 단점을 고려해서 URL Scheme을 사용할때는 충분한 테스트와 보안 검사를 진행하고, 사용자 경험을 최적화하기 위해 추가적인 매커니즘을 구현하는 것이 중요합니다. Android에서는 “App Links” 가 iOS에서는 “Universal Links”와 같은 기술이 URL Scheme의 단점을 보완해줍니다. ## Deferred Deep Link Deferred Deep Link란, 사용자가 앱을 설치하지 않은 상태에서 딥링크를 클릭했을 때, 해당 딥링크가 있는 앱을 설치한 후에도 정확하게 그 딥링크로 이동할 수 있도록 하는 매커니즘입니다. Deferred Deep Link의 작동 원리는 아래와 같습니다. - 링크 클릭 및 설치 감지: 사용자가 딥링크를 클릭하면, 클릭 이벤트와 함께 해당 딥링크의 정보가 서버로 전송됩니다. 이때, 앱을 설치하기 전이므로 해당 앱이 설치되지 않았음을 서버가 인식합니다. - 앱 설치: 사용자는 딥링크를 클릭한 후 앱 설치 페이지로 이동하고 앱을 설치합니다. 앱 스토어는 클릭한 딥링크에 관한 정보를 가지고 있으며, 앱이 설치되면 앱에 대한 정보를 기반으로 해당 딥링크의 인텐트를 생성합니다. - 앱 실행 및 딥링크 처리: 사용자가 앱을 처음 실행할 때, 앱은 이전에 클릭한 딥링크의 정보를 확인하고 해당 딥링크로 이동합니다. 이때, 클릭한 딥링크와 관련된 데이터는 앱 내에서 활용될 수 있습니다. - 최종 화면으로 이동: 앱이 해당 딥링크의 정보를 처리하고 앱 내의 적절한 화면으로 이동합니다. 이로써 사용자는 딥링크를 클릭한 후 앱 설치 후에도 원하는 화면으로 정확하게 이동할 수 있게 됩니다. Deferred Deep Link를 구현하려면, 링크 클릭 정보를 서버에 보내고, 앱 설치 시의 정보를 유지한 후, 앱 실행 시 해당 정보를 활용하여 적절한 딥링크 처리를 수행해야 합니다. 이를 통해 사용자 경험을 개선하고 앱 사용률을 높일 수 있습니다.