Protected Audience 展示頻率上限

展示頻率上限是一種廣告相關做法,可限制在特定時間範圍內,向使用者放送的特定類別廣告數量。展示頻率上限能確保廣告曝光的新鮮度與吸引力,改善使用者體驗,也可以協助廣告客戶控管廣告支出。

本提案說明如何使用 Android 版 Protected Audience,以正確且保護隱私權的方式實作展示頻率上限功能。

Protected Audience 會結合兩項功能來實作展示頻率上限:在裝置端儲存廣告專屬事件數量的計數器,以及根據預先定義的一組篩選策略過濾廣告的功能。展示頻率上限功能可讓廣告客戶在指定時間範圍內,針對直方圖總和設定計數器門檻。

每組裝置設定檔、廣告技術和計數器鍵組合的計數器不會重複。每則廣告應包含一組計數器鍵,以便在已登錄廣告的觀看或曝光時使用。Protected Audience 會針對每個鍵儲存一組計數器,每個計數器都會記錄在特定時間間隔內發生的所有廣告專屬事件。發生曝光或觀看時,裝置端計數器會遞增,而且計數器資料會持續保留在裝置上。具體持續時間會在之後定義。

Protected Audience 的廣告選擇工作流程中的廣告篩選邏輯可以存取計數器、再行銷廣告和內容相關廣告,讓 Protected Audience 展示頻率上限能處理所有這類型的廣告要求。

注意事項:廣告篩選功能僅適用於 Android 版 Privacy Sandbox。Chrome 的 Protected Audience 實作目前不會導入內容比對非 Protected Audience 廣告的篩選機制。本提案僅涵蓋買方支援。若客戶有需求,我們將在日後新增賣方支援。

Protected Audience 展示頻率上限支援多種需求,包括:

  • 在裝置端計數器更新時即時篩選,並且盡可能降低伺服器端延遲。
  • 彈性的鍵階層,包括個別廣告、廣告活動或任何其他群組。
  • 可搭配其他展示頻率上限方法,且不依賴 AdID。
  • 可用於特定裝置使用者設定檔中的多個應用程式。
  • 準確且完整的計數器。
  • 支援廣告事件的自訂定義,例如觀看次數或曝光次數。
  • 用於再行銷和內容相關廣告的一項函式。

設定展示頻率上限的步驟如下:

步驟 1:在廣告中加入展示頻率上限資訊

內容相關廣告和再行銷廣告會使用 ad_counter_keys 欄位 (包含任意整數的清單),指示要在廣告觀看或曝光時更新的相關直方圖計數器。這個欄位不會包含在 Protected Audience 未剖析的 metadata 欄位中。

以下範例顯示 AdSelectionConfigadsData 欄位的資料格式。如果是再行銷廣告,特定自訂目標對象的廣告格式會與以下範例中的 ads 欄位內容一致:

'adsData': [
  {
    "buyer": "ads.example.com",
    "ads": [
      {
        'render_url': 'exampleUrl',
        'metadata': {...},   /* metadata are opaque to Protected Audience are
                                required to be in valid JSON format */
        'ad_counter_keys': [1234, 5678]
      }]
  }]
}

步驟 2:註冊觀看或曝光

廣告技術可叫用 updateAdCounterHistogram 方法,註冊用於展示頻率上限的發生事件。您可以針對勝出廣告的 eventType 中指定的鍵,在相同事件中重複叫用該方法。

void updateAdCounterHistogram(@EventType eventType, long adSelectionId)

輸入裝置:

  • eventType指出事件是否計為觀看、曝光、點擊或廣告選擇程序的勝出。
  • adSelectionIdAdSelectionOutcome 物件中由 selectAds 呼叫傳回的 ID 值。

updateAdCounterHistogram 呼叫會更新一組鍵的直方圖,該組合定義為由 CustomAudience 擷取的再行銷廣告的一部分,或 AdSelectionConfig 參數中納入的內容相關廣告 selectAds

假設步驟 1 中的廣告是 AdSelection 的勝出者,且 id 值為 9999,則呼叫 updateAdCounterHistogram(FrequencyCapFilters.AD_EVENT_TYPE_VIEW, adSelectionId: 999) 時,下列三個主鍵的計數器會遞增:

  • {'ads.example.com', 1234, VIEW}
  • {'ads.example.com', 5678, VIEW}

廣告技術名稱取自買家欄位,來源包括內容相關廣告或自訂目標對象,視勝出廣告的來源而定。

Android 版 Protected Audience 會針對 selectAds API 呼叫傳回廣告的事件類型 FrequencyCapFilters.AD_EVENT_TYPE_WIN,自動遞增上述提到的所有計數器。這在功能上等同於在 Chrome 的 Protected Audience 實作的 generateBid 中,將 prev_wins 引數加到 browser_signals

步驟 3:使用篩選器實作展示頻率上限篩選功能

