백지부터 시작하는 이세계 코딩 생활
Deep Link for Android (WebSite 연결) 본문
빠른 사용 예
다음은 www.example.com 웹 사이트에서 Digital Asset Links를 사용하여 해당 사이트의 URL에 대한 모든 링크가 브라우저가 아닌 지정된 앱에서 열리도록 지정하는 방법에 대한 매우 간단한 예입니다.
[{
"관계": [ "delegate_permission / common.handle_all_urls"],
"target": { "네임 스페이스": "android_app", "package_name": "com.example.app",
"sha256_cert_fingerprints": [ "hash_of_app_certificate"]}
}]
Ref. developers.google.com/digital-asset-links/v1/getting-started?hl=ko
웹사이트 연결 선언하기
디지털 애셋 링크 JSON 파일을 웹사이트에 게시하여 웹사이트와 연결된 Android 앱을 나타내고 앱의 URL 인텐트를 인증해야 합니다. JSON 파일은 다음 필드를 사용하여 연결된 앱을 식별합니다.
다음 예에서 assetlinks.json 파일은 com.example Android 앱에 링크를 여는 권한을 부여합니다.
[{
"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"]
}
}]
* 웹 사이트와 여러 앱 연결
다음 파일 목록은 두 개 앱과의 연관 관계를 별도로 선언하고 https://www.example.com/.well-known/assetlinks.json에 위치하는 명령문 파일의 예를 보여줍니다.
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.puppies.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"]
}
},
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.monkeys.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"]
}
}]
JSON 인증 파일 게시하기
다음 위치에서 JSON 인증 파일을 게시해야 합니다.
https://domain.name/.well-known/assetlinks.json
로직 흐름
앱링크 ->
인증할 호스트 목록 확인 ->
디지털 앳셋 링크 파일 확인 ->
URL 인텐트 테스트 (앱과 연결된 웹사이트의 목록을 확인하고 호스팅되는 JSON 파일의 유효성을 확인하고 나면 기기에 앱을 설치함. 또한 앱이 인증되었는지, 설정되었는지 확인함.)
adb shell am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "http://domain.name:optional_port"
테스트 예시
다음 예에서는 여러 앱 링크가 정의된 manifest 구성을 보여줍니다.
<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="https" android:host="www.example.com" />
<data android:scheme="https" android:host="mobile.example.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="www.example2.com" />
</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="account.example.com" />
</intent-filter>
</activity>
<activity android:name=”ThirdActivity”>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="https" android:host="map.example.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="market" android:host="example.com" />
</intent-filter>
</activity>
</application>
Ref.
1 developers.google.com/digital-asset-links/v1/getting-started?hl=ko
'Service || Server' 카테고리의 다른 글
export, import (0) | 2021.03.09 |
---|---|
DDD (Domain Driven Design) 구조 (0) | 2021.03.09 |
Third Party (3rd party) (0) | 2021.03.09 |
사용하는 웹페이지 소유권 인증 (0) | 2021.03.04 |
DeepLink (0) | 2021.02.22 |