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

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

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

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

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

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

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

Используйте этот список, чтобы проверить, что 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)

Дополнительную информацию о списках утверждений см. в разделе Создание списка утверждений.