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

提供意見

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

  1. 刊登序列中介服務:應用程式開發人員會定義廣告聯播網的排序清單,通常是依照指定聯播網過去的有效千次曝光出價來排序。這份清單稱為中介服務鏈。應用程式開發人員的中介服務平台會按照清單上的順序呼叫廣告聯播網,藉此決定適切的廣告需求來源。
  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) 及對應的 AdSelectionConfig 勝出廣告的廣告選擇 ID 呼叫 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 可能會影響廣告請求的端對端延遲時間。