ผสานรวม Deep Link กับแอปสื่อ

เอกสารนี้มีจุดมุ่งหมายเพื่ออธิบายวิธีที่นักพัฒนาแอปของบุคคลที่สาม (3P) สามารถเพิ่ม Deep Link ไปยังแอปสื่อใน AAOS Deep Link ของสื่อช่วยให้คุณเปิดแอปสื่อ AAOS ผ่าน Deep Link ได้ในลักษณะเดียวกับบนอุปกรณ์เคลื่อนที่

เวอร์ชันที่รองรับ

หากต้องการดูเวอร์ชันล่าสุดที่รองรับ ให้ดูอาร์ติแฟกต์บิลด์ล่าสุด

  • CarMediaApp.apk
  • TestMediaApp.apk

วิธีการทำงาน

เมื่อเปิด Deep Link ใน AAOS ระบบจะเปิดแอปสื่อที่จัดการ รูปแบบเฉพาะ จากนั้นแอปสื่อจะถอดรหัส URL เพื่อสร้าง Intent ของสื่อ พร้อมข้อมูลในลิงก์นั้น แล้วใช้ Intent ดังกล่าวเพื่อเปิดหน้าจอสื่อ

การใช้งานเพื่อรองรับ Intent ใหม่และส่วนเสริมใหม่มีดังนี้

  • จัดรูปแบบที่อัปเดตของ Intent ที่นักพัฒนาแอปบุคคลที่สามสามารถจัดการได้ เพื่อให้นักพัฒนาแอปส่งข้อมูลที่จำเป็นผ่าน Intent ไปยังสื่อได้

  • จัดการ Intent จากแอปของบุคคลที่สามซึ่งมีรายการสื่อที่เฉพาะเจาะจงหรือคำค้นหา แล้วเปิดหน้าที่มีข้อมูลที่ขอใน Media

นักพัฒนาแอปบุคคลที่สามมีหน้าที่อัปเดตแอปของตนเพื่อให้แอปสามารถ เรียกใช้โดย Intent ของ URI เว็บและส่งข้อมูลที่จำเป็นไปยังสื่อ ผ่าน Intent

ข้อกำหนดสำหรับแอปของบุคคลที่สาม

TmaTrampolineActivity ในแอป TestMediaApp มีไว้เพื่อเป็นตัวอย่าง

ขั้นตอนที่ 1

นักพัฒนาแอปต้องมีกิจกรรมที่คล้ายกับ TmaTrampolineActivity ใน TestMediaApp หากต้องการ Deep Link กิจกรรมนี้ต้องมีตัวกรอง Intent ใน ไฟล์ Manifest ตัวกรอง Intent นี้ควรรวม URL ทั้งหมดที่จะจัดการ ตามที่อธิบายไว้ในเพิ่มตัวกรอง Intent สำหรับลิงก์ขาเข้า

เราขอแนะนำให้ตัวกรอง Intent มีสคีมและโฮสต์ที่แอปเวอร์ชันโทรศัพท์ใช้เพื่อให้มั่นใจว่า Deep Link จะทำงานได้ในทุกแพลตฟอร์ม

<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

ในกิจกรรมนี้ แอปสื่อจะดึงข้อมูลจากลิงก์และ สร้าง Intent ไปยังสื่อ

สื่อรองรับ 2 ฟังก์ชัน ฟังก์ชันแรกคือการเปิดรายการสื่อด้วยรายการสื่อที่เฉพาะเจาะจง และฟังก์ชันที่ 2 คือการแสดงผลลัพธ์ของคำค้นหา ต้องระบุรหัสรายการสื่อหรือสตริงคำค้นหาในส่วนเสริมของ Intent

ข้อมูลความตั้งใจ

หากต้องการใช้ฟีเจอร์นี้ นักพัฒนาแอปต้องติดตั้ง Media เวอร์ชันล่าสุดเพื่อรองรับการดำเนินการ Intent ACTION_MEDIA_TEMPLATE_V2 Intent action และส่วนเสริมของ Intent ต่อไปนี้จะรวมอยู่ในคลาส MediaIntentExtras.java คุณเพิ่มข้อมูลพิเศษเหล่านี้ลงในความตั้งใจได้

ชื่อเพิ่มเติม ค่านิยม คำอธิบาย
EXTRA_KEY_MEDIA_COMPONENT สตริงสำหรับ componentName คีย์ที่ใช้เป็นฟิลด์เสริมสตริงที่มี ACTION_MEDIA_TEMPLATE_V2 เพื่อระบุ MediaBrowserService ที่ผู้ใช้ต้องการเริ่มสื่อ หากไม่ได้ระบุ ระบบจะเปิดแหล่งที่มาของสื่อที่ใช้งานอยู่
EXTRA_KEY_MEDIA_ID รหัสสื่อ คีย์ที่ใช้เป็นฟิลด์พิเศษของสตริงที่มี ACTION_MEDIA_TEMPLATE_V2 ระบุรายการสื่อที่ควร แสดงในมุมมองเรียกดู ต้องตรงกับรหัสที่ใช้ใน MediaBrowserServiceCompat API
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
คีย์ที่ใช้เป็นฟิลด์พิเศษ int ที่มี ACTION_MEDIA_TEMPLATE_V2 เพื่อระบุการดำเนินการสำหรับสื่อที่จะดำเนินการหลังจากโหลดคำค้นหาแล้ว

ค่าจะเป็น EXTRA_VALUE_NO_SEARCH_ACTION หรือ EXTRA_VALUE_PLAY_FIRST_ITEM_FROM_SEARCH ควรใช้ส่วนเพิ่มเติมนี้กับ EXTRA_KEY_SEARCH_QUERY เท่านั้น

หากไม่ได้ระบุค่านี้ ระบบจะไม่ดำเนินการใดๆ เพิ่มเติมหลังจากโหลดผลการค้นหาแล้ว

กรณีพิเศษ

หากมีการเพิ่มส่วนเสริมหลายรายการลงใน Intent พร้อมกัน เช่น มีทั้ง EXTRA_KEY_MEDIA_ID และ EXTRA_KEY_SEARCH_QUERY อยู่ใน Intent นี้ การติดตั้งใช้งานปัจจุบันจะจัดการรหัสสื่อก่อน และเมื่อรหัสสื่อว่างเปล่าเท่านั้น Media จึงจะเรียกใช้คำค้นหา

ทดสอบ

เมื่อผสานรวมแอปสื่อของบุคคลที่สามเสร็จแล้ว ให้ใช้คำสั่ง adb เพื่อส่ง Deep Link สื่อจะเปิดขึ้นพร้อมข้อมูลที่ต้องการ เช่น คำสั่งนี้สำหรับ TestMediaApp

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