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 か月に 1 回までにすることをおすすめします。

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

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