แก้ปัญหา App Link

คู่มือนี้อธิบายปัญหาที่พบบ่อยและวิธีแก้ปัญหา นอกจากนี้ คุณยังใช้เครื่องมือแก้ปัญหาในหน้า Deep Link ของ Play Console หรือผู้ช่วย App Link ของ Android Studio ได้ด้วย ดูข้อมูลเพิ่มเติมได้ที่ เครื่องมือสำหรับนักพัฒนาแอป App Link

  • ปัญหา: คุณคลิกลิงก์ที่ควรจะเปิดแอป แต่ลิงก์กลับเปิดในเว็บ เบราว์เซอร์หรือแสดงกล่องโต้ตอบการแยกความกำกวม
  • วิธีแก้ปัญหา:
    • ตรวจสอบ assetlinks.json: ตรวจสอบว่าไฟล์เป็น JSON ที่ถูกต้อง เข้าถึงได้ที่ https://<your-domain>/.well-known/assetlinks.json และแสดงผ่าน HTTPS โดยไม่มีการเปลี่ยนเส้นทาง ใช้โปรแกรมตรวจสอบออนไลน์
    • ยืนยันลายนิ้วมือ SHA-256: ตรวจสอบอีกครั้งว่า sha256_cert_fingerprints ใน assetlinks.json ตรงกับ ลายนิ้วมือของคีย์การลงนามสำหรับการเผยแพร่แอปทุกประการ (ใช้ลายนิ้วมือจาก Play Console หากคุณใช้ Play App Signing) ลายเซ็นควรเป็นตัวพิมพ์ใหญ่
    • ยืนยัน autoVerify: ตรวจสอบว่า <intent-filter> ใน AndroidManifest.xml มี android:autoVerify="true"
    • ตรวจสอบการเปลี่ยนเส้นทางฝั่งเซิร์ฟเวอร์: การเปลี่ยนเส้นทางจาก http เป็น https หรือ จากโดเมนที่ไม่ใช่ www เป็น www อาจทำให้การยืนยันล้มเหลว
    • บังคับให้ยืนยันอีกครั้ง: เรียกใช้คำสั่ง ADB ในคู่มือทดสอบ App Link เพื่อดูผลการยืนยันล่าสุด
    • วินิจฉัยการแก้ปัญหาลิงก์ (Android 17 ขึ้นไป): เรียกใช้ adb shell am start --debug-link -a android.intent.action.VIEW -d "<URL>" เพื่อตรวจสอบแอปที่เข้าข่าย ตัวกรอง Intent ของไฟล์ Manifest และกฎ Dynamic App Link ที่ตรงกับ URL ดูรายละเอียดได้ที่หัวข้อ วินิจฉัยการแก้ปัญหาลิงก์ด้วยแฟล็ก debug-link

กฎแบบไดนามิกใน Android 15 ขึ้นไปไม่อัปเดต

  • ปัญหา: คุณอัปเดตกฎในไฟล์ assetlinks.json แล้ว แต่แอปไม่จัดการลิงก์ใหม่
  • วิธีแก้ปัญหา:
    • บังคับให้ยืนยันอีกครั้ง: วิธีที่น่าเชื่อถือที่สุดในการทดสอบการเปลี่ยนแปลงคือการ บังคับให้ดึงข้อมูลอีกครั้งด้วย adb shell pm verify-app-links --re-verify <your-package-name>
    • ตรวจสอบการพิมพ์ผิด: ตรวจสอบตัวจับคู่รูปแบบในกฎอย่างละเอียด เพื่อหาข้อผิดพลาดทางไวยากรณ์
    • ตรวจสอบกฎตัวกรองไฟล์ Manifest: ตรวจสอบกฎตัวกรอง Intent ในไฟล์ Manifest ของแอปเพื่อให้แน่ใจว่าระบบไม่ได้กรองเส้นทางลิงก์ออก หากระบบกรองลิงก์ออก ให้แก้ไขตัวกรอง Intent ในไฟล์ Manifest ของแอปให้มีข้อจำกัดน้อยลง
    • วินิจฉัยกฎที่ตรงกัน (Android 17 ขึ้นไป): เรียกใช้ adb shell am start --debug-link -a android.intent.action.VIEW -d "<URL>" เพื่อตรวจสอบกฎที่ได้รับการประเมินและดูว่ากฎการยกเว้น (allow = 1) ป้องกันไม่ให้แอปเปิดหรือไม่ ดู หัวข้อวินิจฉัยการแก้ปัญหาลิงก์ด้วยแฟล็ก debug-link

