รองรับ 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: ใช้เพื่อจัดเก็บ String ประเภท MIME
  • ActionExtrasKey (Android เท่านั้น): ใช้เพื่อจัดเก็บการดำเนินการของ Intent's 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 สังเคราะห์ นอกจากนี้ ไลบรารียัง รองรับ Matcher ที่กำหนดเองสำหรับกรณีการใช้งานที่ Matcher ในตัวไม่ครอบคลุม

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

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

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

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

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

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

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