blob: 0e23801b5b4352bab10ff998b17fa895bd39d98b [file] [log] [blame]
page.title=앱 링크
page.image=images/cards/card-app-linking_2x.png
page.keywords=applinking, 링크, 인텐트
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2> 문서의 내용</h2>
<ol>
<li><a href="#web-assoc">웹사이트 연관 선언</a></li>
<li><a href="#verfy-links">앱 링크 확인 요청</a></li>
<li><a href="#user-manage">앱 링크 설정 관리</a></li>
</ol>
</div>
</div>
<p>
Android 인텐트 시스템은 유연한 메커니즘이라 앱이 콘텐츠와 요청을 처리할 있습니다.
여러 개의 앱이 자신의 인텐트 필터에서 모두 일치하는 URI 패턴을 선언할 있습니다. 사용자가 기본 시작 처리자가 없는 링크를 클릭하는 경우 플랫폼이 대화창을 표시하여 해당 사용자가 일치하는 인텐트 필터를 선언한 목록에서 선택 있습니다.
</p>
<p>
Android M 개발자 미리 보기에서는 링크에 대한 지원을 도입합니다. 이를 통해 개발자들이 앱을 본인이 소유한 도메인과 연관시켜 기존의 링크 처리를 단계 개선합니다.
개발자가 연관 관계를 생성하면 플랫폼이 특정 링크를 처리하는 사용된 기본 앱을 알아서 판단하여 사용자에게 물어보는 과정을 건너뛸 있습니다.
</p>
<h2 id="web-assoc">웹사이트 연관 선언</h2>
<p>
웹사이트 소유자가 링크를 설정하려면 앱과의 연관 관계를 선언해야 합니다. 사이트 소유자는 앱에 대한 이러한 관계를 선언하는 JSON 파일을 호스팅하는 방식을 씁니다. 일명 {@code statements.json}이라는 파일을 도메인에서 알려진 위치에 선언합니다.
</p>
<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
<p class="note">
<strong>참고:</strong>
M 개발자 미리 보기 기간 중에는 JSON 파일을 http 프로토콜을 통해 확인합니다. 플랫폼이 공식적으로 출시되면 파일을 암호화된 https 프로토콜에서 확인하게 됩니다.
</p>
<p>
JSON 파일은 도메인 아래에서 URL 대한 기본 처리자로 사용되어야 하는 Android 앱을 나타냅니다.
이것이 앱을 식별하는 기반은 다음과 같은 필드입니다.
</p>
<ul>
<li>{@code package_name}: 앱의 매니페스트에 선언된 패키지 이름입니다.</li>
<li>{@code sha256_cert_fingerprints}: 앱의 서명 인증서의 SHA256 지문입니다.
Java keytool 사용하여 지문을 생성하려면 다음과 같은 명령을 사용십시오.
<pre>keytool -list -v -keystore my-release-key.keystore</pre>
</li>
</ul>
<p>
다음 파일 목록은
{@code statements.json} 파일의 콘텐츠와 형식을 예를 들어 나타낸 것입니다.
</p>
<pre>
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "<strong>&lt;package name&gt;</strong>",
"sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
}
}]
</pre>
<h2 id="verfy-links">앱 링크 확인 요청</h2>
<p>
앱은 플랫폼에 자신의 인텐트 필터의 데이터 요소 내에서 호스트 이름으로 정의된 모든 링크를 자동으로 확인해달라고 요청할 있습니다. 이때 비교 대상은 각각의 도메인에서 호스팅된 {@code statements.json} 파일입니다.
링크 확인을 요청하려면 매니페스트에서 원하는 인텐트 필터 각각에 {@code android:autoVerify}
특성을 하나씩 추가하면 됩니다. 다음 매니페스트 코드 조각에 나타낸 내용을 참고하십시오.
</p>
<pre>
&lt;activity ...&gt;
&lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
&lt;action android:name="android.intent.action.VIEW" /&gt;
&lt;category android:name="android.intent.category.DEFAULT" /&gt;
&lt;category android:name="android.intent.category.BROWSABLE" /&gt;
&lt;data android:scheme="http" android:host="www.android.com" /&gt;
&lt;data android:scheme="https" android:host="www.android.com" /&gt;
&lt;/intent-filter&gt;
&lt;/activity&gt;
</pre>
<p>
매니페스트에 {@code android:autoVerify} 특성이 있으면, 플랫폼은 앱이 설치된 시점에 링크를 확인하려 시도합니다.
플랫폼이 링크를 성공적으로 확인하지 못하면 해당 앱은 링크를 처리하기 위한 기본 설정 앱으로 설정되지 않습니다.
다음번에 사용자가 그런 링크 하나를 열면, 플랫폼은 사용자에게 메시지를 표시하는 방식으로 변경합니다.
</p>
<p class="note">
<strong>참고:</strong> 테스트 중에는 확인에 실패하고 나서 거짓 긍정 결과가 나올 가능성이 있지만, 사용자가 앱에 물어보지 않고 지원되는 링크를 열도록 명시적으로 활성화해 놓았고 이때 시스템 설정 앱을 사용한 경우, 대화창이 표시되지 않고 링크는 개발자 본인의 앱으로 이동하지만 이는 순전히 사용자 설정 때문이고 확인이 성공해서가 아닙니다.
</p>
<h2 id="user-manage">앱 링크 설정 관리</h2>
<p>
사용자가 링크 설정을 변경하여 URL 본인이 선호하는 방식으로 처리하도록 있습니다. 링크를 검토하고 관리하려면 <strong>설정 &gt; &gt; 정보 &gt; 기본으로 열기</strong> 아래의 시스템 설정 앱에서 하면 됩니다.
</p>