使用查询参数向 Trusted Web Activity 传递信息

在应用中使用 Trusted Web Activity 时,开发者可能需要将应用的原生部分的信息传递到渐进式 Web 应用 (PWA) 中。

一个常见的使用场景是实现自定义分析细分,以衡量通过 Trusted Web Activity 启动的安装和会话。为此,可以将查询参数添加到启动网址。

修改起始网址

如果传递给 PWA 的参数在各个用户和启动操作中保持不变,则可以直接将该参数附加到启动网址。例如,开发者想要衡量通过 Trusted Web Activity 创建的导航会话数。

使用 Bubblewrap

气泡封装工具旨在帮助开发者为使用可信网络 activity 启动现有 PWA 的 Android 应用创建项目。它包含一个和一个命令行界面 (CLI)

创建新项目

使用 Bubblewrap CLI 时,系统会使用 init 命令初始化项目,并从网络清单创建默认值(作为参数提供):

bubblewrap init --manifest https://material.money/manifest.json

该向导将默认使用 Web 清单中的 start_url,并要求用户确认该值,让开发者有机会向用于启动 Progressive Web App 的网址添加额外的参数。

显示 Bubblewrap CLI 输出

修改现有项目

当 Bubblewrap 生成项目时,该特定项目的信息会存储在项目文件夹中名为 twa-manifest.json 的文件中。如需修改现有项目的起始网址,开发者需要修改该文件:

{
  ...
  "startUrl": "/?utm_source=trusted-web-activity",
  ...
}

然后,重新生成项目文件并应用新的起始网址

bubblewrap update

使用 Android Studio

使用 Android Studio 和默认的 LauncherActivity 时,startUrl 会被定义为 AndroidManifest.xml 内的一个元标记,我们可以通过修改网址来更改用于启动 Trusted Web Activity 的网址:

<activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://svgomg.firebaseapp.com/?utm_source=trusted-web-activity" />
    ...
</activity>

动态修改起始网址

例如,在其他情况下,开发者可能需要创建随用户或会话而变化的参数。在大多数情况下,这涉及从应用的 Android 端收集详细信息,以将其传递给渐进式 Web 应用。

第 1 步:创建自定义 LauncherActivity

public class CustomQueryStringLauncherActivity extends LauncherActivity {
    private String getDynamicParameterValue() {
        return String.valueOf((int)(Math.random() * 1000));
    }

    @Override
    protected Uri getLaunchingUrl() {
        // Get the original launch Url.
        Uri uri = super.getLaunchingUrl();

        // Get the value we want to use for the parameter value
        String customParameterValue = getDynamicParameterValue();

        // Append the extra parameter to the launch Url
        return uri
                .buildUpon()
                .appendQueryParameter("my_parameter", customParameterValue)
                .build();
    }
}

第 2 步:修改 AndroidManifest.xml 以使用自定义 LauncherActivity

<activity android:name="com.myapp.CustomQueryStringLauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://squoosh.app/?utm_source=trusted-web-activity" />
    ...
</activity>

总结

使用查询参数可以将信息从应用的原生部分传递到应用的 Web 部分。将参数添加到查询字符串后,网页上运行的脚本将可以访问该参数,而且当用户导航到其他网页或开发者实现分享操作时,该参数也可能是引荐的一部分。

开发者必须了解这些影响,并可通过使用 link rel=noreferrer 或通过页面位置 API 清理网址来缓解这些影响。

Trusted Web Activity 协议目前不提供在调用 Web 部分后与应用的原生部分交换消息的机制。

我们相信,现有或即将推出的 Web 平台 API 可以实现开发者所需的大多数用例。如果您正在寻找新的或即将推出的 Web API,请查看新的功能状态页面