Ссылки тестового приложения

При внедрении функции связывания приложений следует протестировать её функциональность, чтобы убедиться, что система может связать ваше приложение с вашими веб-сайтами и обрабатывать URL-запросы так, как вы ожидаете.

Для проверки существующего файла с инструкциями можно использовать инструмент «Генератор и тестер списков инструкций» .

В следующих разделах описано, как проверить проверку ссылок в приложении вручную. При желании вы можете проверить проверку с помощью инструмента Play Deep Links или помощника по проверке ссылок в приложении Android Studio.

Подтвердите список хостов для проверки.

При тестировании необходимо подтвердить список связанных хостов, которые система должна проверить для вашего приложения. Составьте список всех URL-адресов, соответствующие фильтры намерений которых включают следующие атрибуты и элементы:

  • Атрибут android:scheme со значением http или https
  • Атрибут android:host с шаблоном URL-адреса домена
  • элемент действия android.intent.action.VIEW
  • android.intent.category.BROWSABLE category element

Используйте этот список, чтобы убедиться, что файл JSON с ссылками на цифровые активы предоставлен на каждом указанном хосте и поддомене.

Подтвердите файлы ссылок на цифровые активы.

Для каждого веб-сайта используйте API ссылок на цифровые активы, чтобы убедиться, что JSON-файл ссылок на цифровые активы правильно размещен и определен:

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

Для динамических ссылок приложений вы также можете проверить расширения связей.

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

В рамках процесса тестирования вы можете проверить текущие системные настройки обработки ссылок. Используйте следующую команду, чтобы получить список существующих политик обработки ссылок для всех приложений на подключенном устройстве:

adb shell dumpsys package domain-preferred-apps

Следующая команда делает то же самое:

adb shell dumpsys package d

Команда возвращает список всех пользователей или профилей, определенных на устройстве, с предварительным заголовком в следующем формате:

App linkages for user 0:

После этого заголовка в выходных данных отображается список настроек обработки ссылок для данного пользователя в следующем формате:

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

В этом списке указано, какие приложения связаны с какими доменами для данного пользователя:

  • Package — идентифицирует приложение по имени пакета, указанному в его манифесте.
  • Domains — отображает полный список хостов, веб-ссылки которых обрабатывает это приложение, используя пробелы в качестве разделителей.
  • Status — отображает текущие настройки обработки ссылок для этого приложения. Приложение, прошедшее проверку и чей манифест содержит android:autoVerify="true" , отображает статус « always ». Шестнадцатеричное число после этого статуса связано с записью в системе Android о предпочтениях пользователя в отношении связывания приложений. Это значение не указывает, была ли проверка успешной.

Тестовый пример

Для успешной проверки ссылок на приложения система должна иметь возможность проверить ваше приложение на каждом из веб-сайтов, указанных в заданном фильтре намерений, который соответствует критериям для ссылок на приложения. В следующем примере показана конфигурация манифеста с несколькими определенными ссылками на приложения:

<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>

Список хостов, которые платформа попытается проверить на основе приведенного выше манифеста, выглядит следующим образом:

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

Список хостов, которые платформа не будет пытаться проверить на основе приведенного выше манифеста, выглядит следующим образом:

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

Чтобы узнать больше о списках утверждений, см. раздел «Создание списка утверждений».