При внедрении функции связывания приложений следует протестировать её функциональность, чтобы убедиться, что система может связать ваше приложение с вашими веб-сайтами и обрабатывать URL-запросы так, как вы ожидаете.
Для проверки существующего файла с инструкциями можно использовать инструмент «Генератор и тестер списков инструкций» .
В следующих разделах описано, как проверить проверку ссылок в приложении вручную. При желании вы можете проверить проверку с помощью инструмента Play Deep Links или помощника по проверке ссылок в приложении Android Studio.
Подтвердите список хостов для проверки.
При тестировании необходимо подтвердить список связанных хостов, которые система должна проверить для вашего приложения. Составьте список всех URL-адресов, соответствующие фильтры намерений которых включают следующие атрибуты и элементы:
- Атрибут
android:schemeсо значениемhttpилиhttps - Атрибут
android:hostс шаблоном URL-адреса домена - элемент действия
android.intent.action.VIEW -
android.intent.category.BROWSABLEcategory element
Используйте этот список, чтобы убедиться, что файл JSON с ссылками на цифровые активы предоставлен на каждом указанном хосте и поддомене.
Подтвердите файлы ссылок на цифровые активы.
Для каждого веб-сайта используйте API ссылок на цифровые активы, чтобы убедиться, что JSON-файл ссылок на цифровые активы правильно размещен и определен:
https://digitalassetlinks.googleapis.com/v1/statements:list?
source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&
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)
Чтобы узнать больше о списках утверждений, см. раздел «Создание списка утверждений».