문서를 읽다 보면 Deep link라는 용어가 나와서 확인을 시작하였다. 일반적으로 말하는 Link와 Deep Link 사이의 차이점을 이해하고자 한다. 또한 Android에서는 어떻게 처리하는지 확인하자 한다.
링크의 종류는 아래와 같이 4가지로 구분된다. (출처: 나무위키)
Simple link (단순 링크): 대표 URL (e.g, http://kibua20.tistory.com ). 우리가 일반적인 알고 있는 URL 임
Deep link : 대표 URL에서 내부 page로 이동하는 것, 즉, 대표 URL을 거치지 않고, sub URL을 바로 접근하는 것 예를 들어, https//kibua20.tistory.com/2처럼 블로그 2번째 글을 바로 접근한다. 또는 www.example.com/product123 처럼 특정 product123 을 바로 접근
임베디드 링크(embedded link): 다른 웹사이트의 내용을 <embed>, <object>, <video>, <audio> 태그 등을 사용하여 자신의 사이트에 불러와서 띄움.
프레이밍 링크(framing link): 웹 페이지에 프레임(frame)을 만든 후 그 안에 다른 웹사이트의 내용을 불러와서 띄움.
Deep link 표시 방법 (출처: 구글 AD)
딥 링크는 일반적으로 스키마와 호스트 및 경로라는 두 부분으로 구성됩니다. 딥 링크의 한 형식인 앱 URI에는 타사: 앱 패키지 ID가 포함됩니다. 또한 URL에 추적 매개변수가 포함될 수도 있습니다.
앱 패키지 ID는 앱의 고유 식별자입니다. 많은 개발자는 앱의 인터넷 도메인을 거꾸로 사용하여 패키지 ID를 만듭니다. 예를 들어 Google에서 게시한 앱은 'com.google'로 시작됩니다.
스키마는 열려는 앱을 식별하는 링크의 일부입니다. 앱에 앱 또는 웹사이트 이름으로 시작하는 'http' 또는 맞춤 스키마를 사용할 수 있습니다.
호스트 및 경로는 앱에서 콘텐츠가 있는 고유한 위치를 지정합니다. 사용자가 광고를 클릭하거나 앱을 열 때 연결되는 위치를 앱에 지정할 수 있습니다.
딥 링크앱 URI
정의 | 딥 링크는 앱에서 게재하려는 콘텐츠에 해당하는 위치를 지정합니다. | 앱 URI는 딥 링크의 한 형식으로 앱을 Google 검색과 통합합니다. 광고를 편집할 때 이 형식이 표시됩니다. |
형식 | {scheme}://{host_path} | android-app://{package_id}/{scheme}/{host_path} |
예 | exampleapp://productid_1234 | android-app://com.example.android/exampleapp/productid_1234 |
Android에서 Deep Link와 App link
Android는 1) Deep link 2) App link 의 2가지 링크 유형이 있다. Deep 링크는 URL 선택 시 대화 상자가 표시되는 것이고, App link는 대화 상자 없이 디폴트 앱이 바로 실행되는 것이다.
Deep Link : 사용자를 앱의 특정 콘텐츠로 바로 연결하는 URL입니다. Android에서는 인텐트 필터를 추가하고 수신 인텐트에서 데이터를 추출하여 딥 링크를 설정할 수 있음.
Android 앱 링크: 앱이 특정 유형의 링크에 적용되는 기본 핸들러로 앱 자체를 지정할 수 있습니다. 예를 들어 여러 브라우저가 설치되어 있는 경우 Chrome을 바로 Default web broswer로 설정할 수 있다.
Android에서 Deep link 처리를 위한 manifest 파일:
# Deep link를 위한 manifest 파일 <activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_view_http_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos” --> <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> <!-- note that the leading "/" is required for pathPrefix--> </intent-filter> <intent-filter android:label="@string/filter_view_example_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos” --> <data android:scheme="example" android:host="gizmos" /> </intent-filter> </activity>
Android 에서 App link 처리를 위해서 URL의 소유권 확인과 manifest 파일 수정해야 함
- manifest에서 자동 앱 링크 확인을 요청합니다. 이렇게 하면 앱이 인텐트 필터에 사용된 URL 도메인에 포함되는지 여부를 확인하도록 Android 시스템에 인텐트를 broadcast
- 다음 위치에서 디지털 애셋 링크 JSON 파일을 호스팅 하여 웹사이트와 인텐트 필터 사이의 관계를 선언
#Web site의 소유권을 확인 https://domain.name/.well-known/assetlinks.json
# App의 manifest 에서 intent filter를 추가해야 함 <application> <activity android:name=”MainActivity”> <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="http" android:host="www.example.com" /> <data android:scheme="https" /> </intent-filter> </activity> <activity android:name=”SecondActivity”> <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="https" android:host="www.example.net" /> </intent-filter> </activity> </application>
<관련 글>
[모바일/모바일 마케팅 용어정리][용어 정리 #1] Google 광고 ID / 추적 URL / 리퍼러 / 추적 알고리즘
[모바일/모바일 마케팅 용어정리][용어 정리 #2] UTM (Urchin Tracking Module) campaign
[모바일/모바일 마케팅 용어정리][용어 정리 #3] Deep link / App link
[모바일/모바일 마케팅 용어정리][용어 정리 #4] Android 에서 Install Referrer
댓글