展示頻率上限是一種廣告相關做法,可限制在特定時間範圍內,向特定類別使用者放送的廣告數量。展示頻率上限會確保廣告曝光和興趣維持在最新狀態,並有助於廣告客戶管理廣告支出,進而改善終端使用者體驗。
本提案說明如何使用 Android 的 FLEDGE,以正確且保護隱私權的方式實作展示頻率上限功能。
FLEDGE 會結合兩項功能來實作展示頻率上限:廣告專用事件的裝置端儲存空間儲存功能,並根據預先定義的篩選器策略篩選廣告。展示頻率上限可讓廣告客戶針對指定時間範圍內的直方圖值表示計數器門檻。
計數器在每組裝置設定檔、Adtech 和計數器鍵的組合中都不重複。每則廣告應包含一組計數器鍵,以便在廣告註冊或曝光時查看。對於每個鍵,FLEDGE 都會儲存一組計數器,而每個計數器都會計算在特定時間間隔內發生的所有廣告特定事件。發生曝光或瀏覽時,裝置端計數器會遞增,而且計數器資料會保留在裝置上。確切的持續時間會在稍後定義。
FLEDGE 廣告選擇工作流程中的廣告篩選邏輯可以存取計數器、再行銷廣告和內容相關廣告,讓 FLEDGE 展示頻率上限能夠處理所有這類型的廣告請求。
注意事項:廣告篩選功能僅適用於 Android 版 Privacy Sandbox。Chrome 的 FLEDGE 實作目前不會導入針對內容比對非 FLEDGE 廣告的篩選機制。本提案僅涵蓋買方支援。日後若有需求,我們會在日後新增賣方支援。
FLEDGE 展示頻率上限支援多種條件,包括:
- 即時篩選,在裝置端計數器更新時,最短的伺服器端延遲時間。
- 彈性的鍵階層,包括個別廣告、廣告活動或任何其他群組。
- 可搭配其他展示頻率上限方法,且不依賴 AdID。
- 可用於特定裝置使用者設定檔中的多個應用程式。
- 準確且完整的計數器。
- 支援廣告事件的自訂定義,例如觀看次數或曝光次數。
- 用於再行銷和內容相關廣告的一項函式。
設定展示頻率上限的步驟如下:
步驟 1:在廣告中加入展示頻率上限資訊
內容或再行銷廣告將使用新的欄位 on_device_counters_keys
,指出在觀看或曝光時要更新的相關直方圖計數器,當中包含一個任意鍵值清單。這個欄位不會包含在 FLEDGE 未剖析的 metadata
欄位中。
以下範例顯示 AdSelectionConfig
中 adsData
欄位的資料格式。如果是再行銷,特定自訂目標對象的廣告格式與以下 ads
欄位的內容一致:
'adsData': [
{
"buyer": "ads.example.com",
"ads": [
{
'render_url': 'exampleUrl',
'metadata': {...}, /* metadata are opaque to FLEDGE and
just required to be in valid JSON
format */
'on_device_counters_keys': [
'campaign_id:1234',
'campaign_id:1234+adgroup_id:5678'
]
}]
}]
}
步驟 2:註冊觀看或曝光
廣告技術可叫用 updateEventHistogram
方法,註冊用於展示頻率上限的事件發生。您可以針對勝出廣告的 eventType
中指定的相同事件金鑰重複叫用相同方法。
void updateEventHistogram(@EventType eventType, long adSelectionId)
輸入裝置:
eventType
:指出事件是否計為觀看、曝光或廣告選擇程序的勝出。adSelectionId
:AdSelectionOutcome
物件中由selectAds
呼叫傳回的 ID 值。
updateEventHistogram
呼叫會更新一組鍵的直方圖,該組合定義為由 CustomAudience
擷取的再行銷廣告的一部分,或 AdSelectionConfig
參數中納入的內容相關廣告 selectAds
。除了 on_device_counters_keys
中的鍵外,呼叫也會為廣告 render_url
值識別的計數器更新直方圖。
假設步驟 1 中的廣告是 AdSelection
的勝出者,且 id
值為 9999
,則呼叫 updateEventHistogram(EventType.VIEW,
adSelectionId: 999)
時,下列三個主鍵的計數器會遞增:
{'ads.example.com', 'campaign_id:1234', VIEW}
{'ads.example.com', 'campaign_id:1234+adgroup_id:5678', VIEW}
{'ads.example.com', 'exampleUrl', VIEW}
。
廣告技術名稱取自買方欄位,來源環境包括內容相關廣告或自訂目標對象 (視勝出廣告的來源而定)。
Android 適用的 FLEDGE 會自動為上述事件類型 EventType.AD_SELECTION_WIN
的廣告增加所有計數器,因為 selectAds
API 呼叫會傳回廣告。此功能等同於將 prev_wins
引數納入 browser_signals
,其包含在 Chrome 的 FLEDGE 實作中的 generateBid
。
步驟 3:使用篩選器實作展示頻率上限篩選功能
為獲得最佳效能,系統會在 AdServices
中執行展示頻率上限篩選函式。FLEDGE 會讀取 AdsData
物件的篩選器欄位,藉此判斷訊息是否需要篩選。frequency_cap
中指定篩選器清單。鍵、event_type
和 interval_seconds
的值用於擷取用於篩選和 FLEDGE 的事件直方圖。
您可以為自訂目標對象提供的再行銷廣告,以及內容相關廣告作為 AdSelectionConfig
物件的一部分指定篩選資訊。
針對具有展示頻率上限篩選器的內容相關廣告,系統會使用 AdSelectionConfig
物件的廣告欄位傳入廣告。系統會篩選廣告,並傳回最高出價的廣告做為 selectAds
呼叫的結果。
針對設有展示頻率上限篩選器的再行銷廣告,系統會在呼叫買方提供的 generateBid()
JavaScript 函式前篩選廣告。
以下範例顯示套用展示頻率上限篩選的訊息:
{
'render_url': 'url',
'metadata': {...}, /* metadata are opaque to FLEDGE and assumed
to be in valid JSON format */
'on_device_counters_keys': [
'campaign_id:1234',
'campaign_id:1234+adgroup_id:5678'
],
"filters": {
"frequency_cap": {
"view": {
"campaign_id:1234": {
"cap": 10,
"interval_seconds": 86400
},
"adgroup_id:5678": {
"cap": 10,
"interval_seconds": 86400
},
},
"win": {
"campaign_id:1234": {
"cap": 5,
"interval_seconds": 604800
},
"adgroup_id:5678": {
"cap": 5,
"interval_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:製作勝出廣告報表
廣告選擇程序完成後,系統會傳回包含 renderUri
和 adSelectionId
(也就是 selectAds
呼叫的數字 ID) 的 AdSelectionOutcome
物件。這個 ID 可用於叫用目前支援事件層級報表的 reportImpression
API。在 Beta 版第 1 版中,這個方法支援再行銷廣告報表,而日後版本中也會支援內容相關廣告的報表功能。針對內容相關廣告,買方必須在廣告結構中使用名為 reportingJS
的額外欄位,在 reportImpression
呼叫期間指出可擷取 reportWin
函式的位置,如上例所示。
選取候選廣告的最佳做法
FLEDGE 會將強制執行展示頻率上限從伺服器移至裝置。雖然 Privacy Sandbox 會報告勝出出價,但開發人員不知道廣告無法顯示的原因。由於出價落選或展示頻率上限導致廣告無法顯示。出價系統無法全面掌握某些廣告無法勝出的原因,因此出價系統還需要額外的工作來確保系統放送最佳廣告。這些最佳做法有助於確保 FLEDGE 放送最佳廣告。
傳送足夠的再行銷廣告
再行銷廣告無法針對每位使用者進行最佳化。如果使用者看到來自自訂目標對象的大量廣告,且廣告限制數量偏低,可能就被篩除。再行銷廣告會定期更新,因此廣告空間必須足以通過展示頻率上限,以確保再行銷廣告能繼續放送。但必須在 joinCustomAudience
呼叫期間所指定的廣告大小和自訂目標對象背景擷取流程中,與廣告大小有所限制。買方必須考量在出價階段的延遲時間可能會增加。為了盡可能降低這些問題的影響,系統會在呼叫 generateBid
之前執行展示頻率上限篩選。
在伺服器上保留關聯計數器
透過伺服器端預估功能,開發人員可以大概估算出展示頻率上限啟用的時機。這些預估值表示廣告很可能達到展示頻率上限,因此建議發送更多候選廣告或完全刪除。
根據比對內容回應,傳送多個候選廣告
您應在 FLEDGE 競價前傳送含有情境回應的多個候選廣告。這樣可確保篩除多則廣告時,其他廣告還是會顯示。可以設定候選廣告的優先順序,從而提供部分廣告做為備份。
由於執行時間設有時間限制,因此應依據參與競價的機率選擇廣告候選者,以免被篩除。
限制
以下是 FLEDGE 展示頻率上限的已知限制:
- FLEDGE 展示頻率上限運作於裝置使用者設定檔層級,目前在其他裝置上及其他設定檔皆沒有共用計數器。如有需要,您必須手動加入從其他裝置顯示的廣告增量。
- 裝置計數器會儲存在裝置上並存取。伺服器端計數器必須分開管理。
- 由於系統會在裝置上處理展示頻率上限和相關廣告篩選功能,因此廣告技術平台無法直接控管這些作業。如要清除裝置的展示頻率上限門檻,廣告技術平台可傳送多個候選廣告。
- 不支援根據記錄頻率設定出價調整幅度。
generateBid
函式無法查看頻率計數器。