앱 링크 기능을 구현할 때는 링크 기능을 테스트하여 시스템에서 제대로 앱과 웹사이트를 연결하고 URL 요청을 처리할 수 있는지 확인해야 합니다.
기존 명령문 파일을 테스트하려면 명령문 목록 생성기와 테스터 도구를 사용하면 됩니다.
다음 섹션에서는 앱 링크 확인을 수동으로 테스트하는 방법을 설명합니다. 원하는 경우 Play 딥 링크 도구 또는 Android 스튜디오 App Links Assistant에서 확인을 테스트할 수 있습니다.
인증할 호스트 목록 확인하기
테스트할 때는 시스템이 앱에 관해 인증해야 하는 연결된 호스트 목록을 확인해야 합니다. 상응하는 인텐트 필터에 다음 속성과 요소가 포함된 모든 URL 목록을 작성하세요.
http
또는https
값을 가진android:scheme
속성- 도메인 URL 패턴이 있는
android:host
속성 android.intent.action.VIEW
작업 요소android.intent.category.BROWSABLE
카테고리 요소
이 목록을 사용하여 디지털 애셋 링크 JSON 파일이 이름이 지정된 각 호스트와 하위 도메인에 제공되는지 확인합니다.
디지털 애셋 링크 파일 확인하기
각 웹사이트에서 Digital Asset Links API를 사용하여 디지털 애셋 링크 JSON 파일이 적절히 호스팅되고 정의되었는지 확인합니다.
https://digitalassetlinks.googleapis.com/v1/statements:list?
source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&
relation=delegate_permission/common.handle_all_urls
동적 앱 링크의 경우 관계 확장 프로그램도 확인할 수 있습니다.
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true
링크 정책 확인하기
테스트 과정을 진행하면서 링크 처리의 현재 시스템 설정을 확인할 수 있습니다. 다음 명령어를 사용하여 연결된 기기의 모든 앱에 적용되는 기존 링크 처리 정책을 가져오세요.
adb shell dumpsys package domain-preferred-apps
다음 명령어는 동일한 작업을 실행합니다.
adb shell dumpsys package d
이 명령어는 기기에서 정의된 각 사용자 또는 프로필의 목록을 반환합니다. 이 목록은 다음 형식의 헤더가 앞에 표시됩니다.
App linkages for user 0:
이 헤더 다음에는 다음과 같은 형식으로 각 사용자의 링크 처리 설정 목록이 출력됩니다.
Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002
이 목록은 사용자별로 어느 앱이 어느 도메인과 연결되어 있는지 나타냅니다.
Package
- 매니페스트에 선언된 패키지 이름을 기준으로 앱을 식별합니다.Domains
- 공백을 구분 기호로 사용하여 이 앱이 처리하는 웹 링크의 호스트 목록 전체를 보여줍니다.Status
- 이 앱의 현재 링크 처리 설정을 보여줍니다. 인증을 통과하고 매니페스트에android:autoVerify="true"
가 포함된 앱은always
상태를 보여줍니다. 이 상태 뒤에 붙는 16진수는 사용자 앱 링크 환경설정의 Android 시스템 레코드와 관련이 있습니다. 이 값은 인증 성공 여부는 나타내지 않습니다.
테스트 예시
앱 링크 인증이 성공하려면 시스템은 앱 링크의 기준을 충족하는 특정 인텐트 필터에서 지정한 각 웹사이트와 관련하여 앱을 인증할 수 있어야 합니다. 다음 예에서는 여러 앱 링크가 정의된 매니페스트 구성을 보여줍니다.
<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" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data 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" />
<data 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" />
<data 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" />
<data 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" />
<data android:host="example.com" />
</intent-filter>
</activity>
</application>
플랫폼이 이전 매니페스트에서 인증을 시도하는 호스트의 목록은 다음과 같습니다.
www.example.com
mobile.example.com
www.example2.com
account.example.com
플랫폼이 이전 매니페스트에서 인증을 시도하지 않는 호스트 목록은 다음과 같습니다.
map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)
명령문 목록을 자세히 알아보려면 명령문 목록 만들기를 참고하세요.