รองรับ Deep Link

ตั้งแต่เวอร์ชัน 1.2.0 เป็นต้นไป Navigation 3 รองรับการทำ Deep Link ไปยังปลายทางในแอปโดยใช้คลาส DeepLinkRequest และ DeepLinkMatcher

หากต้องการรองรับ Deep Link ในแอป ให้ทำตามขั้นตอนต่อไปนี้

  1. กำหนดตัวกรอง Intent ใน AndroidManifest.xml เพื่อระบุ URI ที่แอปของคุณจัดการได้
  2. สร้างอินสแตนซ์ DeepLinkMatcher รายการเพื่อแมปคำขอขาเข้ากับคีย์การนำทาง
  3. จับคู่คำขอที่เข้ามาในเมธอด onCreate หรือ onNewIntent ของกิจกรรม และอัปเดต Back Stack ตามความเหมาะสม

สร้าง DeepLinkRequest

DeepLinkRequest แสดงถึง Deep Link ขาเข้า ซึ่งประกอบด้วย DeepLinkUri และ RequestExtras (ไม่บังคับ) ที่มีข้อมูลเพิ่มเติม เช่น การดำเนินการตาม Intent หรือประเภท MIME

ระบุข้อมูลเพิ่มเติม DeepLinkRequest รายการ

หากต้องการจัดเก็บข้อมูลเพิ่มเติมที่เกี่ยวข้องกับ Deep Link ให้ใช้คลาส RequestExtras ไลบรารีมีอินเทอร์เฟซ RequestExtrasKey และ DSL requestExtras เพื่อให้การกำหนดและสร้างอินสแตนซ์ของข้อมูลเพิ่มเติมมีความปลอดภัยในการกำหนดประเภท

นอกจากนี้ ไลบรารียังมีคีย์เพิ่มเติม 2 รายการและตัวช่วยที่เกี่ยวข้อง ดังนี้

  • MimeTypeExtrasKey: ใช้เพื่อจัดเก็บประเภท MIME String
  • ActionExtrasKey (Android เท่านั้น): ใช้เพื่อจัดเก็บการดำเนินการของ Intent String

หากต้องการกำหนดข้อมูลเพิ่มเติมที่กำหนดเอง ให้ใช้อินเทอร์เฟซ RequestExtrasKey กับประเภททั่วไปที่พิมพ์

นอกจากนี้ คุณยังใช้ emptyRequestExtras() เพื่อสร้างอินสแตนซ์ที่ว่างเปล่า หรือรวมส่วนเสริมโดยใช้โอเปอเรเตอร์ + (plus) และ - (minus) ได้ด้วย

สร้าง DeepLinkRequest จาก Intent

ใน Android คุณสามารถสร้าง DeepLinkRequest ได้โดยตรงจาก Intent เมื่อสร้างด้วยวิธีนี้ DeepLinkRequest จะมีโครงสร้างดังนี้

  • ระบบจะคัดลอก uri จากช่อง data ของ Intent
  • หากไม่เป็นค่า Null ระบบจะตั้งค่าประเภท MIME และส่วนเสริมของการดำเนินการจากช่อง Intent ที่เกี่ยวข้อง
  • intent.extras ทั้งหมดที่มีค่าที่ไม่ใช่ Null จะบันทึกเป็น SavedState ใน DeepLinkRequest.IntentExtrasKey
  • ระบบจะเพิ่มข้อมูลเพิ่มเติมที่ระบุโดยใช้พารามิเตอร์ extras

DeepLinkMatcher จะแมปอินสแตนซ์ DeepLinkRequest ขาเข้ากับคีย์การนำทางที่เพิ่มลงใน Back Stack ของแอปได้ Navigation 3 มี Matcher ในตัว 3 รายการ ได้แก่ UriDeepLinkMatcher สำหรับการจับคู่ URI ตามรูปแบบ, StaticKeyDeepLinkMatcher สำหรับลิงก์พื้นฐาน และ BackStackMatcher สำหรับการสร้าง Back Stack สังเคราะห์ นอกจากนี้ ไลบรารียังรองรับตัวจับคู่ที่กำหนดเองสำหรับกรณีการใช้งานที่ตัวจับคู่ในตัวไม่ครอบคลุม

ดูข้อมูลเพิ่มเติมได้ที่สร้าง DeepLinkMatchers

เพิ่มตัวกรอง Intent

หากต้องการเปิดใช้ Deep Link เพื่อเริ่มกิจกรรม คุณต้องกำหนดองค์ประกอบ <intent-filter> ที่ตรงกันใน AndroidManifest.xml ของแอป ดูข้อมูลเพิ่มเติมได้ที่เพิ่มตัวกรอง Intent สำหรับลิงก์ขาเข้า

จับคู่คำขอที่เข้ามา

หลังจากสร้างอินสแตนซ์ DeepLinkMatcher แล้ว คุณจะจับคู่คำขอที่เข้ามาในกิจกรรมได้

หากต้องการจับคู่คำขอที่เข้ามา ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างอินสแตนซ์ DeepLinkMatcher ของคุณ
  2. เปรียบเทียบอินสแตนซ์ DeepLinkMatcher ทั้งหมด ไม่ว่าจะระบุอย่างชัดเจนหรือใช้การเชื่อมโยงหลายรายการ
  3. สร้าง DeepLinkRequest จาก Intent ที่เข้ามา
  4. จับคู่คำขอกับตัวจับคู่ทั้งหมดและค้นหารายการที่ตรงกันที่สุด
  5. สร้าง Back Stack จากผลการจับคู่