성장
딥 링크
딥 링크는 챌린지, 추천 초대, 상품 페이지처럼 설치된 앱 안의 특정 화면을 열어요. 앱이 설치되어 있지 않으면 스마트 링크와 마찬가지로 방문자가 스토어로 이동해요. 딥 링크는 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 팀 ID | A1B2C3D4E5 | Universal Links. Apple Developer 계정의 Membership details에 있는 10자리 ID예요. |
| iOS 번들 ID | com.habitly.app | Universal Links |
| Android 패키지 이름 | com.habitly.app | Android 및 Huawei 기기에서 앱 열기 |
| Android 스킴 | habitly | 인텐트 필터가 처리하는 스킴 |
| SHA-256 인증서 지문 | 14:6D:E9:83:...:44:E5 | Android App Links. 쉼표, 공백 또는 줄바꿈으로 구분해 하나 이상 추가하세요. |
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.json | Android 패키지 이름 및 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에 도달하지 않으므로 집계되지 않아요. 이런 경우에는 자체 앱 분석을 사용하세요.