시작하기

개요

디지털 애셋 링크 프로토콜과 API를 사용하면 앱 또는 웹사이트에서 다른 앱 또는 웹사이트에 관해 확인 가능한 공개 을 만들 수 있습니다. 예를 들어 웹사이트에서 특정 Android 앱과 연결되었다고 선언하거나 사용자 인증 정보를 다른 웹사이트와 공유한다고 선언할 수 있습니다.

다음은 디지털 애셋 링크의 몇 가지 용도입니다.

  • 웹사이트 A는 앱이 설치된 경우 휴대기기의 지정된 앱에서 사이트로 연결되는 링크를 열어야 한다고 선언합니다.
  • 웹사이트 A는 Chrome 사용자 인증 정보를 웹사이트 B와 공유할 수 있다고 선언하므로 사용자가 웹사이트 A에 로그인되어 있다면 웹사이트 B에 로그인할 필요가 없습니다.
  • 앱 A가 위치 B와 같은 기기 설정을 웹사이트 B와 공유할 수 있다고 선언합니다.

핵심 용어

  • 주 구성원: 주 구성원이 표현을 사용하는 앱 또는 웹사이트입니다. 디지털 애셋 링크에서 주 구성원은 항상 명세서 목록을 호스팅하는 앱 또는 웹사이트를 의미합니다.
  • 명령문 목록: 문은 하나 이상의 문이 포함된 문 목록에 포함됩니다. 문 목록은 일반 텍스트이며 공개적으로 액세스할 수 있으며, 주 구성원이 제어하고 스푸핑이나 조작이 어려운 위치에 있습니다. 독립형 파일일 수도 있고, 다른 더 큰 항목의 섹션일 수도 있습니다. 예를 들어 웹사이트에서는 전체 파일이고, Android 앱에서는 앱 매니페스트의 한 섹션입니다. 모든 사용자는 본인만의 비공개 방법을 사용하여 명세서를 확인하고 확인할 수 있습니다. 자세한 내용은 명세서 목록 문서를 참고하세요.
  • 문: 명령문은 긴밀하게 구성된 JSON 구조이며, 관계 (예: 사용자 인증 정보 공유 사용 설정)와 대상 (관계가 적용되는 웹사이트 또는 앱)으로 구성됩니다. 따라서 각 문은 문장으로서 principaltarget에 대한 relation을 나타냅니다.
  • 명세서 소비자: 문 소비자는 주 구성원에 문 목록을 요청하고, 주어진 주 구성원에 대한 문이 있는지 확인하고, 존재하는 경우 지정된 작업을 수행할 수 있습니다. 자세한 내용은 문서를 요약한 내용을 참조하세요.

빠른 사용 예

다음은 www.example.com 웹사이트에서 디지털 애셋 링크를 사용하여 해당 사이트의 URL에 대한 링크를 브라우저가 아닌 지정된 앱에서 열도록 지정하는 방법을 보여주는 매우 간단한 예입니다.

  1. www.example.com 웹사이트는 https://www.example.com/.well-known/assetlinks.json에 명세서 목록을 게시합니다. 사이트의 명세서 목록의 공식 이름 및 위치입니다. 다른 위치 또는 다른 이름의 명세서 목록은 이 사이트에서 사용할 수 없습니다. 이 예시에서 문 목록은 하나의 문으로 구성되며 Android 앱에 사이트의 링크를 열 수 있는 권한을 부여합니다.
    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target" : { "namespace": "android_app", "package_name": "com.example.app",
                   "sha256_cert_fingerprints": ["hash_of_app_certificate"] }
    }]
    문 목록은 [ ] 표시 구문의 배열 배열을 지원하지만 예시 파일에는 문이 1개만 포함됩니다. sha256_cert_fingerprints는 앱 서명 인증서의 SHA256 디지털 지문입니다. 자세한 내용은 Android App Links 문서를 참조하세요.
  2. 위 문에 나열된 Android 앱에는 처리하려는 URL의 스키마, 호스트, 경로 패턴을 지정하는 인텐트 필터가 있습니다(이 경우 https://www.example.com). 인텐트 필터에는 Android M에 새로 추가된 특수 속성 android:autoVerify가 포함되어 있습니다. 이는 Android가 앱을 설치할 때 인텐트 필터에 설명된 웹사이트의 문을 확인해야 함을 나타냅니다.
  3. 사용자가 앱을 설치합니다. Android는 autoVerify 속성이 포함된 인텐트 필터를 보고 지정된 사이트에 문 목록이 있는지 확인합니다. 있는 경우 Android에서는 파일에 링크 처리를 허용하는 문이 포함되어 있는지 확인하고 인증서 해시를 통해 문에 앱을 확인합니다. 모든 항목이 체크아웃되면 Android는 https://www.example.com 인텐트를 example.com 앱으로 전달합니다.
  4. 사용자가 기기에서 https://www.example.com/puppies로 연결되는 링크를 클릭합니다. 이 링크는 브라우저나 Google Search Appliance 추천 등 어디에나 있을 수 있습니다. Android는 인텐트를 example.com 앱으로 전달합니다.
  5. example.com 앱이 인텐트를 수신하고 이를 처리하기로 결정하여 앱에서 강아지 페이지를 엽니다. 어떤 이유로든 앱이 링크 처리를 거부했거나 앱이 기기에 없다면 링크가 인텐트 패턴과 일치하는 다음 기본 인텐트 핸들러 (일반적으로 브라우저)로 전송되었을 것입니다.

중요 고려사항 및 제한사항:

  • 프로토콜은 해당 문을 만드는 주 구성원을 인증하지 않지만 주 구성원과 밀접하게 관련된 특정 위치에 주 구성원이 관리합니다.
  • 프로토콜은 문 대상을 인증하지 않지만 호출자가 대상을 인증하는 수단을 제공합니다. 예를 들어 문은 인증서 해시 및 패키지 이름으로 모바일 앱 대상을 식별합니다.
  • 이 프로토콜은 기본적으로 문 작업을 실행하지 않습니다. 오히려 문을 노출하는 기능을 사용합니다. 이를 통해 소비 애플리케이션이 유효성을 검사한 후 조치 여부 및 방법을 결정해야 합니다. Android M은 기본적으로 이러한 단계를 실행합니다. 예를 들어 웹사이트가 링크 처리를 특정 앱에 위임하면 Android는 문을 확인 및 확인한 다음 타겟 앱을 확인하고 앱에 특정 링크를 처리하는 옵션을 제공합니다.
  • 이 프로토콜은 서드 파티에 관한 진술을 사용 설정하지 않습니다. 즉, 웹사이트 A는 웹사이트 B에 대한 진술을 할 수 있지만 웹사이트 A는 웹사이트 B와 웹사이트 C의 관계에 대한 진술을 할 수 없습니다. 하지만 웹사이트 B가 웹사이트 A를 신뢰한다면 웹사이트 A에 웹사이트 C에 대한 권한을 부여하는 선언문을 확인하고 이를 구현하기로 결정할 수 있습니다.

다음 단계

  1. 사용 사례에 관한 명시적인 문서가 있는지 확인합니다.
  2. 명세서 만들기에 대해 알아보기