미디어 앱에 딥 링크 통합

이 문서에서는 서드 파티 (3P) 앱 개발자가 AAOS 미디어 앱에 딥 링크를 추가하는 방법을 설명합니다. 미디어 딥 링크를 사용하면 휴대기기에서와 동일한 방식으로 딥 링크를 통해 AAOS 미디어 앱을 열 수 있습니다.

지원되는 버전

지원되는 최신 버전을 확인하려면 최신 빌드 아티팩트를 참고하세요.

  • CarMediaApp.apk
  • TestMediaApp.apk

작동 방식

AAOS에서 딥 링크가 열리면 특정 스키마를 처리하는 미디어 앱이 열립니다. 그러면 미디어 앱이 URL을 디코딩하여 해당 링크의 정보로 미디어 인텐트를 만든 다음 이 인텐트를 사용하여 미디어 화면을 엽니다.

새 인텐트와 새 추가 항목을 지원하는 구현:

  • 서드 파티 개발자가 인텐트를 통해 미디어에 필요한 정보를 전송할 수 있도록 미디어에서 처리할 수 있는 업데이트된 인텐트 형식을 서드 파티 개발자에게 제공합니다.

  • 특정 미디어 항목 또는 검색어를 포함하는 서드 파티 앱의 인텐트를 처리한 후 미디어에서 요청된 정보가 포함된 페이지를 엽니다.

서드 파티 개발자는 앱이 웹 URI 인텐트로 호출될 수 있도록 앱을 업데이트하고 인텐트를 통해 미디어에 필요한 정보를 전송할 책임이 있습니다.

서드 파티 앱 요구사항

TestMediaApp 앱의 TmaTrampolineActivity가 예로 제공됩니다.

1단계

개발자는 TestMediaAppTmaTrampolineActivity와 유사한 활동이 있어야 합니다. 딥 링크를 사용하려면 이 활동에 매니페스트에 인텐트 필터가 있어야 합니다. 이 인텐트 필터에는 수신 링크의 인텐트 필터 추가에 설명된 대로 처리할 모든 URL이 포함되어야 합니다.

인텐트 필터에는 휴대전화 버전 앱에서 딥 링크가 여러 플랫폼에서 작동하도록 하는 데 사용하는 스키마와 호스트를 포함하는 것이 좋습니다.

<activity android:name=".automotive.TmaTrampolineActivity"
                  android:exported="true">
            <intent-filter android:label="TmaTrampolineActivity_label">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="app"
                      android:host="com.android.car.media.testmediaapp"/>
            </intent-filter>
        </activity>

2단계

이 활동에서 Media 앱은 링크에서 정보를 가져와 Media에 대한 인텐트를 만듭니다.

Media는 두 가지 함수를 지원합니다. 첫 번째 함수는 특정 미디어 항목이 포함된 미디어 항목을 열고 두 번째 함수는 검색어의 결과를 표시합니다. 미디어 항목 ID 또는 검색어 문자열이 인텐트 extra에 포함되어야 합니다.

인텐트 정보

이 기능을 사용하려면 개발자가 인텐트 작업 ACTION_MEDIA_TEMPLATE_V2를 지원하는 최신 버전의 Media를 설치해야 합니다. 인텐트 작업과 다음 인텐트 추가 항목은 MediaIntentExtras.java 클래스에 포함되어 있습니다. 이러한 데이터는 인텐트에 추가할 수 있습니다.

추가 이름 설명
EXTRA_KEY_MEDIA_COMPONENT componentName의 문자열 사용자가 미디어를 시작하려는 MediaBrowserService를 지정하기 위해 ACTION_MEDIA_TEMPLATE_V2와 함께 문자열 추가 필드로 사용되는 키입니다. 지정하지 않으면 활성 미디어 소스가 열립니다.
EXTRA_KEY_MEDIA_ID 미디어 ID ACTION_MEDIA_TEMPLATE_V2와 함께 문자열 추가 필드로 사용되는 키로, 탐색 뷰에 표시해야 하는 미디어 항목을 지정합니다. MediaBrowserServiceCompat API에서 사용된 ID와 일치해야 합니다.
EXTRA_KEY_SEARCH_QUERY 검색어 ACTION_MEDIA_TEMPLATE_V2와 함께 문자열 추가 필드로 사용되어 현재 MediaBrowserService 또는 EXTRA_KEY_MEDIA_COMPONENT로 지정된 MediaBrowserService에 전송할 검색어를 지정하는 키입니다.
EXTRA_KEY_SEARCH_ACTION

정수:

  • 0: EXTRA_VALUE_NO_SEARCH_ACTION
  • 1: EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH
ACTION_MEDIA_TEMPLATE_V2와 함께 int 추가 필드로 사용되어 검색 쿼리가 로드된 후 미디어가 실행할 작업을 지정합니다.

값은 EXTRA_VALUE_NO_SEARCH_ACTION 또는 EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH 중 하나입니다. 이 추가 항목은 EXTRA_KEY_SEARCH_QUERY와 함께만 사용해야 합니다.

이 추가 항목을 지정하지 않으면 검색 결과가 로드된 후 추가 작업이 실행되지 않습니다.

특수한 케이스

여러 개의 추가 항목이 인텐트에 함께 추가되는 경우(예: 이 인텐트에 EXTRA_KEY_MEDIA_IDEXTRA_KEY_SEARCH_QUERY가 모두 포함됨) 현재 구현은 미디어 ID를 먼저 처리하고 미디어 ID가 비어 있는 경우에만 미디어가 검색 쿼리를 실행합니다.

테스트

서드 파티 미디어 앱 통합이 완료되면 adb 명령어를 사용하여 딥 링크를 전송합니다. 원하는 정보가 포함된 미디어가 열립니다. 예를 들어 TestMediaApp의 경우 다음과 같은 명령어를 사용합니다.

adb shell am start -W -a android.intent.action.VIEW -d "https://www.testmediaapp.com/path?search=normal\&searchAction=1"