Tạo danh sách câu lệnh

Câu lệnh được lưu trữ trong danh sách câu lệnh được mã hoá JSON tại một vị trí phổ biến trên một đối tượng chính, như xác định trong Thông số kỹ thuật về đường liên kết đến tài sản. Danh sách câu lệnh chứa một hoặc nhiều câu lệnh còn hiệu trưởng chỉ được có một danh sách câu lệnh.

Cú pháp danh sách câu lệnh

Xem cú pháp danh sách câu lệnh.

Vị trí danh sách bảng sao kê

Danh sách bảng sao kê được lưu trữ ở một vị trí nổi tiếng và phụ thuộc vào loại chính (trang web hoặc ứng dụng đưa ra bảng sao kê).

Danh sách bảng sao kê trang web

Trên trang web, danh sách bảng sao kê là một tệp văn bản được đặt tại địa chỉ sau:

scheme://domain/.well-known/assetlinks.json

Hãy chú ý dấu chấm trong tên thư mục .well-known.

Mọi phản hồi của máy chủ ngoài HTTP 200 đều được coi là lỗi và sẽ dẫn đến danh sách câu lệnh trống. Đối với HTTPS, mọi kết nối không có chuỗi chứng chỉ có thể được xác minh bằng danh sách gốc đáng tin cậy cũng sẽ dẫn đến danh sách câu lệnh trống.

Ví dụ

Dưới đây là danh sách câu lệnh mẫu trên một trang web: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Danh sách câu lệnh của ứng dụng Android

Trong một ứng dụng Android, danh sách câu lệnh là một đoạn mã JSON có cú pháp giống như tệp câu lệnh cho trang web, nhưng được nhúng trong tệp strings.xml và tham chiếu đến tệp kê khai như trình bày tiếp theo.

Trong AndroidManifest.xml:

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

Trong tệp res/values/strings.xml:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

Ví dụ

Dưới đây là đoạn mã res/values/strings.xml mẫu cho một ứng dụng Android có hỗ trợ tính năng chia sẻ vị trí với ứng dụng (một tính năng Android hiện chưa được hỗ trợ):

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

So khớp mục tiêu

Mỗi câu lệnh đều nói về một mục tiêu. Khi sử dụng một câu lệnh, bạn phải so khớp mục tiêu trong câu lệnh đó với thực thể nào đó trong thực tế. Nếu mục tiêu câu lệnh khớp với thực thể thì câu lệnh đó sẽ được áp dụng. Dưới đây là các quy tắc để xác định xem một mục tiêu có khớp với một thực thể cụ thể hay không:

Mục tiêu trang web

Đối với một trang web, lược đồ trang web, máy chủ lưu trữ và cổng phải khớp chính xác. Các cổng mặc định cho HTTP và HTTPS (tương ứng là 80 và 443) được giả định theo mặc định; nếu mục tiêu câu lệnh mô tả http://www.example.com:80, thì trang web http://www.example.com sẽ được coi là kết quả phù hợp.

Ví dụ

Cho mục tiêu của câu lệnh sau

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

Các URI sau đây SẼ khớp:

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

Các URL sau sẽ KHÔNG khớp:

  • http://www.google.com/ (Lược đồ sai)
  • https://google.com/ (Tên máy chủ lưu trữ không khớp)
  • https://www.google.com:444/ (Cổng không khớp)

Mục tiêu của ứng dụng

Đối với một ứng dụng, hàm băm của chứng chỉ và tên gói của mục tiêu phải khớp chính xác với ứng dụng.