앱 딥링크(Deep Link)
완벽 가이드
딥링크의 개념부터 URI Scheme, Universal Links, App Links, Deferred Deep Link까지 — 한번에 이해하는 모바일 딥링크의 모든 것
1. 딥링크란 무엇인가?
딥링크(Deep Link)는 앱 내의 특정 화면으로 직접 이동시키는 링크입니다. 일반 링크가 앱의 홈 화면으로 보내는 것과 달리, 딥링크는 상품 상세 페이지, 이벤트 화면, 설정 페이지 등 앱 안의 원하는 곳으로 바로 진입시켜 줍니다.
웹에서 https://example.com/product/123으로 특정 상품 페이지에 바로 들어가는 것과 같은 개념입니다. 웹에서는 URL이 이 역할을 당연히 하지만, 앱에서는 별도로 설정이 필요합니다. 이 설정이 바로 "딥링크"입니다.
2. 딥링크의 2가지 핵심 방식
딥링크의 기술적 구현 방식은 크게 2가지로 나뉩니다.
커스텀 URI Scheme
myapp://product/123
앱이 자체 스킴을 정의하는 전통적인 방식
HTTPS URL 방식
https://example.com/product/123
일반 웹 URL을 앱 링크로 활용하는 현대적 방식
그리고 종종 언급되는 Deferred Deep Link는 별도의 기술 방식이 아니라, 위 2가지 방식 위에 부가 기능으로 얹는 것입니다. 이 부분은 뒤에서 따로 설명합니다.
3. 방식 1 — 커스텀 URI Scheme
가장 오래된 딥링크 방식입니다. 앱이 자신만의 고유한 스킴(Scheme)을 등록하면, 해당 스킴으로 시작하는 URL이 클릭될 때 OS가 그 앱을 실행합니다.
// 앱이 "myapp" 이라는 스킴을 등록하면
myapp://product/123 → 상품 상세
myapp://event/summer-sale → 이벤트 페이지
myapp://settings/alarm → 알림 설정
// 비교: 웹 URL은 "https" 스킴을 사용
https://example.com/product/123
장점
구현이 간단합니다. 앱의 설정 파일(AndroidManifest.xml, Info.plist)에 스킴만 등록하면 바로 동작합니다.
치명적인 단점
도메인 검증이 없습니다. 아무 앱이나 myapp://을 등록할 수 있어서 스킴 충돌(Hijacking) 위험이 있습니다. 또한 앱이 설치되지 않은 경우 아무 일도 안 일어나거나 에러가 발생합니다.
4. 방식 2 — Universal Links / App Links
URI Scheme의 보안 문제와 미설치 문제를 해결하기 위해 등장한 현재 표준입니다. iOS에서는 Universal Links, Android에서는 App Links라고 부르지만 원리는 동일합니다.
일반 HTTPS URL 자체가 딥링크 역할을 합니다. https://example.com/product/123 하나의 URL이 앱이 있으면 → 앱으로, 앱이 없으면 → 웹 브라우저로 자연스럽게 분기됩니다.
URL 클릭
매핑 확인
→ 앱 실행 📱
→ 웹 브라우저 🌐
그런데 여기서 궁금한 점이 생깁니다. "OS는 이 URL을 앱으로 보내야 하는지 어떻게 아는 걸까?" — 다음 섹션에서 이 핵심 원리를 살펴봅시다.
5. OS는 앱과 URL을 어떻게 연결하나?
핵심은 도메인과 앱 사이의 양방향 신뢰 등록입니다. 웹 서버와 앱이 서로를 "나의 파트너다"라고 선언하고, OS가 이를 검증합니다.
Step 1. 웹 서버에 연결 파일 업로드
앱 개발자가 웹 서버의 정해진 경로에 JSON 파일을 올립니다. 이 파일에는 "이 도메인의 어떤 경로를 어떤 앱이 처리한다"는 정보가 담겨 있습니다.
// 위치: https://example.com/.well-known/apple-app-site-association
{
"applinks": {
"apps": [],
"details": [{
"appID": "TEAMID.com.example.myapp",
"paths": ["/product/*", "/event/*"]
}]
}
}
// 위치: https://example.com/.well-known/assetlinks.json
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.myapp",
"sha256_cert_fingerprints": ["AB:CD:EF:..."]
}
}]
위 코드에서 "paths": ["/product/*", "/event/*"]가 의미하는 것은 — /product/와 /event/로 시작하는 URL은 브라우저 대신 우리 앱이 받아서 처리하겠다는 선언입니다.
Step 2. 앱에도 도메인 등록
iOS는 Xcode의 Associated Domains 설정에 applinks:example.com을 등록하고, Android는 AndroidManifest.xml에 intent-filter로 해당 도메인을 선언합니다.
Step 3. OS가 앱 설치 시 자동 검증
JSON 파일에 선언
"TEAMID.com.example.myapp"이
/product/* 를 처리합니다
앱 설정에 선언
example.com 도메인의
링크를 처리합니다
🔒 OS가 양쪽 정보를 대조해서 일치할 때만 앱-도메인 연결을 허용
앱이 설치되면 OS가 앱에 등록된 도메인을 자동으로 방문해서 JSON 파일을 가져옵니다. 양쪽 정보가 일치하면 매핑 테이블에 저장하고, 이후 해당 URL이 클릭되면 앱으로 보냅니다.
웹 서버는 "우리 회사 직원은 이 사람입니다"라고 사원증을 발급하고, 앱은 "저는 이 회사 소속입니다"라고 사원증을 보여주는 겁니다. OS는 양쪽 모두 확인한 후에야 출입을 허가합니다. 그래서 아무 앱이나 남의 도메인을 가로챌 수 없습니다.
Step 4. 링크 클릭 시 판단
/product/123테이블 조회
6. Deferred Deep Link란?
Deferred Deep Link는 별도의 기술 방식이 아니라, 기존 딥링크 위에 "앱 미설치 시 설치 후 원래 목적지로 이동" 기능을 추가한 것입니다.
링크 클릭
이동
최초 실행
자동 이동! ✨
이것이 가능한 이유는 서드파티 서비스(Branch, Adjust, AppsFlyer 등)가 링크 클릭 정보를 서버에 저장해뒀다가, 앱이 설치되고 첫 실행될 때 매칭해주기 때문입니다.
참고
Google의 Firebase Dynamic Links는 이 기능을 무료로 제공했으나 지원 종료가 예정되어 있어, 현재는 Branch나 Adjust 같은 서드파티 서비스를 주로 사용합니다.
7. 한눈에 비교하기
| 항목 | URI Scheme | Universal Links / App Links |
Deferred Deep Link |
|---|---|---|---|
| 링크 형태 | myapp://path |
https://도메인/path |
위 방식 + 부가 기능 |
| 보안 검증 | 없음 | 도메인 검증 | 기반 방식에 따름 |
| 앱 미설치 시 | 에러 / 무반응 | 웹으로 폴백 | 스토어 → 설치 후 이동 |
| 스킴 충돌 위험 | 있음 | 없음 | 없음 |
| 구현 난이도 | 쉬움 | 보통 | 서드파티 필요 |
| 현재 권장 여부 | 비권장 | ✅ 표준 | 마케팅에 필수 |
8. 실무 활용 시나리오
푸시 알림
"주문이 배송되었습니다" 알림 클릭 → 배송 추적 화면으로 직접 이동
마케팅 캠페인
SNS 광고 클릭 → 앱 내 할인 이벤트 페이지로 바로 진입
공유 링크
카카오톡으로 상품 URL 공유 → 수신자가 클릭하면 앱의 상품 상세로 이동
이메일 마케팅
뉴스레터 내 CTA 버튼 → 앱의 특정 콘텐츠 페이지로 유도
리타겟팅
장바구니에 담아둔 상품 리마인드 → 해당 장바구니 화면으로 복귀
초대/추천
친구 초대 링크 클릭 → 앱 설치 후 추천인 자동 입력 (Deferred Deep Link)
9. 정리
핵심 포인트 요약
- ✓딥링크는 앱 내 특정 화면으로 직접 이동시키는 링크다
- ✓기술적 방식은 URI Scheme과 HTTPS URL(Universal Links / App Links) 2가지
- ✓HTTPS URL 방식은 웹 서버 JSON 파일 ↔ 앱 설정 간 양방향 검증으로 보안을 보장한다
- ✓Deferred Deep Link는 별도 방식이 아니라, 미설치 → 설치 → 목적지 이동을 처리하는 부가 기능이다
- ✓현재 표준은 HTTPS URL 방식이며, 마케팅 용도에는 Deferred Deep Link를 함께 사용한다
'Tech Notes' 카테고리의 다른 글
| [앱인토스] Error: java object gone (0) | 2026.02.14 |
|---|---|
| [앱인Toss] 인앱 광고 넣기 (0) | 2026.02.10 |
| [앱인토스] WebView 미니앱 테스트 방법 (0) | 2026.02.05 |
| Tauri로 웹 개발자도 데스크톱 앱 만들기 (0) | 2026.01.31 |
| Claude Code의 --continue와 --fork 완벽 가이드 : git 과 비슷 (0) | 2026.01.29 |