두 번째 앱 출시기 3 — 세 저장소가 나눠 든 딥링크 - /app/<제품> 단일 규칙과 assetlinks
QR 코드 하나를 찍었을 때 앱이 있으면 즉시 실행되고, 없으면 소개 웹을 거쳐 스토어로 가야 합니다. 안드로이드 앱, 브랜드 홈페이지, 도메인 문패(assetlinks) 세 저장소가 /app/<제품> 단일 문법으로 질서를 찾은 여정입니다.
첫 번째 앱(Stock Calculator)에 이어 Pocket PDF까지 앱이 두 개로 늘어나자, 공유 링크와 QR 코드 관리에서 구조적인 문제가 드러났습니다.
포스터나 웹사이트에 들어가는 QR 코드에 Google Play 스토어 직링크(https://play.google.com/store/apps/details?id=...)를 박아두면 다음과 같은 치명적인 한계가 생깁니다:
- 앱이 이미 설치된 사용자도 무조건 스토어로 이동합니다. (앱이 바로 열리지 않음)
- 트래픽 분석(
utm_source)을 정교하게 제어할 수 없습니다. - 스토어 주소나 패키지명이 바뀌었을 때 이미 인쇄된 QR 코드를 수정할 수 없습니다.
우리는 우리만의 도메인(twinklelabs.kr)을 앞세운 Android App Links 기반 스마트 라우팅을 구축하기로 했습니다.
주소의 문법은 저장소 바구니가 결정했습니다
처음에는 딥링크 경로를 /stock-calculator/app나 /pocket-pdf/download처럼 앱마다 제각각 지었습니다.
하지만 제품이 계속 늘어나는 구조에서 이런 불규칙한 경로는 유지보수의 재앙이 됩니다.
우리는 모노레포와 저장소 구조의 app/ 바구니 규칙을 URL에도 그대로 적용했습니다:
https://twinklelabs.kr/app/<제품_슬러그>
- Stock Calculator:
https://twinklelabs.kr/app/stock-calculator - Pocket PDF:
https://twinklelabs.kr/app/pocket-pdf
규칙이 단순해지자, 새 앱이 출시될 때마다 어디에 줄을 서야 하는지가 명확해졌습니다.
세 저장소가 한 문법을 나누어 집니다
이 딥링크가 제대로 작동하려면 세 개의 서로 다른 저장소가 완벽한 삼위일체로 맞물려야 합니다:
- Android 앱 저장소 (
pocket-pdf):AndroidManifest.xml에autoVerify="true"인텐트 필터 선언.https://twinklelabs.kr/app/pocket-pdf경로를 수신하도록 등록.
- 브랜드 웹사이트 (
home):/app/pocket-pdf경로로 접속했을 때, 웹 브라우저 사용자에게 예쁜 랜딩 페이지를 보여주고 스토어로 자연스럽게 넘겨주는 리다이렉트 페이지 구현.
- 도메인 루트 문패 (
.well-known/assetlinks.json):- Google Play 콘솔의 앱 서명 키 인증서 지문(SHA-256)을 등록하여 안드로이드 OS가 우리 도메인의 소유권을 공식 인증하도록 선언.
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "kr.twinklelabs.pocketpdf",
"sha256_cert_fingerprints": ["8D:04:71:..."]
}
}
]
결과: 어떤 상황에서도 가장 매끄러운 경험
이제 사용자가 QR 코드를 찍거나 링크를 누르면:
- Pocket PDF 앱이 설치된 폰: 0.1초 만에 앱의 메인 화면이 즉시 실행됩니다.
- 앱이 설치되지 않은 폰/PC:
twinklelabs.kr/app/pocket-pdf소개 화면이 뜨고, 사용자의 환경에 맞는 다운로드 버튼(Play Store 직행)이 열립니다. - 마케팅 추적: 웹 랜딩 페이지가
utm_source와 꼬리표를 깔끔하게 달아 스토어로 넘겨줍니다.
다시 같은 일을 한다면
Stock Calculator가 “안드로이드 앱을 처음으로 끝까지 만들어 본 경험”이었다면, Pocket PDF는 “여러 앱과 웹 플랫폼이 하나의 생태계로 엮이는 질서를 세운 경험”이었습니다.
- 엔진은 공통 모듈로 정제되어 한글 OCR을 완벽히 읽어냈고,
- BM은 필수 도구를 인질 잡지 않고 투명해졌으며,
- 딥링크는 단일 URL 문법 아래 세 저장소를 단단히 묶었습니다.
하나를 만들 때는 몰랐던 것들이, 둘을 만들면서 비로소 제자리를 찾아갑니다.