Protected Audience のアプリ インストール広告のフィルタリング

モバイルアプリの新規インストールを促進するのは、一般的にアプリ インストール広告です。広告の費用対効果を最大にするには、同じアプリがすでにインストールされているデバイスにはアプリ インストール広告を表示しないようにする必要があります。このプロポーザルでは、この手法を「アプリ インストール広告のフィルタリング」と呼びます。

このプロポーザルでは、Android 版 Protected Audience を使用して、プライバシーを保護しつつ、コンテキスト広告のフィルタリング、特にアプリ インストール広告のフィルタリングをサポートする方法を紹介します。この仕組みを導入するには、デバイス上のアプリでアプリ インストール広告のフィルタリングを明示的に有効にする必要があります。広告の選択時に、広告テクノロジーが認識しているデバイスにインストールされているアプリのリストに基づいて広告候補が除外されます。

インストール済みアプリのリストは、広告選択時にのみ確認されます。そして、デバイス上にインストールされているアプリの情報に基づいて、特定の広告を除外する必要があることがバイサイド プラットフォームを介して通知されます。

アプリ インストール広告のフィルタリングを設定する手順は次のとおりです。

ステップ 1: アプリ インストール広告のフィルタリングにアプリを登録する

アプリ インストール広告のフィルタリングを有効にするには、アプリ デベロッパーはアプリまたは広告テクノロジー SDK から registerForAdFiltering アプリ登録 API を呼び出し、広告テクノロジー購入者の eTLD+1 のリストを指定します。これにより、リストに登録されている購入者のみが、アプリのインストール ステータスに基づいて、直接または広告テクノロジーの SDK を介して広告をフィルタできます。登録すると、アプリ インストール広告フィルタにアプリを含めるかどうかについて、アプリ デベロッパーは完全に制御できます。 java void registerForAdFiltering(List<AdTechIdentifier> buyers);

ステップ 2: アプリ インストール広告の除外をリクエストする

広告が入札になる場合、購入者はアプリのインストール ステータスに基づいて、除外する広告を選択できます。そのために、広告のメタデータにアプリのパッケージ名を含めます。アプリ インストール広告除外リクエストは、Protected Audience オークション プロセスに送られる広告データに含まれます。作成される広告データは、コンテキスト広告かリマーケティング広告かによって異なります。

  • コンテキスト広告は、アプリ インストール広告のフィルタリングの主なユースケースの一つであり、コンテキスト広告のフィルタリング情報は、Protected Audience 外でコンテキスト広告に入札する際に購入者が販売者に提供できる広告データに含まれています。Protected Audience は他の広告固有のメタデータと同様に、このフィルタリング情報がコンテキストに基づくレスポンスの一部として返されることを想定しています。
  • リマーケティング広告の場合、Protected Audience はフィルタリング情報がカスタム オーディエンス情報に含まれることを想定しています。データが含まれるタイミングは 2 つあります。1 つはオーディエンスに参加するときで、もう 1 つはオーディエンスの更新プロセスの一環として新しいオーディエンス データを取得するときです。アプリ インストール広告を除外するリクエストは、AdData JSON オブジェクト内の次のようになります。 json { "render_uri": "https://..", "metadata": {..}, "filters": { "app_install": { "app_package_names": ["app1.package", "app2.package"] } } }

ステップ 3: 広告の選択時にアプリ インストール広告を除外する

広告のリクエスト中、購入者はフィルタリング情報に基づいて複数の広告を除外し、販売者に戻せるため、インストール済みのアプリに関する広告を除外できます。販売側は adData フィールドの selectAds 関数設定の一部としてフィルタリング情報を渡す必要があります。Android では、次のようなメッセージ形式を想定しています。

AdData myAdData = new AdData.Builder()
        .setRenderUri(Uri.parse("https://.."))
        .setMetadata("{...}")
        .setFilters(new AdFilters.Builder()
                .setAppInstalledFilter(new AppInstalledFilter.Builder()
                    .setPackageNames(ImmutableList.of("app1.package", "app2.package"))
                    .build())
                .build())
        .build();
