Доверенные веб-активности Multi-Origin

Trusted Web Activity — это новый способ интеграции содержимого вашего веб-приложения, например PWA, с вашим приложением Android с использованием протокола на основе пользовательских вкладок.

ff-origin навигация

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

Когда пользователь выходит из проверенного источника, отображается пользовательский интерфейс Custom Tab. Строка URL в Custom Tab сообщает пользователям, что они теперь перемещаются в домене за пределами приложения, а также предоставляет пользователю кнопку X, которая позволяет быстро вернуться к проверенному источнику.

Однако веб-приложения также часто создают опыт, охватывающий несколько источников. Примером может служить приложение для совершения покупок, основной опыт которого находится на сайте www.example.com , а процесс оформления заказа размещается на сайте checkout.example.com .

В таких случаях отображение пользовательских вкладок нежелательно не только потому, что пользователь находится в том же приложении, но и потому, что верхняя панель может заставить пользователя подумать, что он вышел из приложения и отказался от оформления заказа.

Trusted Web Activities позволяет разработчикам проверять несколько источников, и пользователь будет оставаться в полноэкранном режиме при навигации по этим источникам. Как и в случае с основным доменом, разработчик должен иметь возможность контролировать каждый проверенный источник.

Настройка проверки для нескольких источников

Как и в основном источнике, проверка выполняется с помощью ссылок на цифровые активы, и каждый домен, подлежащий проверке, должен иметь свой собственный файл assetlinks.json.

В нашем примере с www.example.com и checkout.example.com мы бы имели:

  • https://www.example.com/.well-known/assetlinks.json
  • https://checkout.example.com/.well-known/assetlinks.json

Поскольку каждый домен подключается к одному и тому же приложению Android, файлы assetlinks.json выглядят абсолютно одинаково.

Если предположить, что имя пакета для приложения Android — com.example.twa , оба файла assetlink.json будут содержать что-то похожее на следующее:

[{   "relation": ["delegate_permission/common.handle_all_urls"],   "target": {   "namespace": "android_app",   "package_name": "com.example",    "sha256_cert_fingerprints": ["..."]} }] 

Добавьте несколько источников в приложение Android

В приложении Android необходимо обновить декларацию asset_statements , включив в нее все источники, которые необходимо проверить:

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

Добавить дополнительные источники в LauncherActivity

Использование LauncherActivity по умолчанию

LauncherActivity , являющийся частью библиотеки поддержки android-browser-helper предоставляет возможность добавлять несколько источников для проверки путем настройки проекта Android.

Сначала добавьте элемент string-array в файл res/values/strings.xml . Каждый дополнительный URL-адрес, который нужно проверить, будет находиться внутри подэлемента item :

... <string-array name="additional_trusted_origins">     <item>https://www.google.com</item> </string-array> ... 

Затем добавьте новый тег meta-data внутри существующего элемента activity, который ссылается на LauncherActivity , внутри AndroidManifest.xml :

... <activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"     android:label="@string/app_name">       <meta-data         android:name="android.support.customtabs.trusted.ADDITIONAL_TRUSTED_ORIGINS"         android:resource="@array/additional_trusted_origins" />       ... </activity> ... 

Использование пользовательского LauncherActivity

При использовании пользовательского кода для запуска Trusted Web Activity можно добавить дополнительные источники, вызвав setAdditionalTrustedOrigins при создании намерения для запуска Trusted Web Activity:

public void launcherWithMultipleOrigins(View view) {   List<String> origins = Arrays.asList(       "https://checkout.example.com/"   );     TrustedWebActivityIntentBuilder builder = new TrustedWebActivityIntentBuilder(LAUNCH_URI)       .setAdditionalTrustedOrigins(origins);     new TwaLauncher(this).launch(builder, null, null); } 

Заключение

С этими шагами Trusted Web Activity теперь готово поддерживать несколько источников. android-browser-helper имеет пример приложения для многоисточниковых Trusted Web Activities. Обязательно проверьте его.

Поиск неисправностей

Настройка ссылок на цифровые активы имеет несколько подвижных частей. Если приложение по-прежнему показывает панель пользовательских вкладок сверху, скорее всего, что-то не так с конфигурацией.

Краткое руководство по работе с Trusted Web Activity содержит отличный раздел по устранению неполадок , посвященный устранению неполадок Digital Asset Link.

Также имеется замечательный инструмент Peter's Asset Link Tool , который помогает отлаживать ссылки на цифровые активы в приложениях, установленных на устройстве.