본문으로 건너뛰기

성장

딥 링크

딥 링크는 챌린지, 추천 초대, 상품 페이지처럼 설치된 앱 안의 특정 화면을 열어요. 앱이 설치되어 있지 않으면 스마트 링크와 마찬가지로 방문자가 스토어로 이동해요. 딥 링크는 Pro, Studio, 평생 플랜에서 사용할 수 있어요. Universal Links와 Android App Links에는 Studio 플랜에 포함된 커스텀 도메인도 필요해요.

딥 링크 작동 방식

스마트 링크에 /open/ 경로와 앱 내 경로를 추가하세요. 쿼리 문자열도 함께 전달돼요.

https://mapps.one/habitly/open/challenges/30-days?ref=newsletter
방문자동작
iOS URL 스킴이 설정된 iPhone 또는 iPad 짧은 페이지가 habitly://challenges/30-days?ref=newsletter 주소를 열려고 시도해요. 앱이 설치되어 있지 않으면 방문자는 App Store로 이동해요.
패키지 이름이 설정된 Android 또는 Huawei 짧은 페이지가 같은 경로에 대해 해당 패키지로 제한된 Android 인텐트를 열어요. Chrome은 앱이 설치되어 있으면 앱을 열고, 그렇지 않으면 대체 경로를 따라 Google Play로 이동해요.
해당 플랫폼의 딥 링크 설정이 없는 휴대폰 또는 태블릿 대체 경로로 바로 리디렉션돼요.
데스크톱 컴퓨터 및 봇 쿼리 문자열을 유지한 채 스마트 링크로 리디렉션돼요.

대체 경로는 리디렉션 규칙에 따라 스마트 링크가 해당 기기를 보낼 곳이며, UTM 태그도 함께 전달돼요. 해당 플랫폼에 스토어 링크가 없으면 랜딩 페이지가 대체 경로가 돼요. 딥 링크를 전혀 설정하지 않았거나 플랜에 딥 링크가 포함되지 않으면 모든 방문자가 스마트 링크로 리디렉션돼요.

경로에는 문자, 숫자, / _ - . ~ % 문자를 사용할 수 있어요. 그 밖의 문자는 제거되므로, 공백(%20) 같은 다른 문자는 퍼센트 인코딩하세요.

설정하기

앱의 딥 링크 탭을 열고 지원하는 플랫폼의 필드를 채우세요.

필드예시용도
iOS URL 스킴habitly://iPhone과 iPad의 리디렉션 페이지에서 앱 열기
Apple 팀 IDA1B2C3D4E5Universal Links. Apple Developer 계정의 Membership details에 있는 10자리 ID예요.
iOS 번들 IDcom.habitly.appUniversal Links
Android 패키지 이름com.habitly.appAndroid 및 Huawei 기기에서 앱 열기
Android 스킴habitly인텐트 필터가 처리하는 스킴
SHA-256 인증서 지문14:6D:E9:83:...:44:E5Android App Links. 쉼표, 공백 또는 줄바꿈으로 구분해 하나 이상 추가하세요.
Android 스킴: 앱이 등록한 커스텀 스킴(예: habitly)으로 설정하세요. 비워 두면 https 스킴이 사용되고 경로의 첫 부분이 호스트가 돼요(https://challenges/30-days). 이 방식은 인텐트 필터가 그렇게 처리하도록 설정된 경우에만 작동해요.

앱에 스킴 등록하기

iOS에서는 Info.plist 파일에 추가하세요.

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>habitly</string>
    </array>
  </dict>
</array>

Android에서는 AndroidManifest.xml 파일에 추가하세요.

<activity android:name=".MainActivity" android:exported="true">
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="habitly" />
  </intent-filter>
</activity>

앱에서 들어오는 URL을 읽고, 일치하는 화면으로 이동하고, 필요한 쿼리 파라미터를 읽으세요. 사람들이 URL을 직접 고치기도 하므로 알 수 없는 경로는 홈 화면으로 보내세요.

Universal Links 및 Android App Links

스킴 링크는 먼저 짧은 리디렉션 페이지를 보여 주며, iOS에서는 방문자에게 확인을 요청할 수도 있어요. 인증된 링크는 이 단계를 건너뛰어요. 앱이 설치되어 있으면 시스템이 앱을 바로 열어요. 인증에는 해당 앱만 사용하는 도메인이 필요하므로 커스텀 도메인에서 작동해요. get.habitly.app 도메인이 연결되면 mapps.one이 연결 파일을 대신 제공해요.

파일생성 기준
https://get.habitly.app/.well-known/apple-app-site-association
(/apple-app-site-association 경로에서도 제공)
Apple 팀 ID 및 번들 ID
https://get.habitly.app/.well-known/assetlinks.jsonAndroid 패키지 이름 및 SHA-256 지문

Apple 파일은 /open/ 아래의 모든 경로를 포함해요.

{
  "applinks": {
    "details": [
      {
        "appIDs": ["A1B2C3D4E5.com.habitly.app"],
        "components": [
          { "/": "/open/*", "comment": "Deep links created with mapps.one" }
        ]
      }
    ]
  },
  "webcredentials": { "apps": ["A1B2C3D4E5.com.habitly.app"] }
}

Android 파일은 다음과 같아요.

[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.habitly.app",
      "sha256_cert_fingerprints": [
        "14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
      ]
    }
  }
]

각 파일은 필드가 유효해질 때까지 "404 Not Found"를 반환해요. Apple은 10자리 팀 ID와 번들 ID가, Android는 패키지 이름과 AA:BB:... 형식(32쌍)의 지문 하나 이상이 필요해요. Play Console → App integrity에 있는 Play 앱 서명 키의 지문을 사용하고, 로컬에서 서명한 빌드를 테스트한다면 업로드 키의 지문도 추가하세요. 파일은 1시간 동안 캐시돼요. Apple도 자체 서버에 파일을 캐시하므로, 변경 사항을 테스트하려면 앱을 다시 설치하세요.

앱 구성하기

iOS: Associated Domains capability를 추가하고 applinks:get.habitly.app 값을 넣으세요.

Android: 도메인에 대한 인증된 인텐트 필터를 추가하세요.

<intent-filter android:autoVerify="true">
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="https" android:host="get.habitly.app" android:pathPrefix="/open/" />
</intent-filter>

그런 다음 캠페인에서 https://get.habitly.app/open/challenges/30-days 같은 링크를 사용하세요. 앱이 설치되어 있지 않으면 브라우저가 페이지를 불러오고 같은 대체 흐름이 실행돼요.

인증된 링크에는 자체 도메인을 사용하세요. mapps.one 도메인은 여러 앱이 함께 사용하므로 연결 파일은 커스텀 도메인에서만 제공돼요. mapps.one/habitly/open/ 경로의 링크는 리디렉션 페이지를 통해 계속 작동해요. 대시보드와 API에 표시되는 딥 링크 URL은 mapps.one을 사용하므로, 인증된 링크가 필요하면 호스트를 자체 도메인으로 바꾸세요.

분석

휴대폰이나 태블릿이 /open/ URL을 불러오고 mapps.one이 앱을 열려고 시도하면 열기가 딥 링크 열기 항목에 집계돼요. 스토어로 이동하는 대체 경로는 한 번 더 집계되지 않아요. 앱을 바로 여는 인증된 링크는 mapps.one에 도달하지 않으므로 집계되지 않아요. 이런 경우에는 자체 앱 분석을 사용하세요.