앱 콘텐츠 딥 링크 만들기

클릭된 링크나 프로그램 요청이 웹 URI 인텐트를 호출하면 Android 시스템이 요청이 성공할 때까지 다음의 각 작업을 순차적으로 시도합니다.

  1. URI를 처리할 수 있는, 사용자가 선호하는 앱(지정되어 있는 경우)을 엽니다.
  2. URI를 처리할 수 있는, 사용 가능한 유일한 앱을 엽니다.
  3. 사용자가 대화상자에서 앱을 선택하도록 합니다.

아래 단계에 따라 콘텐츠 링크를 만들고 테스트합니다. 또한 Android 스튜디오의 App Links Assistant를 사용하여 추가 Android App Links

참고: Android 12 (API 수준 31)부터 웹 인텐트는 앱이 다음에 대해 승인된 경우에만 앱의 활동으로 확인됩니다. 해당 웹 인텐트에 포함된 특정 도메인입니다. 앱이 웹 인텐트는 사용자의 기본 브라우저 앱으로 확인됩니다. 하세요.

수신 링크의 인텐트 필터 추가하기

앱 콘텐츠 링크를 만들려면 매니페스트에 다음 요소와 속성 값을 포함합니다.

<action>
ACTION_VIEW 인텐트 작업을 지정하여 Google 검색에서 인텐트 필터에 도달할 수 있어야 합니다.
<data>
하나 이상의 <data> 추가 태그로, 각 태그는 활동으로 확인되는 URI 형식을 나타냅니다. 최소한 <data> 태그에는 android:scheme 속성의 값을 제공합니다.

속성을 추가하여 활동이 수락하는 URI 유형을 더욱 세분화할 수 있습니다. 대상 예를 들어 비슷한 URI를 허용하는 활동이 여러 개 있을 수 있습니다. 경로 이름을 기준으로 합니다. 이 경우 android:path 속성 또는 pathPattern 또는 pathPrefix 변형을 사용하여 다른 URI 경로에 대해 열어야 하는 활동입니다.

<category>
BROWSABLE 포함 카테고리입니다. 웹에서 인텐트 필터에 액세스할 수 있으려면 필요합니다. 있습니다. 이 카테고리가 없는 경우 브라우저에서 링크를 클릭해도 앱으로 확인되지 않습니다.

DEFAULT 카테고리도 포함합니다. 그러면 앱이 암시적 인텐트에 응답할 수 있습니다. 이것이 없으면 활동을 시작할 수 있습니다. 인텐트가 앱 구성 요소 이름을 지정하는 경우에만 해당됩니다.

다음 XML 스니펫은 인텐트 필터를 지정할 수 있는 방법을 보여줍니다. 매니페스트에 추가해야 합니다 URI “example://gizmos”“http://www.example.com/gizmos”는 둘 다 이 활동으로 확인됩니다.

<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_view_http_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/gizmos" />
        <!-- note that the leading "/" is required for pathPrefix-->
    </intent-filter>
    <intent-filter android:label="@string/filter_view_example_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example"
              android:host="gizmos" />
    </intent-filter>
</activity>

두 인텐트 필터는 <data> 요소만 다릅니다. 동일한 필터에 여러 <data> 요소를 포함할 수 있지만 고유한 광고 유형을 선언하려는 경우 별도의 필터를 만드는 것이 중요합니다. URL (예: schemehost의 특정 조합) 동일한 인텐트 필터의 여러 <data> 요소가 실제로 함께 병합되는 경우 조합된 속성의 모든 변형을 고려합니다. 예를 들어, 다음 사항을 고려해 보세요.

<intent-filter>
  ...
  <data android:scheme="https" android:host="www.example.com" />
  <data android:scheme="app" android:host="open.my.app" />
</intent-filter>

https://www.example.com만 지원하는 것처럼 보일 수도 있습니다. app://open.my.app입니다. 그러나 실제로는 이 두 가지 외에 다음 기능도 지원합니다. app://www.example.comhttps://open.my.app

주의: 여러 활동에 동일하게 확인되는 인텐트 필터가 포함된 경우 인증된 Android App Links를 확인하면 어떤 활동이 링크를 처리합니다.

활동 콘텐츠의 URI가 포함된 인텐트 필터를 앱에 추가한 후 매니페스트를 사용하면 Android는 모든 Intent를 일치하는 URI가 있는 API를 호출합니다.

인텐트 필터 정의에 관한 자세한 내용은 다른 앱이 내 활동을 시작하도록 허용

수신되는 인텐트에서 데이터 읽기

시스템이 인텐트 필터를 통해 활동을 시작하면 다음과 같은 작업을 할 수 있습니다. Intent에서 제공하는 데이터를 사용하여 렌더링해야 할 대상을 결정합니다. 전화걸기 getData()getAction() 메서드를 사용하여 데이터를 검색하고 수신 Intent와 관련된 작업입니다. 다음과 같은 작업을 할 수 있습니다. 언제든지 이러한 메서드를 호출할 수 있지만, 일반적으로 다음과 같은 초기 콜백 과정에서 이를 수행해야 합니다. onCreate() 또는 onStart()입니다.

다음은 Intent:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

    val action: String? = intent?.action
    val data: Uri? = intent?.data
}

자바

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();
}

사용자의 경험을 향상하려면 다음 권장사항을 따르세요.

  • 딥 링크는 사용자를 콘텐츠로 바로 연결해 주어야 합니다. 또는 로그인 없이 광고를 게재할 수 있습니다 사용자가 다음 작업을 할 수 있도록 앱 콘텐츠를 볼 수 있게 해 줍니다. 후속 상호작용 시 또는 앱을 열 때 사용자에게 메시지를 표시해도 괜찮습니다. .
  • 다음에 설명된 설계 안내를 따릅니다. '뒤로' 및 '위로' 기능으로 탐색 앱이 사용자의 앱과 일치하는 이후 뒤로 탐색 기능에 대한 딥 링크를 통해 앱에 접근하는 경우를 말합니다

딥 링크 테스트하기

Android 디버그 Activity Manager (am) 도구를 연결하여 인텐트 필터가 제대로 작동하는지 테스트합니다. 딥 링크에 지정한 URI가 올바른 앱 활동으로 확인됩니다. 나 기기나 에뮬레이터에 대해 adb 명령어를 실행할 수 있습니다.

adb를 사용해 인텐트 필터 URI를 테스트하는 일반적인 구문은 다음과 같습니다.

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d <URI> <PACKAGE>

예를 들어 아래 명령어는 지정된 URI와 연결됩니다.

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d "example://gizmos" com.example.android

위에서 설정한 매니페스트 선언과 인텐트 핸들러가 앱 간의 연결을 정의합니다. 수신 링크로 해야 할 일에 대해 알아보겠습니다. 하지만 시스템이 앱을 URI 집합의 기본 핸들러로 취급하도록 하려면 시스템이 이 연결을 확인하도록 요청합니다. 다음 강의에서는 확인해야 합니다.

인텐트와 앱 링크를 자세히 알아보려면 다음 리소스를 참고하세요.