クエリ パラメータを使用して信頼できるウェブ アクティビティに情報を渡す

アプリで信頼できるウェブ アクティビティを使用する場合、デベロッパーはアプリのネイティブ部分からプログレッシブ ウェブアプリ(PWA)に情報を渡す必要があります。

一般的なユースケースは、カスタムのアナリティクス セグメントを実装して、Trusted Web Activity から開始されたインストールとセッションを測定することです。これを実装するために、起動 URL にクエリ パラメータを追加できます。

開始 URL を変更する

PWA に渡されるパラメータが、ユーザー間で同じままで起動する場合は、パラメータを起動 URL に直接追加できます。この使用例は、デベロッパーが信頼できるウェブ アクティビティから作成されたナビゲーション セッションの数を測定する場合です。

Bubblewrap の使用

Bubblewrap は、信頼できるウェブ アクティビティを使用して既存の PWA を起動する Android アプリのプロジェクトを作成するためのツールです。ライブラリコマンドライン インターフェース(CLI)の両方が含まれています。

新しいプロジェクトを作成する

Bubblewrap CLI を使用する場合、プロジェクトは init コマンドで初期化され、パラメータとして指定されたウェブ マニフェストからデフォルト値が作成されます。

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

ウィザードはウェブ マニフェストの start_url をデフォルトとして使用し、ユーザーに値の確認を求めます。これにより、デベロッパーはプログレッシブ ウェブアプリの起動に使用する URL にパラメータを追加できます。

Bubblewrap CLI の出力を表示する

既存のプロジェクトを変更する

Bubblewrap がプロジェクトを生成すると、その特定のプロジェクトの情報が、プロジェクト フォルダ内の twa-manifest.json というファイルに保存されます。既存のプロジェクトの開始 URL を変更するには、デベロッパーがファイルを変更する必要があります。

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

次に、プロジェクト ファイルを再生成して新しい開始 URL を適用する

bubblewrap update

Android Studio の使用

Android Studio とデフォルトの LauncherActivity を使用する場合、startUrl は AndroidManifest.xml 内のメタタグとして定義されます。Trusted Web Activity の起動に使用する URL は、次のように変更することで変更できます。

<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>

開始 URL の動的な変更

ユーザーやセッションをまたいで変更されるパラメータを作成したい場合などが考えられます。ほとんどの場合、Android 側からアプリの詳細情報を収集してプログレッシブ ウェブアプリに渡します。

ステップ 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: カスタム LauncherActivity を使用するように AndroidManifest.xml を変更する

<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>

おわりに

アプリケーションのネイティブ部分からウェブ部分に情報を渡すには、クエリ パラメータを使用します。パラメータがクエリ文字列に追加されると、そのパラメータはページで実行されているスクリプトからアクセス可能になります。また、ユーザーが別のページに移動するときや、デベロッパーが共有アクションを実装したときに、参照の一部になることもあります。

デベロッパーはこれらの影響を認識し、link rel=noreferrer を使用して軽減するか、Page Location API を使用して URL をクリーンアップする必要があります。

Trusted Web Activity プロトコルには現在、ウェブ パーツが呼び出された後にアプリケーションのネイティブ部分とメッセージを交換するメカニズムは用意されていません。

Google は、既存または今後のウェブ プラットフォーム API によって、デベロッパーが必要とするほとんどのユースケースに対応できると考えています。新規または今後のウェブ API を検討されている場合は、新機能のステータス ページをご覧ください。