Đường liên kết trong ứng dụng là đường liên kết sâu sử dụng giao thức HTTP hoặc HTTPS và được Android xác minh là có liên kết với trang web của bạn. Để đăng ký xử lý Đường liên kết đến ứng dụng, hãy làm theo các bước sau:
- Thêm một hoặc nhiều bộ lọc Ý định vào tệp kê khai ứng dụng để chỉ định miền hoặc URL của trang web.
- Thêm
autoVerify="true"attribute
vào các phần tử Bộ lọc ý định. Thao tác này báo hiệu cho hệ thống rằng hệ thống nên cố gắng xác minh lược đồ và(các) miền lưu trữ dựa trên cấu hìnhassetlinks.json
của trang web. - Khai báo mối liên kết với trang web.
Sau đây là ví dụ về một khai báo Đường liên kết đến ứng dụng có các lược đồ và máy chủ lưu trữ cũng như 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>
Các điểm chính về mã
- AutoVerify: Bạn phải có thuộc tính
android:autoVerify="true
" cho Đường liên kết trong ứng dụng. Thuộc tính này báo hiệu cho hệ thống rằng hệ thống nên cố gắng xác minh mối liên kết giữa ứng dụng của bạn và các lược đồ cũng như(các) miền được chỉ định trong thẻ<data>
. Bạn nên thêmautoVerify="true
" vào mọi Bộ lọc ý định mà bạn muốn xác minh. - Phần tử dữ liệu: Mỗi bộ lọc Ý định về đường liên kết đến ứng dụng phải chứa một hoặc nhiều phần tử
<data>
chỉ định các lược đồ và định dạng máy chủ lưu trữ khớp với miền trang web có thể xác minh của bạn. - Lược đồ: Bộ lọc ý định phải bao gồm các phần tử
<data>
cho cả lược đồhttp
vàhttps
. Máy chủ lưu trữ: Bạn có thể tuỳ ý thêm các phần tử
<data>
để so khớp một hoặc nhiều máy chủ lưu trữ. Sử dụng ký tự đại diện (*
) để so khớp nhiều miền con (chẳng hạn như*.example.com
). Hệ thống sẽ cố gắng xác minh từng máy chủ với tệp assetlinks.json trên trang web của bạn. Xin lưu ý rằng mọi hoạt động định tuyến ở cấp đường dẫn đều phải được xử lý bằng tệp assetlinks.json (xem phần các phương pháp hay nhất bên dưới).Nhiều máy chủ: Nếu bạn khai báo nhiều miền lưu trữ, hệ thống (trên Android 12 trở lên) sẽ cố gắng xác minh từng miền. Nếu có bất kỳ máy chủ lưu trữ nào được xác minh, ứng dụng sẽ trở thành trình xử lý mặc định cho các đường liên kết từ máy chủ lưu trữ đã xác minh đó. Trên Android 11 trở xuống, quá trình xác minh sẽ không thành công nếu có ít nhất một máy chủ không xác minh được.
Nhiều bộ lọc ý định: Bạn nên tạo các bộ lọc riêng biệt khi muốn khai báo các URL riêng biệt (chẳng hạn như một tổ hợp cụ thể của lược đồ và máy chủ lưu trữ), vì nhiều phần tử
<data>
trong cùng một bộ lọc ý định sẽ được hợp nhất với nhau để tính đến tất cả các biến thể của các thuộc tính kết hợp.
Những điều cần cân nhắc đối với các quy tắc lọc tệp kê khai
Nếu bạn đang thiết lập bộ lọc để sử dụng với Đường liên kết động trong ứng dụng trên Android 15 trở lên, thì bạn cần lưu ý rằng các quy tắc động được khai báo trong tệp assetlinks.json phía máy chủ không thể mở rộng phạm vi của các quy tắc URL mà bạn khai báo tĩnh trong tệp kê khai ứng dụng.
Vì lý do này, bạn nên sử dụng phương pháp sau:
- Trong tệp kê khai ứng dụng, hãy đặt phạm vi rộng nhất có thể, chẳng hạn như chỉ khai báo lược đồ và miền
- Dựa vào các quy tắc assetlinks.json phía máy chủ để tinh chỉnh thêm, chẳng hạn như định tuyến ở cấp đường dẫn.
Với cấu hình lý tưởng này, bạn sẽ có thể linh hoạt thêm các đường dẫn mới cho Đường liên kết đến ứng dụng trong tệp assetlinks.json
khi cần, biết rằng các đường dẫn đó sẽ nằm trong phạm vi rộng mà bạn đã đặt trong tệp kê khai ứng dụng.
Hỗ trợ Đường liên kết trong ứng dụng cho nhiều máy chủ lưu trữ
Hệ thống phải có khả năng xác minh máy chủ lưu trữ được chỉ định trong các phần tử dữ liệu của bộ lọc ý định URL của ứng dụng dựa trên các tệp Đường liên kết đến tài sản kỹ thuật số được lưu trữ trên các miền web tương ứng trong bộ lọc ý định đó. Nếu quá trình xác minh không thành công, hệ thống sẽ chuyển về hành vi tiêu chuẩn để phân giải ý định, như mô tả trong phần Tạo đường liên kết sâu đến nội dung trong ứng dụng. Tuy nhiên, ứng dụng vẫn có thể được xác minh là trình xử lý mặc định cho bất kỳ mẫu URL nào được xác định trong các bộ lọc ý định khác của ứng dụng.
Ví dụ: một ứng dụng có các bộ lọc ý định sau đây sẽ chỉ vượt qua quy trình xác minh cho https://www.example.com
nếu tìm thấy tệp assetlinks.json
tại https://www.example.com/.well-known/assetlinks.json
nhưng không tìm thấy tại 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>
Hỗ trợ liên kết ứng dụng cho nhiều miền con
Giao thức Digital Asset Links coi các miền con trong bộ lọc ý định của bạn là những máy chủ riêng biệt và duy nhất. Vì vậy, nếu bộ lọc ý định của bạn liệt kê nhiều máy chủ có các miền con khác nhau, thì bạn phải xuất bản một assetlinks.json
hợp lệ trên mỗi miền.
Ví dụ: bộ lọc ý định sau đây bao gồm www.example.com
và mobile.example.com
làm máy chủ URL ý định được chấp nhận. Vì vậy, bạn phải xuất bản assetlinks.json
hợp lệ tại cả https://www.example.com/.well-known/assetlinks.json
và 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>
Ngoài ra, nếu khai báo tên máy chủ bằng ký tự đại diện (chẳng hạn như *.example.com
), bạn phải xuất bản tệp assetlinks.json
tại tên máy chủ gốc (example.com
). Ví dụ: một ứng dụng có bộ lọc ý định sau đây sẽ vượt qua quy trình xác minh cho mọi tên phụ của example.com
(chẳng hạn như foo.example.com
) miễn là tệp assetlinks.json
được xuất bản tại 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>
Kiểm tra xem có nhiều ứng dụng được liên kết với cùng một miền hay không
Nếu bạn xuất bản nhiều ứng dụng, mỗi ứng dụng được liên kết với cùng một miền, thì mỗi ứng dụng đều có thể được xác minh thành công. Tuy nhiên, nếu các ứng dụng có thể phân giải chính xác cùng một đường dẫn và máy chủ lưu trữ miền, chẳng hạn như trong trường hợp ứng dụng có phiên bản đầy đủ và phiên bản rút gọn, thì chỉ ứng dụng được cài đặt gần đây nhất mới có thể phân giải ý định trên web cho miền đó.
Trong trường hợp như thế này, hãy kiểm tra xem có ứng dụng nào xung đột trên thiết bị của người dùng hay không, miễn là bạn có chế độ hiển thị gói cần thiết. Sau đó, trong ứng dụng của bạn, hãy hiện một hộp thoại chọn tuỳ chỉnh chứa kết quả từ việc gọi queryIntentActivities
. Người dùng có thể chọn ứng dụng mà họ muốn trong danh sách các ứng dụng phù hợp xuất hiện trong hộp thoại.