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

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

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

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

  • CarMediaApp.apk
  • TestMediaApp.apk

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

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

การใช้งานเพื่อรองรับ Intent ใหม่และข้อมูลเพิ่มเติมใหม่

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

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

นักพัฒนาแอปบุคคลที่สามมีหน้าที่รับผิดชอบในการอัปเดตแอปเพื่อให้แอปเรียกใช้ได้โดย 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 ไปยังสื่อ

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

ข้อมูล Intent

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

ชื่อเพิ่มเติม ค่า คำอธิบาย
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"