多源 Trusted Web Activity

Trusted Web Activity 是一种将 Web 应用内容(如 PWA)与 PWA 集成的新方法。 您的 Android 应用。

ff-origin 导航

Trusted Web Activity 需要使用 Digital Asset Links,以便以全屏模式显示内容。

当用户离开经过验证的源时,系统会显示“自定义标签页”界面。“自定义”部分中的网址栏 按 Tab 键可告诉用户他们正在应用外部的网域中导航,同时 为用户提供一个 X 按钮,以便其快速返回经过验证的源。

但是,Web 应用往往会打造跨越多个源的体验,例如 将是一个购物应用,其主页面体验位于 www.example.com,而结账流程则是 该流程托管在 checkout.example.com 上。

在这种情况下,您并不希望显示自定义标签页,这不仅仅是因为用户处于 还因为顶部栏可能会让用户认为他们离开了应用 并放弃结账。

通过 Trusted Web Activity,开发者可以验证多个源,并且用户会保持在 全屏显示。与主网域一样,开发者必须 能够控制每个经过验证的源

为多个源站设置验证

与主源一样,验证通过 Digital Asset Links 和要验证的每个网域 需要有自己的 assetlinks.json 文件。

在以 www.example.comcheckout.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

android-browser-helper 支持库中的 LauncherActivity 提供了一种通过配置 Android 项目来添加要验证的多个源的方法。

首先,将 string-array 元素添加到 res/values/strings.xml 文件中。要添加到的每个额外网址 将位于 item 子元素内:

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

接下来,在引用meta-data AndroidManifest.xml 中的 LauncherActivity

...
<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 时,可通过以下方法添加额外的源 在构建用于启动 Trusted Web Activity 的 Intent 时调用 setAdditionalTrustedOrigins

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 Activity 的示例应用。制造商 请务必进行检查

问题排查

Digital Asset Links 的设置涉及几个动态部分。如果应用仍显示 自定义标签页栏,则可能是因为配置有误。

Trusted Web Activity 快速入门指南中有一份非常实用的问题排查部分,介绍了如何 调试 Digital Asset Link 问题。

此外,还有出色的 Peter 的 Asset Link Tool,可帮助调试 Digital Asset Links。 。