미디어 앱에 딥 링크 통합

이 문서에서는 서드 파티 (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단계

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

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

인텐트 정보

이 기능을 사용하려면 개발자가 인텐트 작업 ACTION_MEDIA_TEMPLATE_V2를 지원하는 최신 버전의 미디어를 설치해야 합니다. 인텐트 작업과 다음 인텐트 추가 기능은 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로 지정된 서비스에 전송할 검색어를 지정하는 키입니다.
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"