為獲得最佳效能,系統會在 AdServices 中執行展示頻率上限篩選函式。Protected Audience 會讀取 AdsData 物件中的篩選器欄位,藉此判斷訊息是否需要篩選。篩選器清單是在 frequency_cap 中指定。鍵、event_typeinterval_in_seconds 的值是用來擷取篩選功能和 Protected Audience 所用事件的直方圖。

您可以為自訂目標對象提供的再行銷廣告,以及做為 AdSelectionConfig 物件一部分的內容相關廣告,指定篩選資訊。

針對具有展示頻率上限篩選器的內容相關廣告,系統會使用 AdSelectionConfig 物件的廣告欄位傳入廣告。系統會篩選廣告,並傳回最高出價的廣告做為 selectAds 呼叫的結果。

針對設有展示頻率上限篩選器的再行銷廣告,系統會在呼叫買方提供的 generateBid() JavaScript 函式前篩選廣告。

以下範例顯示套用展示頻率上限篩選的訊息:

{
  'render_url': 'url',
  'metadata': {...},   /* metadata are opaque to Protected Audience and assumed
                        to be in valid JSON format */

  'ad_counter_keys': [1234, 5678],

  "filters": {
    "frequency_cap": {
      "view": [
        {
          "ad_counter_key": 1234
          "max_count": 10,
          "interval_in_seconds": 86400
        },
        {
          "ad_counter_key": 5678
          "max_count": 10,
          "interval_in_seconds": 86400
        },
      ],
      "win": [
        {
          "ad_counter_key": 1234
          "max_count": 5,
          "interval_in_seconds": 604800
        },
        {
          "ad_counter_key": 5678
          "max_count": 5,
          "interval_in_seconds": 345600
        },
      ]
    },

  // This field is only required in contextual ads and is used in
  // reportImpression calls to fetch the reportWin function.
  'reportingJS': "https://ads.example.com?reportWin.js"
}

步驟 4:製作勝出廣告報表

廣告選擇程序完成後,系統會傳回包含 renderUriadSelectionId (也就是 selectAds 呼叫的數字 ID) 的 AdSelectionOutcome 物件。這個 ID 可用於叫用目前支援事件層級報表的 reportImpression API。在 Beta 版第 1 版中,這個方法支援再行銷廣告報表,而日後版本中也會支援內容相關廣告的報表功能。針對內容相關廣告,買方必須在廣告結構中使用名為 reportingJS 的額外欄位,在 reportImpression 呼叫期間指出可擷取 reportWin 函式的位置,如上例所示。

選取候選廣告的最佳做法

Protected Audience 會將展示頻率上限的執行作業從伺服器移至裝置。雖然 Privacy Sandbox 會報告勝出出價,但開發人員不會知道廣告無法顯示的原因。廣告可能因出價落選或展示頻率上限而無法顯示。出價系統無法全面瞭解某些廣告無法勝出的原因,因此還需要進行額外工作,確保系統放送成效最佳的廣告。這些最佳做法有助於確保您透過 Protected Audience,以成效最佳的方式放送廣告。

傳送足夠的再行銷廣告

再行銷廣告無法針對每位使用者進行最佳化。如果使用者看到來自自訂目標對象的大量廣告,且廣告限制數量偏低,可能就被篩除。再行銷廣告會定期更新,因此廣告空間必須足以通過展示頻率上限,以確保再行銷廣告能繼續放送。不過,這需要與可在 joinCustomAudience 呼叫期間,以及自訂目標對象每日更新期間指定的廣告大小限制取得平衡。買家必須考量出價階段的延遲時間可能會增加。為了盡可能降低這些問題的影響,系統會在呼叫 generateBid 之前執行展示頻率上限篩選。

在伺服器上保留關聯計數器

透過伺服器端預估功能,開發人員可以大概估算出展示頻率上限啟用的時機。這些預估值表示廣告很可能達到展示頻率上限,因此建議發送更多候選廣告或完全刪除。

根據結構定義的回應,傳送多個候選廣告

您應該在 Protected Audience 競價之前,傳送多個包含情境回應的候選廣告。這樣可確保篩除多則廣告時,其他廣告還是會顯示。您可以設定候選廣告的優先順序,將部分廣告做為備份提供。

由於執行程序有時間限制,因此選擇候選廣告時,應選擇較可能在競價獲勝的廣告,以及不會遭到篩除的廣告。

限制

以下是 Protected Audience 展示頻率上限的已知限制:

  1. Protected Audience 展示頻率上限是在裝置使用者設定檔層級運作,沒有與其他裝置或設定檔共用的計數器。如有需要,您必須手動整合從其他裝置顯示的廣告增量。
  2. 裝置計數器是在裝置上儲存及存取資料,因此必須個別管理伺服器端計數器。
  3. 系統會在裝置上處理展示頻率上限和相關廣告篩選功能,因此廣告技術平台無法直接控管這些作業。如要略過裝置的展示頻率上限門檻,廣告技術平台可傳送多個包含不同篩選條件的候選廣告。
  4. 不支援根據記錄頻率設定出價調整幅度。generateBid 函式無法查看頻率計數器。