안녕하세요 점냥입니다:)
이전 딥링크 - 1 글에서는 URL Scheme 방식과 한계점에 대해서 간단히 알아보았습니다.
이번 포스팅에서는 구글에서 URL Scheme 방식의 한계점을 보안한 App Link
에 대해서 알아보도록 하겠습니다.
App Link 개요
2015년도에 Google/IO에서 발표한 기술이에요. Scheme 값이 중복되는 문제를 해결하였습니다.
App Link는 http, https로 Scheme를 제한해서 URL Scheme 자체가 하나의 도메인을 나타나게끔 변경하였습니다.
URL Scheme에서 자유롭게 정의했던 market:// 이나 Line:// 형식은 사용할 수 없습니다.
<intent-filter android:autoVerify="true">
<data android:scheme="http" android:host="www.example.com" />
<data android:scheme="https" />
</intent-filter>
App Link를 적용한 Intent-filter 코드를 보면 scheme
을 http, https로 설정했고, host를 www.example.com으로 설정했습니다.
<data android:scheme="https" />
data 태그에는 scheme만 혼자 정의되어 있는 데 이럴 경우 Intent-filter 안에 정의된 다른 host와 결합이 됩니다.
예를 들어 위 코드라면 다음과 같은 2개의 App Link가 생성됩니다.
- http://www.example.com
- https://www.example.com
App Link 인증
생성된 App Link가 어플의 고유한 앱 링크인지를 증명하는 작업을 수행합니다.
그 작업을 수행하기 위해 App Link의 Intent filter는 autoVerify 속성이 추가되었는데
autoVerify=ture
속성을 Intent filter에 넣어주게 되면 생성된 App Link URL 도메인으로 이동하여 데이터 에셋 파일을 검색하게 됩니다.
안드로이드 공식 사이트에서 설명하는 autoVerify의 단계는 다음과 같습니다.
- 시스템에서 다음이 포함된 모든 인텐트 필터를 검사합니다.
- 작업: android.intent.action.VIEW
- 카테고리: android.intent.category.BROWSABLE 및 android.intent.category.DEFAULT
- 데이터 스키마: http 또는 https
2. Android는 위의 인텐트 필터에 있는 각 고유 호스트 이름별로 디지털 애셋 링크에 대응하는
웹사이트에서 https://example.com/.well-known/assetlinks.json 해당 경로에 디지털 에셋 링크 JSON 파일이 존재하는지 검색합니다.
데이터 에셋 파일
데이터 애셋 링크 JSON 파일은 위 주소에 존재해야 하며 생성된 App Link와 앱의 패키지가 저장되어 있다고 합니다.
도메인에는 아무나 파일을 올릴 수 없고, 해당 파일 내에는 어플의 패키지명이 기록되어 있어
패키지가 다른 앱에서 동일한 앱 링크를 사용할 수 없습니다.
ex) assetlinks.json
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example",
"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"]
}
}]
App Link의 한계점
이럴 수가 URL Scheme 또 한계점이라니...
가장 최근 Android API는 30가 나왔고 이전에 나온 여러 API 버전을 사용 중인 단말기가 많아요.
하지만 App Link는 Android API 6.0 버전 이상의 단말기에서만 사용 가능해요. (그 이전 버전의 단말기로는 App Link가 URL Scheme으로 적용됩니다.) 따라서 2020년 통계로 계산해보면전 세계의 16%의 앱은 App Link를 사용할 수 없다고 하네요.
그다음 한계점으로 특정 서비스에서 딥 링크 클릭한 사용자가 앱을 설치하지 않았다면 구글 플레이로 이동시킬 수 있는 데 이러한 과정에서
딥 링크가 유실되어 사용자를 추적할 수 없는 경우가 있다고 합니다.
구글 플레이로 이동 후 딥 링크가 유실되면 앱을 설치한 후 원래 딥 링크에서 원하는 앱의 특정 화면으로 이동할 수 없게 되는데요.
딥링크가 유실되지 않게 타이머를 도입하여 어찌어찌할 수 있지만 개발자 입장에서 굉장히 귀찮은 작업이라고 하네요.
정리하며
App Link까지 알아보며 기본적인 Android의 딥 링크 구현 방법에 대해서 알아보았습니다.
App Link도 아쉽지만 한계점이 존재하는데요. 구글 플레이로 이동시키는 작업에서 딥 링크가 유실된다는 한계점을 해결한
Deffered Deep Link
가 존재한다고 합니다~~ 딥 링크에 대해서 더 궁금하신 분들은 알아보시면 좋을 거예요.
'Android > Common' 카테고리의 다른 글
[Android] 상태바 투명으로 만드는 여러 방법에 대한 일지 (0) | 2021.03.08 |
---|---|
[Android] Android Font 직접 적용 (0) | 2021.03.02 |
[Android] 딥 링크 - URL Scheme (4) | 2021.02.08 |
[Android] Activity Lifecycle (0) | 2021.01.29 |
[Android] Dark Theme 적용하는 방법 (3) | 2021.01.04 |