App Link คือ Deep Link ที่ใช้สคีม HTTP หรือ HTTPS และได้รับการยืนยันจาก Android ว่าเชื่อมโยงกับเว็บไซต์ของคุณ หากต้องการลงทะเบียนเพื่อจัดการ App Link ให้ทำตามขั้นตอนต่อไปนี้
- เพิ่มตัวกรอง Intent อย่างน้อย 1 รายการลงในไฟล์ Manifest ของแอปที่ระบุโดเมนหรือ URL ของเว็บไซต์
- เพิ่ม
autoVerify="true"attribute
ลงในองค์ประกอบตัวกรอง Intent ซึ่งจะเป็นการส่งสัญญาณให้ระบบพยายามยืนยันโดเมนของสคีมาและโฮสต์กับassetlinks.json
การกำหนดค่าของเว็บไซต์ - ประกาศการเชื่อมโยงเว็บไซต์
ต่อไปนี้เป็นตัวอย่างการประกาศ App Link ที่มีสคีมและโฮสต์ รวมถึง autoVerify="true
":
<activity
android:name=".MainActivity"
android:exported="true"
...>
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<!-- Do not include other schemes, as this will prevent verification. -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="www.example.com" />
<data android:host="*.example.com" />
</intent-filter>
</activity>
ประเด็นสำคัญเกี่ยวกับโค้ด
- AutoVerify: ต้องระบุแอตทริบิวต์
android:autoVerify="true
" สำหรับ App Links ซึ่งจะส่งสัญญาณไปยังระบบว่าควรพยายามยืนยัน การเชื่อมโยงระหว่างแอปกับสคีมาและโดเมนที่ระบุในแท็ก<data>
เราขอแนะนำให้เพิ่มautoVerify="true
" ลงใน Intent filter ทุกรายการที่คุณต้องการให้ยืนยันได้ - องค์ประกอบข้อมูล: ตัวกรอง Intent ของ App Links แต่ละรายการต้องมีองค์ประกอบ
<data>
อย่างน้อย 1 รายการที่ระบุรูปแบบ Scheme และโฮสต์ที่ตรงกับโดเมนเว็บไซต์ที่ยืนยันได้ - รูปแบบ: ตัวกรอง Intent ต้องมีองค์ประกอบ
<data>
สำหรับทั้งรูปแบบhttp
และhttps
โฮสต์: คุณเลือกเพิ่มองค์ประกอบ
<data>
เพื่อให้ตรงกับโฮสต์อย่างน้อย 1 รายการได้ ใช้ไวลด์การ์ด (*
) เพื่อจับคู่โดเมนย่อยหลายรายการ (เช่น*.example.com
) ระบบจะพยายามยืนยันแต่ละโฮสต์กับไฟล์ assetlinks.json ในเว็บไซต์ โปรดทราบว่าการกำหนดเส้นทางระดับเส้นทางควร จัดการโดยไฟล์ assetlinks.json (ดูส่วนแนวทางปฏิบัติแนะนำด้านล่าง)โฮสต์หลายราย: หากคุณประกาศโดเมนโฮสต์หลายรายการ ระบบ (ใน Android 12 ขึ้นไป) จะพยายามยืนยันแต่ละโดเมน หากมีการยืนยันโฮสต์ แอปจะกลายเป็นตัวแฮนเดิลเริ่มต้นสำหรับลิงก์จากโฮสต์ที่ยืนยันแล้ว ใน Android 11 และเวอร์ชันที่ต่ำกว่า การยืนยันจะล้มเหลวหากยืนยันโฮสต์ไม่ได้แม้แต่โฮสต์เดียว
ตัวกรอง Intent หลายรายการ: คุณควรสร้างตัวกรองแยกต่างหากเมื่อต้องการประกาศ URL ที่ไม่ซ้ำกัน (เช่น ชุดค่าผสมที่เฉพาะเจาะจงของสคีมาและโฮสต์) เนื่องจากระบบจะผสานองค์ประกอบ
<data>
หลายรายการในตัวกรอง Intent เดียวกันเข้าด้วยกันเพื่อพิจารณาการเปลี่ยนแปลงทั้งหมดของแอตทริบิวต์ที่รวมกัน
ข้อควรพิจารณาสำหรับกฎตัวกรองไฟล์ Manifest
หากคุณกำลังตั้งค่าตัวกรองเพื่อใช้กับ App Link แบบไดนามิกใน Android 15 ขึ้นไป โปรดทราบว่ากฎแบบไดนามิกที่ประกาศไว้ในไฟล์ assetlinks.json ฝั่งเซิร์ฟเวอร์จะขยายขอบเขตของกฎ URL ที่คุณประกาศแบบคงที่ในไฟล์ Manifest ของแอปไม่ได้
ด้วยเหตุนี้ เราจึงขอแนะนำให้ใช้วิธีต่อไปนี้
- ในไฟล์ Manifest ของแอป ให้ตั้งค่าขอบเขตที่กว้างที่สุดเท่าที่จะเป็นไปได้ เช่น โดยการประกาศ รูปแบบและโดเมนเท่านั้น
- ใช้กฎ assetlinks.json ฝั่งเซิร์ฟเวอร์เพื่อปรับแต่งเพิ่มเติม เช่น การกำหนดเส้นทางระดับเส้นทาง
การกำหนดค่าที่เหมาะสมนี้จะช่วยให้คุณเพิ่มเส้นทาง App Links ใหม่แบบไดนามิกในไฟล์ assetlinks.json
ได้ตามต้องการ โดยมั่นใจได้ว่าเส้นทางเหล่านั้นจะอยู่ในขอบเขตกว้างที่คุณตั้งค่าไว้ใน Manifest ของแอป
รองรับ App Link สำหรับโฮสต์หลายราย
ระบบต้องยืนยันโฮสต์ที่ระบุในองค์ประกอบข้อมูลของตัวกรอง Intent ของ URL ของแอปกับไฟล์ Digital Asset Links ที่โฮสต์ในโดเมนเว็บที่เกี่ยวข้องในตัวกรอง Intent นั้นได้ หากการยืนยันไม่สำเร็จ ระบบจะกลับไปใช้ลักษณะการทำงานมาตรฐานเพื่อแก้ไข Intent ตามที่อธิบายไว้ในสร้าง Deep Link ไปยังเนื้อหาแอป อย่างไรก็ตาม แอปจะยังคง ได้รับการยืนยันเป็นตัวแฮนเดิลเริ่มต้นสำหรับรูปแบบ URL ใดก็ตามที่กำหนดไว้ใน ตัวกรอง Intent อื่นๆ ของแอป
ตัวอย่างเช่น แอปที่มีตัวกรอง Intent ต่อไปนี้จะผ่านการยืนยัน
เฉพาะสำหรับ https://www.example.com
หากพบไฟล์ assetlinks.json
ที่
https://www.example.com/.well-known/assetlinks.json
แต่ไม่พบที่
https://www.example.net/.well-known/assetlinks.json
<application>
<activity android:name=”MainActivity”>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="www.example.com" />
</intent-filter>
</activity>
<activity android:name="SecondActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="www.example.net" />
</intent-filter>
</activity>
</application>
รองรับการลิงก์แอปสำหรับโดเมนย่อยหลายโดเมน
โปรโตคอลลิงก์เนื้อหาดิจิทัล (Digital Asset Links) จะถือว่าโดเมนย่อยในตัวกรอง Intent เป็นโฮสต์ที่ไม่ซ้ำกันและแยกกัน ดังนั้นหากตัวกรองความตั้งใจแสดงโฮสต์หลายรายการที่มี
โดเมนย่อยต่างกัน คุณต้องเผยแพร่ assetlinks.json
ที่ถูกต้องในแต่ละโดเมน
ตัวอย่างเช่น ตัวกรอง Intent ต่อไปนี้มี www.example.com
และ mobile.example.com
เป็นโฮสต์ URL ของ Intent ที่ยอมรับ ดังนั้นจึงต้องเผยแพร่ assetlinks.json
ที่ถูกต้อง
ทั้งที่ https://www.example.com/.well-known/assetlinks.json
และ https://mobile.example.com/.well-known/assetlinks.json
<application>
<activity android:name="MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:host="mobile.example.com" />
</intent-filter>
</activity>
</application>
หรือหากประกาศชื่อโฮสต์ด้วยไวลด์การ์ด (เช่น
*.example.com
) คุณต้องเผยแพร่ไฟล์ assetlinks.json
ที่ชื่อโฮสต์ระดับรูท (example.com
) เช่น แอปที่มีตัวกรอง Intent ต่อไปนี้
จะผ่านการยืนยันสำหรับชื่อย่อยของ example.com
(เช่น
foo.example.com
) ตราบใดที่เผยแพร่ไฟล์ assetlinks.json
ที่
https://example.com/.well-known/assetlinks.json
<application>
<activity android:name="MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="*.example.com" />
</intent-filter>
</activity>
</application>
ตรวจสอบว่ามีแอปหลายแอปที่เชื่อมโยงกับโดเมนเดียวกันหรือไม่
หากคุณเผยแพร่แอปหลายแอปที่เชื่อมโยงกับโดเมนเดียวกัน แอปแต่ละแอปจะ ได้รับการยืนยันสำเร็จ อย่างไรก็ตาม หากแอปสามารถระบุโฮสต์และเส้นทางของโดเมนเดียวกัน ได้ เช่น ในกรณีของแอปเวอร์ชัน Lite และเวอร์ชันเต็ม จะมีเพียงแอปที่ติดตั้งล่าสุดเท่านั้นที่สามารถระบุ Web Intent สำหรับโดเมนนั้นได้
ในกรณีเช่นนี้ ให้ตรวจสอบแอปที่อาจขัดแย้งกันในอุปกรณ์ของผู้ใช้
โดยที่คุณมีระดับการมองเห็นแพ็กเกจที่จำเป็น จากนั้นในแอป ให้
แสดงกล่องโต้ตอบตัวเลือกที่กำหนดเองซึ่งมีผลลัพธ์จากการเรียกใช้
queryIntentActivities
ผู้ใช้สามารถเลือกแอปที่ต้องการจาก
รายการแอปที่ตรงกันซึ่งปรากฏในกล่องโต้ตอบ