Kiểm thử Đường liên kết đến ứng dụng

Khi triển khai tính năng liên kết đến ứng dụng, bạn nên kiểm thử chức năng liên kết để đảm bảo hệ thống có thể liên kết ứng dụng của bạn với các trang web của bạn và xử lý các yêu cầu URL như bạn mong đợi.

Để kiểm thử một tệp câu lệnh hiện có, bạn có thể sử dụng công cụ Trình tạo danh sách câu lệnh và kiểm thử.

Các phần sau đây mô tả cách kiểm thử quy trình xác minh Đường liên kết đến ứng dụng theo cách thủ công. Nếu muốn, bạn có thể kiểm thử quy trình xác minh bằng công cụ Đường liên kết sâu trên Play hoặc Trợ lý App Links trong Android Studio.

Xác nhận danh sách máy chủ cần xác minh

Khi kiểm thử, bạn nên xác nhận danh sách các máy chủ được liên kết mà hệ thống cần xác minh cho ứng dụng của bạn. Hãy lập danh sách tất cả các URL có bộ lọc ý định tương ứng bao gồm các thuộc tính và phần tử sau:

  • Thuộc tính android:scheme có giá trị là http hoặc https
  • Thuộc tính android:host có mẫu URL miền
  • Phần tử hành động android.intent.action.VIEW
  • Phần tử danh mục android.intent.category.BROWSABLE

Sử dụng danh sách này để kiểm tra xem tệp JSON chứa Đường liên kết đến tài sản kỹ thuật số có được cung cấp trên từng máy chủ và miền phụ được đặt tên hay không.

Xác nhận các tệp Đường liên kết đến tài sản kỹ thuật số

Đối với mỗi trang web, hãy sử dụng API Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) để xác nhận rằng tệp JSON chứa Đường liên kết đến tài sản kỹ thuật số được lưu trữ và xác định đúng cách:

https://digitalassetlinks.googleapis.com/v1/statements:list?
   source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&amp;
   relation=delegate_permission/common.handle_all_urls

Đối với Đường liên kết đến ứng dụng động, bạn cũng có thể kiểm tra các tiện ích mở rộng mối quan hệ.

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true

Trong quá trình kiểm thử, bạn có thể kiểm tra các chế độ cài đặt hiện tại của hệ thống để xử lý đường liên kết. Sử dụng lệnh sau để xem danh sách các chính sách xử lý đường liên kết hiện có cho tất cả ứng dụng trên thiết bị thông minh được kết nối:

adb shell dumpsys package domain-preferred-apps

Lệnh sau đây cũng thực hiện thao tác tương tự:

adb shell dumpsys package d

Lệnh này trả về danh sách từng người dùng hoặc hồ sơ được xác định trên thiết bị, trước đó là tiêu đề theo định dạng sau:

App linkages for user 0:

Sau tiêu đề này, đầu ra sẽ sử dụng định dạng sau để liệt kê các chế độ cài đặt xử lý đường liên kết cho người dùng đó:

Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002

Danh sách này cho biết những ứng dụng được liên kết với những miền nào cho người dùng đó:

  • Package – Xác định một ứng dụng theo tên gói như được khai báo trong tệp kê khai của ứng dụng đó.
  • Domains – Hiển thị danh sách đầy đủ các máy chủ mà ứng dụng này xử lý đường liên kết trên web, sử dụng khoảng trắng làm dấu phân cách.
  • Status – Hiển thị chế độ cài đặt xử lý đường liên kết hiện tại cho ứng dụng này. Một ứng dụng đã vượt qua quy trình xác minh và có tệp kê khai chứa android:autoVerify="true" sẽ hiển thị trạng thái always. Số thập lục phân sau trạng thái này có liên quan đến bản ghi của hệ thống Android về các lựa chọn ưu tiên liên kết ứng dụng của người dùng. Giá trị này không cho biết liệu quy trình xác minh có thành công hay không.

Ví dụ kiểm thử

Để quy trình xác minh đường liên kết đến ứng dụng thành công, hệ thống phải có thể xác minh ứng dụng của bạn với từng trang web mà bạn chỉ định trong một bộ lọc ý định nhất định đáp ứng các tiêu chí cho đường liên kết đến ứng dụng. Ví dụ sau đây cho thấy cấu hình tệp kê khai với một số đường liên kết đến ứng dụng được xác định:

<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>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:host="www.example2.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="account.example.com" />
        </intent-filter>
    </activity>

      <activity android:name="ThirdActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="https" />
            <data android:host="map.example.com" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="market" />
            <data android:host="example.com" />
        </intent-filter>
      </activity>

</application>

Danh sách các máy chủ mà nền tảng sẽ cố gắng xác minh từ tệp kê khai trước đó là:

www.example.com
mobile.example.com
www.example2.com
account.example.com

Danh sách các máy chủ mà nền tảng sẽ không cố gắng xác minh từ tệp kê khai trước đó là:

map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)

Để tìm hiểu thêm về danh sách câu lệnh, hãy xem bài viết Tạo danh sách câu lệnh.