딥링크
모바일에서의 딥링크 배경
웹은 HTTP와 URL을 기반으로 하며, ‘개방성’ 덕분에 별다른 노력 없이 원하는 문서로 딥링킹할 수 있습니다. 반면, 앱은 독립적이고 폐쇄적이어서 웹과 기술적 배경이 다릅니다. 이에 모바일 환경에서도 딥링킹이 필요하게 되었고, Android와 iOS는 custom URI scheme을 통해 이를 지원합니다.
커스텀 스킴 딥링크(Custom URI Scheme)
Custom URI Scheme은 초기에 사용된 딥링크 구현방식이고 주로 웹에서 사용되는 URL 패턴으로 구성되어 있음
별다른 제약없이 개발자가 직접 원하는 Scheme을 정해서 만들 수 있습니다.
그외에도 앱에서 사용할 수 있는 널리 알려진 스킴들이 있습니다.
커스텀 스킴 딥링크의 한계점
앱이 설치되어 있을때만 실행할 수 있음 (만약 앱이 설치되어있지 않다면, 예외를 발생시키거나 아무 실행 안됨)
원하는 Scheme을 아무나 만들 수 있어서 같은 중복 Scheme을 사용하는 경우가 생김 (Scheme의 주인이 없음)
같은 Scheme일 경우, Android는 어떤앱으로 열지 선택하는 팝업이 뜨고, iOS는 마지막에 설치한 앱이 열림
이렇듯, Custom URI scheme의 단점을 꼽아보자면 1. 무조건 특정 앱으로 보내야 하는 상황에서는 유연하지 못함 2. 악의적으로 다른 앱에서 사용하는 스킴과 똑같은 스킴을 정의해서 내 앱이 열리도록 하게 할 수도 있음 위와 같은 URI Scheme의 한계를 극복하기 위해 아래와 같은 개념들이 생겼습니다.
앱링크(App Link) / 유니버셜 링크(Universal Link)
앱 링크와 유니버설 링크란? 앱 링크(App Link, Android)와 유니버설 링크(Universal Link, iOS)는 웹사이트 형태의 HTTP URL을 사용해 모바일 앱과 웹을 연결하는 방식입니다. 예시 URL:
<https://www.myCarService.com/chat>
<https://deeplink.myCarService.com/cars/xxx>
<https://myCarService.com/events?id=123>
이러한 링크는 고유한 웹사이트 주소(도메인) 를 기반으로 생성되며, 항상 유일한 URL로 구성됩니다.
작동 원리
사용자가 HTTP URL을 실행하면, OS가 URL과 매핑된 앱을 찾아 실행합니다.
이를 통해 하나의 URL로 웹과 모바일에서 동일한 콘텐츠 를 제공할 수 있습니다.
Fallback URL
앱이 설치되지 않은 사용자가 링크를 클릭할 경우, URL은 외부 브라우저에서 실행됩니다.
이를 Fallback URL이라 하며, custom URI scheme의 유연성 부족 문제를 해결하는 데 기여합니다.
앱 링크와 유니버설 링크의 특징
웹과 앱의 통합: 하나의 URL로 웹과 앱에서 동일한 경험 제공.
유연성: 앱이 없는 사용자도 동일한 링크를 통해 웹 콘텐츠에 접근 가능.
고유성 보장: URL은 특정 도메인에 의해 고유하게 생성됩니다.
앱 링크와 유니버설 링크는 기존 Custom URI Scheme 방식의 단점을 보완하며, 더 나은 사용자 경험과 유연성을 제공합니다.
도메인 소유자 인증
배경 및 필요성
배달의민족과 요기요의 딥링크 동작 차이 배달의민족의 경우, 딥링크 클릭 시 바로 앱의 특정 페이지로 이동하지만, 요기요는 딥링크 클릭 시 웹 브라우저가 열리고 이후 앱의 특정 페이지로 이동합니다. 배달의민족
이는 앱 링크(App Link) 또는 유니버설 링크(Universal Link) 가 정상적으로 설정되고, 도메인 소유자 인증이 완료되었기 때문입니다.
OS는 URL을 인식해 해당 앱과 연결된 페이지를 바로 실행할 수 있습니다.
덕분에 웹 브라우저를 거치지 않고 앱 내에서 원하는 페이지로 직접 이동합니다.
요기요
이는 요기요가 Fallback URL 만 설정되어 있을 가능성이 높기 때문입니다.
도메인 소유자 인증이 완료되지 않아, 앱 링크나 유니버설 링크를 사용할 수 없으므로 OS는 URL을 웹 브라우저로 처리한 뒤 앱 실행을 시도합니다.
앱 링크(App Link) / 유니버설 링크(Universal Link) 작동 조건
즉 배달의 민족처럼 딥링크가 작동하려면, 해당 도메인의 소유자가 특정 앱과 연관된 것을 인증해야 합니다.
인증 방식 Android와 iOS는 각각 인증 과정을 요구하며, 기본 방식은 다음과 같습니다:
해당 도메인에 앱의 고유 ID(패키지) 정보가 포함된 인증 파일 (Digital Asset Link 파일)을 업로드합니다.
OS가 이 파일을 확인하여 도메인과 앱의 소유 관계를 인증합니다.
도메인 소유자 인증 등록하는 법
[OneLink Management] - [Edit template] 클릭
아래와 같이 플랫폼별 등록합니다.
플랫폼별 등록 다음으로는 아래와 같이 Sha 256 FingerPrint 등록합니다.
AppLink에 적용하게 되면 아래 사진과 같이 표시됩니다.
위의 소유자인증과 앱에서의 구현방법은 공식 문서를 참고하셔서 구현하면 됩니다.
검증된 도메인으로 생성된 딥링크 클릭 시,
앱이 설치된 경우에는 앱 및 특정 페이지가 바로 열리고
(앱이 설치되어 있지 않아) 딥링크 실패 시에는, 해당 도메인의 웹페이지로 이동합니다. 이때, 해당 도메인을 관리하는 개발자의 구현에 따라서 웹페이지에서 다양한 Fallback이 가능하기 때문에, 웹사이트 혹은 앱 마켓으로 보내는 것도 가능합니다. (Fallback 은 아래 딥링크 유의사항에서 다시 다뤄집니다)
딥링크 사용할 때 유의해야 할 부분
Universal Links와 App Links는 각 OS에서 제공하는 딥링크 형태로, Safari(iOS)와 Chrome(Android)에서 정상적으로 작동하도록 설정됩니다. 특히 Safari는 URI Scheme의 동작이 제한될 수 있습니다.
Universal Links 사용 시 주의사항
주소창에 링크를 복사/붙여넣기 하면 작동하지 않습니다.
JavaScript로 트리거할 경우 리다이렉트되지 않습니다.
앱 내에서
openUrl
로 링크를 열면 작동하지 않습니다.
딥링크 구현 및 테스트의 필요성
앱과 브라우저마다 딥링크 구현 방식이 다르기 때문에, 유형별로 적합한 딥링크를 설정하고 테스트해야 합니다.
Fallback의 중요성
딥링크가 작동하지 않을 경우(예: 앱 미설치, 지원 미흡 등), Fallback으로 대체 경로를 제공하는 것이 중요합니다.
대표적인 Fallback 방법
앱 다운로드 페이지로 이동: App Store 또는 Google Play로 리디렉션.
웹 페이지로 이동: 딥링크 대상과 동일한 콘텐츠를 제공하는 웹 페이지로 안내.
앱 링크의 문제점: 데이터 유실
데이터 유실 문제
랜딩페이지와 쿼리 파라미터 정보가 포함된 URL이 앱스토어로 이동하면서 손실됩니다.
결과적으로 사용자가 어떤 경로로 유입되었는지 트래킹하기 어려워집니다.
전환율 분석의 어려움
유입 경로별 전환율을 파악하기 위한 데이터 분석이 제한됩니다.
딥링크 실패
랜딩페이지 정보가 손실되어, 사용자를 의도한 페이지로 연결하는 딥링킹이 불가능해집니다.
디퍼드 딥링크 (Deferred DeepLink)
Deferred DeepLink는 해석 그대로 ‘지연된 딥링크' 로써 아래와 같은 경우에 동작하게 됩니다.
앱이 설치되어 있으면: 앱이 바로 열리면서 해당 컨텐츠 실행
앱이 설치되어 있지 않으면: 딥링크 동작을 지연시켰다가 앱설치이후 실행되었을때 해당 컨텐츠를 실행
디퍼드 딥링크의 동작 방식
딥링크 클릭
사용자가 솔루션을 통해 생성된 딥링크를 클릭합니다.
앱 미설치 시 스토어 이동
앱이 설치되어 있지 않으면, OS별 앱스토어로 이동해 다운로드를 진행합니다.
앱 실행 및 SDK 초기화
앱 실행 시, 솔루션에서 제공하는 SDK가 초기화됩니다.
기기 식별 및 데이터 조회
SDK가 내부 DB를 통해 기기를 식별하고 딥링크 데이터를 조회합니다.
딥링킹 처리
조회된 데이터를 기반으로 사용자를 원하는 페이지로 딥링크 처리합니다.
URL 정보 전송 및 활용
딥링크 클릭 시, URL 정보가 솔루션에 자동으로 전송됩니다.
앱 실행 후, SDK가 이전에 클릭한 URL 정보를 가져와 데이터 활용이 가능합니다.
참고
Last updated