คู่มือนี้จะอธิบายปัญหาที่พบได้ทั่วไปและวิธีแก้ปัญหา นอกจากนี้ คุณยังใช้เครื่องมือแก้ปัญหาในหน้า Deep Link ของ Play Console หรือผู้ช่วย App Link ของ Android Studio ได้ด้วย ดูข้อมูลเพิ่มเติมได้ที่เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ App Links
App Link เปิดในเบราว์เซอร์แทนที่จะเปิดในแอป
- ปัญหา: คุณคลิกลิงก์ที่ควรเปิดแอป แต่ลิงก์กลับเปิดในเว็บเบราว์เซอร์หรือแสดงกล่องโต้ตอบเพื่อแก้ความกำกวม
- วิธีแก้ปัญหา
- ตรวจสอบ
assetlinks.json: ตรวจสอบว่าไฟล์เป็น JSON ที่ถูกต้อง เข้าถึงได้ที่https://<your-domain>/.well-known/assetlinks.jsonและแสดงผ่าน HTTPS โดยไม่มีการเปลี่ยนเส้นทาง ใช้เครื่องมือตรวจสอบออนไลน์ - ยืนยันลายนิ้วมือ SHA-256: ตรวจสอบอีกครั้งว่า
sha256_cert_fingerprintsในassetlinks.jsonตรงกับลายนิ้วมือของคีย์ Signing สำหรับรุ่นของแอปทุกประการ (ใช้ลายนิ้วมือจาก 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 และกฎ 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.comexample.comถึงwww.example.com
ลักษณะการทำงานนี้จะช่วยปกป้องความปลอดภัยของแอป
- ความทนทานของเซิร์ฟเวอร์
ตรวจสอบว่าแอปไคลเอ็นต์เชื่อมต่อกับเซิร์ฟเวอร์ได้หรือไม่
- ลิงก์ที่ยืนยันไม่ได้
คุณอาจเพิ่มลิงก์ที่ยืนยันไม่ได้โดยเจตนาเพื่อวัตถุประสงค์ในการทดสอบ โปรดทราบว่าใน Android 11 และต่ำกว่า ลิงก์เหล่านี้จะทำให้ระบบไม่ยืนยัน Android App Link ทั้งหมดสำหรับแอปของคุณ
- ลายเซ็นใน assetlinks.json ไม่ถูกต้อง
ตรวจสอบว่าลายเซ็นถูกต้องและตรงกับลายเซ็นที่ใช้ในการรับรองแอป ข้อผิดพลาดที่พบบ่อยมีดังนี้
- การรับรองแอปด้วยใบรับรองสำหรับการแก้ไขข้อบกพร่องและมีเฉพาะลายเซ็นสำหรับการเผยแพร่ใน
assetlinks.json - มีลายเซ็นตัวพิมพ์เล็กใน
assetlinks.jsonลายเซ็นควรเป็นตัวพิมพ์ใหญ่ - หากคุณใช้ Play App Signing โปรดตรวจสอบว่าคุณใช้ลายเซ็นที่ Google ใช้ในการรับรองแต่ละรุ่นของคุณ คุณสามารถยืนยันรายละเอียดเหล่านี้ รวมถึงข้อมูลโค้ด JSON ที่สมบูรณ์ได้โดยทำตามวิธีการเกี่ยวกับการประกาศการเชื่อมโยงเว็บไซต์
- การรับรองแอปด้วยใบรับรองสำหรับการแก้ไขข้อบกพร่องและมีเฉพาะลายเซ็นสำหรับการเผยแพร่ใน
บันทึกรายงานข้อบกพร่อง
สำหรับปัญหาที่ซับซ้อนซึ่งจำลองได้ยาก ให้บันทึกรายงานข้อบกพร่องและวิเคราะห์ ซึ่งจะให้ข้อมูลเชิงลึกที่มีประโยชน์เกี่ยวกับกระบวนการยืนยันตัวตนและข้อผิดพลาดระดับระบบ