Trusted Web Activity 是一种将 Web 应用内容(如 PWA)与 PWA 集成的新方法。 您的 Android 应用。
Trusted Web Activity 需要使用 Digital Asset Links,以便以全屏模式显示内容。
当用户离开经过验证的源时,系统会显示“自定义标签页”界面。“自定义”部分中的网址栏 按 Tab 键可告诉用户他们正在应用外部的网域中导航,同时 为用户提供一个 X 按钮,以便其快速返回经过验证的源。
但是,Web 应用往往会打造跨越多个源的体验,例如 将是一个购物应用,其主页面体验位于 www.example.com,而结账流程则是 该流程托管在 checkout.example.com 上。
在这种情况下,您并不希望显示自定义标签页,这不仅仅是因为用户处于 还因为顶部栏可能会让用户认为他们离开了应用 并放弃结账。
通过 Trusted Web Activity,开发者可以验证多个源,并且用户会保持在 全屏显示。与主网域一样,开发者必须 能够控制每个经过验证的源
为多个源站设置验证
与主源一样,验证通过 Digital Asset Links 和要验证的每个网域 需要有自己的 assetlinks.json 文件。
向每个来源添加一个 assetlinks 文件
在以 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
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。 。