แก้ไขข้อผิดพลาดในการติดตั้งใช้งานที่พบบ่อย

หากยืนยัน Android App Link ไม่ได้ ให้ตรวจสอบข้อผิดพลาดที่พบบ่อยต่อไปนี้ ส่วนนี้ใช้ example.com เป็นชื่อโดเมนตัวยึดตำแหน่ง เมื่อทำการตรวจสอบเหล่านี้ ให้แทนที่ example.com ด้วยชื่อโดเมนจริงของเซิร์ฟเวอร์

ตั้งค่าตัวกรอง Intent ไม่ถูกต้อง
ตรวจสอบว่าคุณได้ใส่ URL ที่แอปไม่ได้เป็นเจ้าของไว้ในองค์ประกอบ <intent-filter> หรือไม่
การกำหนดค่าเซิร์ฟเวอร์ไม่ถูกต้อง

ตรวจสอบการกำหนดค่า JSON ของเซิร์ฟเวอร์ และตรวจสอบว่าค่า SHA ถูกต้อง

นอกจากนี้ ให้ตรวจสอบว่า example.com. (มีจุดต่อท้าย) แสดง เนื้อหาเดียวกันกับ example.com

การเปลี่ยนเส้นทางฝั่งเซิร์ฟเวอร์

ระบบจะไม่ยืนยัน Android App Link ใดๆ สำหรับแอปหากคุณตั้งค่าการเปลี่ยนเส้นทาง เช่น การเปลี่ยนเส้นทางต่อไปนี้

  • http://example.com เป็น https://example.com
  • example.com เป็น www.example.com

ลักษณะการทำงานนี้จะช่วยปกป้องความปลอดภัยของแอป

ความเสถียรของเซิร์ฟเวอร์

ตรวจสอบว่าแอปไคลเอ็นต์เชื่อมต่อกับเซิร์ฟเวอร์ได้หรือไม่

ลิงก์ที่ยืนยันไม่ได้

คุณอาจเพิ่มลิงก์ที่ยืนยันไม่ได้โดยเจตนาเพื่อวัตถุประสงค์ในการทดสอบ โปรดทราบว่าใน Android 11 และต่ำกว่า ลิงก์เหล่านี้จะทำให้ระบบไม่ยืนยัน Android App Link ทั้งหมด สำหรับแอป

ลายเซ็นใน assetlinks.json ไม่ถูกต้อง

ตรวจสอบว่าลายเซ็นถูกต้องและตรงกับลายเซ็นที่ใช้ลงนามแอป ข้อผิดพลาดที่พบบ่อย ได้แก่

  • การลงนามแอปด้วยใบรับรองสำหรับการแก้ไขข้อบกพร่องและมีเพียงลายเซ็นสำหรับการเผยแพร่ใน assetlinks.json
  • มีลายเซ็นตัวพิมพ์เล็กใน assetlinks.json ลายเซ็นควรเป็นตัวพิมพ์ใหญ่
  • หากใช้ Play App Signing ให้ตรวจสอบว่าคุณใช้ลายเซ็นที่ Google ใช้ลงนามการเผยแพร่แต่ละครั้ง คุณสามารถยืนยันรายละเอียดเหล่านี้ รวมถึงข้อมูลโค้ด JSON ที่สมบูรณ์ได้โดยทำตามวิธีการ เกี่ยวกับ การประกาศการเชื่อมโยงเว็บไซต์

บันทึกรายงานข้อบกพร่อง

สำหรับปัญหาที่ซับซ้อนซึ่งจำลองได้ยาก ให้บันทึกรายงานข้อบกพร่องและวิเคราะห์รายงาน ซึ่งจะให้ข้อมูลเชิงลึกที่มีคุณค่าเกี่ยวกับกระบวนการยืนยันและข้อผิดพลาดระดับระบบ