AdSelectionConfig myAdSelectionConfig = new AdSelectionConfig.Builder()
    .setSeller(AdTechIdentifier.fromString("example-ssp1.com"))
    .setDecisionLogicUri(Uri.parse("https://..."))
    ...
    .setContextualAds(ImmutableList.of(new ContextualAd.Builder()
                      .setBuyer(AdTechIdentifier.fromString("example.com"))
                      .setReportingUri("https://example.com/reporting")
                      .setBid(20)
                      // myAdData could be taken from the JSON above
                      .setAd(myAdData)
                      .build()))
    .build();
// Invoke ad services API to initiate ad selection workflow.
selectAds(myAdSelectionConfig);

フィルタリングは selectAds API 内で処理されます。Protected Audience は、メッセージで指定されたアプリが、広告テクノロジー購入者の特定のアプリ インストール リストに含まれるアプリと一致する場合に広告を除外します。この処理では次の 2 つの結果が考えられます。

  • 指定したアプリがリストに存在していない(インストールされていなく、開いてもいない)。
  • アプリがこのリストに含まれている(インストールされ、開いている)。 Protected Audience でアプリがすでに存在することが検出された場合、オークションで scoreAds を実行する際に使用する広告リストから広告が除外されます。

コンテキスト広告が含まれている場合の考慮事項

アプリ インストール広告のフィルタリングでは、Protected Audience API がコンテキスト広告のフィルタリングを開始します。オークションがコンテキスト広告とリマーケティング広告の組み合わせで構成されている場合、またはコンテキスト広告のみで構成されている場合の重要な点について説明します。

  • selectAd オークションが実施されると、購入者は ContextualAd オブジェクトのリストを渡せるようになります。これらのオブジェクトには、広告購入者の eTLD+1、広告の入札単価、広告のレポート ロジックを指す URL、実際の広告コンテンツの URL を含む AdData、購入者に属する確認用署名が含まれます(詳しくは、コンテキスト広告の署名をご覧ください)。AdData フォーマットは、コンテキスト広告とリマーケティング広告の両方で使用されます。
  • コンテキスト広告とリマーケティング広告は、オークション プロセスの開始時に、AdData.adFilters.appInstallFilters.packageNames に含まれているパッケージ名のセットを使用してフィルタされます。次に、すべてのリマーケティング広告の入札単価が決定され、指定された scoreAds 関数によってリマーケティング広告とコンテキスト広告の両方にスコアが付けられます。スコアが最も高い広告が落札します。このプロセスは、リマーケティング広告が存在しない場合でも機能します。
  • コンテキスト広告がオークションで落札され、アプリによってインプレッション レポートがトリガーされると、Protected Audience で reportWin() という JS 関数が、コンテキスト広告データに含まれているレポート URL からダウンロードされ、実行されます。これはオークションで落札されたリマーケティング広告のレポート方法と同様です。

    JavaScript レポート関数の例:

    function reportWin(ad_selection_signals, per_buyer_signals, signals_for_buyer,
    contextual_signals) {
    let reporting_address = 'https://reporting.example.com';
    return {'status': 0, 'results': {'reporting_uri':
         reporting_address + '?some_signal=' + per_buyer_signals.some_signal} };
    }
    

コンテキスト広告の署名

  • アプリ インストール フィルタリングを含むコンテキスト広告は、購入者の署名が必要です。プラットフォームはこの署名を使用して、広告を提供した広告テクノロジーと、広告に適用する広告テクノロジー アプリ インストール フィルタを確認します。これは、悪意のある広告テクノロジーが別の広告テクノロジーの ID を使用して、他の広告テクノロジーのアプリ インストール フィルタリングの登録から利益を得ることを防ぐためです。

  • プライバシー サンドボックスは、登録時に提供された広告テクノロジー エンドポイントからこれらの鍵を取得します。ベスト プラクティスとして、遅くとも 6 か月以内にキーを頻繁に更新することをおすすめします。

  • プライバシー サンドボックスは、登録プロセス中に、広告テクノロジーが提供するエンドポイントの可用性を確認するよう広告テクノロジーに求めます。現在の広告テクノロジーと新しく登録された広告テクノロジーで必要な操作の詳細については、登録の手順をご覧ください。

  • 実装の詳細な手順を記載したデベロッパー ガイドが近日中に公開される予定です。