명령문 목록 만들기

문은 애셋 링크 사양에 정의된 대로 주 구성원의 잘 알려진 위치에 있는 JSON 인코딩된 문 목록에서 호스팅됩니다. 명령문 목록에는 하나 이상의 문이 포함되며 주 구성원에는 문 목록이 하나만 있을 수 있습니다.

명령문 목록 문법

문 목록 구문을 참고하세요.

명세서 목록 위치

명령문 목록은 주 구성원의 유형 (명시를 작성하는 웹사이트 또는 앱)에 따라 잘 알려진 위치에서 호스팅됩니다.

웹사이트 정책 목록

웹사이트에서 명세서 목록은 다음 주소에 위치한 텍스트 파일로,

scheme://domain/.well-known/assetlinks.json

.well-known 폴더 이름에 있는 점을 확인합니다.

HTTP 200 이외의 서버의 응답은 오류로 간주되며 빈 문 목록이 됩니다. HTTPS의 경우 신뢰할 수 있는 루트 목록으로 확인할 수 있는 인증서 체인이 없는 모든 연결도 빈 문 목록이 됩니다.

다음은 웹사이트에 있는 설명 목록의 예입니다. http://example.digitalassetlinks.org/.well-known/assetlinks.json

Android 앱 문 목록

Android 앱에서 명령문 목록은 웹사이트 명령문 파일과 동일한 구문을 갖는 JSON 스니펫이지만, strings.xml 파일에 삽입되고 다음 그림과 같이 매니페스트에서 참조됩니다.

AndroidManifest.xml:

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

res/values/strings.xml의 경우:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

다음은 앱과의 위치 공유를 지원하는 Android 앱의 res/values/strings.xml 스니펫 예입니다 (현재 지원되지 않는 Android 기능입니다).

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

대상 일치

모든 문은 타겟에 관한 것입니다. 명령문을 사용할 때는 명령문에서 대상과 실제 항목을 일치시켜야 합니다. 명세서 타겟이 항목과 일치하면 문이 적용됩니다. 다음은 타겟이 지정된 항목과 일치하는지 확인하기 위한 규칙입니다.

웹사이트 타겟

웹사이트의 경우 사이트 스키마, 호스트, 포트가 정확하게 일치해야 합니다. HTTP와 HTTPS의 기본 포트 (각각 80 및 443)는 암시적으로 가정됩니다. 명령문 타겟이 http://www.example.com:80을 나타내면 http://www.example.com 웹사이트는 일치로 간주됩니다.

다음 명령문 타겟이 주어짐

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

다음 URI가 일치 합니다.

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

다음 URL은 일치하지 않습니다.

  • http://www.google.com/ (잘못된 스키마)
  • https://google.com/ (호스트 이름이 일치하지 않음)
  • https://www.google.com:444/ (포트가 일치하지 않음)

앱 타겟

앱의 경우, 타겟의 인증서 해시 및 패키지 이름이 애플리케이션과 정확히 일치해야 합니다.