使用 Protected Audience 中介服務的多個賣方競價支援

提供意見

賣方廣告平台通常會提供多元化的廣告需求來源,盡可能提高廣告收益。使用「廣告中介服務」時,廣告聯播網或服務會叫用多個廣告聯播網,找出最適合指定廣告版位的廣告。本提案將說明如何擴充 Android 版 Protected Audience API,在保護隱私的前提下導入刊登序列中介服務功能。目前,廣告聯播網提供多種方式,讓應用程式開發人員導入能處理多個廣告賣方廣告競價的中介服務:

  1. 刊登序列中介服務:應用程式開發人員會定義廣告聯播網的排序清單,通常是依據指定聯播網過往的eCPMs來排名。這份清單稱為「中介服務鏈」。應用程式開發人員的中介服務平台會按照清單上的順序呼叫廣告聯播網,藉此決定相關廣告需求來源。
  2. 程式輔助中介服務:由應用程式開發人員設定多個廣告聯播網來參與廣告商機出價。聯播網可根據其對商機價值的評估結果進行即時出價。
  3. 混合型中介服務:結合刊登序列和程式輔助中介服務的技術。

刊登序列中介服務

在刊登序列中介服務中,當廣告商機出現時,廣告 SDK 會向其後端伺服器傳送請求。伺服器不會對廣告請求傳回勝出的廣告素材,而是傳回中介服務鏈,其中包含依過往有效千次曝光出價排序的廣告聯播網清單。

刊登序列中介服務模型的圖表
圖 1.刊登序列中介服務模型。

在傳統的刊登序列模型中,廣告 SDK 會按照中介服務鏈指定的順序,呼叫各個廣告聯播網 (或其專屬的競價 SDK)。如果廣告聯播網能執行廣告請求,該廣告聯播網就會放送廣告。如果不能,系統會將請求傳送至中介服務鏈中的下一個廣告聯播網。這個程序會重複執行,直到完成請求或中介服務鏈用盡為止。

一般而言,系統會依據第一方廣告需求來源的有效千次曝光出價重新評估結果,定期重新排列中介服務鏈的順序,盡可能地提升廣告收益。

程式輔助中介服務

程式輔助中介服務 (又稱為「標頭出價」) 是另一種做法,透過參考過往的有效千次曝光出價,可決定哪些廣告聯播網有機會放送廣告請求。藉由程式輔助中介服務,供應商能改用即時出價的值找出勝出的廣告。

程式輔助中介服務模型的圖表
圖 2:程式輔助中介服務模型

混合型中介服務

有些程式輔助中介服務解決方案會採用混合刊登序列和出價機制的模式結合廣告聯播網,進一步控管廣告,同時享受利用即時有效千次曝光出價的優點,盡可能從參與競價的廣告聯播網獲取更多收益。

在混合型中介服務模型中,廣告聯播網和中介服務供應商可結合刊登序列與即時出價的元素,讓應用程式開發人員獲得更多彈性。藉由混合型模式,應用程式開發人員可以根據過往的有效千次曝光出價設定廣告聯播網,把握機會在和參與競價的聯播網執行即時出價之前放送廣告,進而爭取廣告商機。

Protected Audience 刊登序列中介服務

Android 版 Protected Audience API 可執行多個競價 (針對中介服務圖表中的每個節點執行一個競價),藉此支援刊登序列中介服務。如果競價中沒有勝出者,就會呼叫下一個聯播網競價節點,直到中介服務鏈用盡。刊登序列中介服務的程序如下:

  1. 中介服務 SDK 會從內容相關廣告伺服器的端點擷取中介服務鏈,該端點可能會傳回內容相關廣告或中介服務鏈。
  2. 如果廣告伺服器端點傳回中介服務鏈,中介服務 SDK 就會依序疊代中介服務鏈中的每個項目,並叫用參與的廣告聯播網 SDK 來執行內容相關廣告和再行銷廣告選擇程序。中介服務鏈中的每個項目,都代表廣告聯播網針對特定曝光次數、點擊次數或廣告時間長度的指定價格所提出的廣告空間購買請求。
  3. 如果中介服務鏈中所有委刊項都沒有選出勝出的廣告,中介服務 SDK 可能會執行同時考量再行銷和內容相關廣告的 Protected Audience 廣告選擇程序,選擇透過其專屬廣告聯播網放送廣告。

