모든 글
Pocket PDF · 2분 읽기

두 번째 앱 출시기 3 — 세 저장소가 나눠 든 딥링크 - /app/<제품> 단일 규칙과 assetlinks

QR 코드 하나를 찍었을 때 앱이 있으면 즉시 실행되고, 없으면 소개 웹을 거쳐 스토어로 가야 합니다. 안드로이드 앱, 브랜드 홈페이지, 도메인 문패(assetlinks) 세 저장소가 /app/<제품> 단일 문법으로 질서를 찾은 여정입니다.

#android#pocket-pdf#딥링크#applinks#웹

첫 번째 앱(Stock Calculator)에 이어 Pocket PDF까지 앱이 두 개로 늘어나자, 공유 링크와 QR 코드 관리에서 구조적인 문제가 드러났습니다.

포스터나 웹사이트에 들어가는 QR 코드에 Google Play 스토어 직링크(https://play.google.com/store/apps/details?id=...)를 박아두면 다음과 같은 치명적인 한계가 생깁니다:

  1. 앱이 이미 설치된 사용자도 무조건 스토어로 이동합니다. (앱이 바로 열리지 않음)
  2. 트래픽 분석(utm_source)을 정교하게 제어할 수 없습니다.
  3. 스토어 주소나 패키지명이 바뀌었을 때 이미 인쇄된 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

규칙이 단순해지자, 새 앱이 출시될 때마다 어디에 줄을 서야 하는지가 명확해졌습니다.

세 저장소가 한 문법을 나누어 집니다

이 딥링크가 제대로 작동하려면 세 개의 서로 다른 저장소가 완벽한 삼위일체로 맞물려야 합니다:

  1. Android 앱 저장소 (pocket-pdf):
    • AndroidManifest.xmlautoVerify="true" 인텐트 필터 선언.
    • https://twinklelabs.kr/app/pocket-pdf 경로를 수신하도록 등록.
  2. 브랜드 웹사이트 (home):
    • /app/pocket-pdf 경로로 접속했을 때, 웹 브라우저 사용자에게 예쁜 랜딩 페이지를 보여주고 스토어로 자연스럽게 넘겨주는 리다이렉트 페이지 구현.
  3. 도메인 루트 문패 (.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 문법 아래 세 저장소를 단단히 묶었습니다.

하나를 만들 때는 몰랐던 것들이, 둘을 만들면서 비로소 제자리를 찾아갑니다.