Protected Audience 刊登序列中介服務流程的圖表
圖 3:使用 Protected Audience API 的刊登序列中介服務。

上圖為刊登序列中介服務演算法範例,中介服務 SDK 可導入這個演算法,但無法讓第一方廣告聯播網進行最佳化作業。Protected Audience API 支援第一方廣告聯播網最佳化功能,方法是鏈結廣告選擇工作流程並回報勝出曝光次數。

AdSelection 結果

selectAds() 的傳回類型是 AdSelectionOutcome 物件。AdSelectionOutcome 包含勝出廣告的放送 URI 和 AdSelectionId,後者是識別勝出委刊項廣告素材的不透明整數。

AdSelectionOutcome {
  Uri renderUri;
  Long AdSelectionId;
}

AdSelectionId 就像指向 AdSelectionOutcome 的指標。目前,AdSelectionId 會做為 ReportImpressionInput 參數傳遞至 reportResult() 方法,方便在叫用 reportWin()reportResult() 方法時協助識別正確的廣告。

鏈結廣告選擇提案

我們建議使用 AdSelectionFromOutcomesConfig 超載 selectAds()

val config = AdSelectionFromOutcomesConfig.Builder()
        .setSeller(seller)
        .setAdSelectionIds(listOf(outcome1pAdSelectionId))
        .setSelectionSignals({"bid_floor": bidFloorOfNextNetworkInline})
        .setSelectionLogicUri(selectionLogicUri)
        .build()
adSelectionClient.selectAds(config)

如此一來,中介服務 SDK 就能比較勝出廣告的出價和下一個內嵌聯播網的出價下限。

範例 1:

範例 2:

回報勝出曝光

如果 selectAds(AdSelectionFromOutcomes) 有勝出廣告,表示該廣告在中介服務中勝出。接著,系統會使用 selectAds(AdSelectionFromOutcomes) 所提供勝出廣告的廣告選擇 ID 和對應的 AdSelectionConfig 呼叫 reportImpression

如果從 selectAds(AdSelectionConfig) 傳回任何聯播網的勝出廣告,系統會使用該廣告選擇 ID 呼叫 reportImpression,並透過該呼叫進行設定。

執行刊登序列中介服務

以下是執行刊登序列中介服務程序的作業順序。

  1. 執行第一方廣告選擇。
  2. 逐一查看中介服務鏈中的每個項目。針對每個第三方聯播網執行下列操作:
    1. 建立 AdSelectionFromOutcomeConfig,加入第一方 outcomeId 和第三方 SDK 的出價下限。
    2. 使用上一個步驟的 config 呼叫 selectAds()
    3. 若結果不為空,就會傳回廣告。
    4. 呼叫當前 SDK 廣告聯播網轉接程式的 selectAds() 方法。若結果不為空,就會傳回廣告。
  3. 如果無法從服務鏈中找到勝出廣告,就會傳回第一方廣告。

最佳做法

在進行第一方最佳化前先執行內容相關競價

再行銷需求可能會產生高額出價,在中介服務鏈中取得勝出結果。「截斷」這項程序通常用於修正再行銷目標對象名單,以啟用第一方最佳化功能。

Protected Audience API 再行銷需求僅適用於透過 Protected Audience 競價的用戶端,因此不易在伺服器端啟用第一方最佳化功能。為減少第一方最佳化的相關問題,請先執行內容相關競價,然後根據勝出的廣告結果執行第一方最佳化,如前文所述

保持精簡的裝置端中介服務鏈

為達到最佳效能,裝置端的中介服務鏈應保持精簡。當中介服務鏈的競價評估次數越多,裝置端執行作業的運算費用可能會線性增加。換句話說,隨著節點數量上升,運算週期需求量和延遲時間都會增加。因此,當您將節點傳遞至裝置端中介服務進行評估時,請考量延遲時間對收益的影響。

其他注意事項

對於多個廣告版位的中介服務,Protected Audience API 目前未提供完善的解決方案。每個廣告版位都必須個別處理。

Protected Audience Mediation API 支援刊登序列中介服務和有限的程式輔助中介服務。日後,我們會提供更多支援其他程式輔助中介服務用途的詳細資訊。

由於 Protected Audience 廣告選擇程序會在擷取內容相關廣告後執行,叫用 Protected Audience API 可能會影響廣告請求的端對端延遲時間。