Android Privacy Sandbox 開發人員預覽版隆重登場!瞭解如何開始使用,並繼續提供意見回饋

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

Stay organized with collections Save and categorize content based on your preferences.

提供意見

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

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

刊登序列中介服務

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

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

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

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

程式輔助中介服務

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

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

混合型中介服務

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

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

FLEDGE 刊登序列中介服務

Android 版 FLEDGE 可透過多個 FLEDGE 競價分別支援中介服務圖表中的個別節點,藉此支援刊登序列中介服務。如果競價中沒有勝出者,系統就會呼叫下一個聯播網競價節點,直到中介服務鏈用盡。刊登序列中介服務的流程如下:

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

FLEDGE 刊登序列中介服務流程的圖表
圖 3:採用 FLEDGE 的刊登序列中介服務

上圖為中介服務 SDK 可導入的刊登序列中介服務演算法範例,但不包含讓第一方廣告聯播網進行最佳化的功能。FLEDGE 支援第一方廣告聯播網最佳化功能的方式,是透過鏈結廣告選擇工作流程及回報勝出曝光次數。

AdSelection 結果

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

AdSelectionOutcome {
  Uri renderUri;
  Long AdSelectionId;
}

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

鏈結廣告選擇提案

我們提議擴充 RunAdSelection,以考量先前廣告選擇的執行結果,透過 AdSelectionOutcome 物件選出勝出的廣告。如此一來,廣告聯播網就能執行中介服務,將來自多個廣告聯播網的內容相關和再行銷廣告納入考量。

ChainedAdSelections 會新增為 AdSelectionConfig. ChainedAdSelections 的選用參數,且其中可包含先前在中介服務鏈中叫用 runAdSelection() 方法而取得的廣告選擇結果清單。在以下範例中,SDK 會使用裝置上 SDK A 和 SDK B 的結果執行 AdSelection。SDK A 和 B 都會透過各自的 runAdSelection() 呼叫,將 AdSelectionOutcome 明確分享給執行鏈結廣告選擇程序的 SDK。

AdSelectionConfig myAdSelectionConfig = new AdSelectionConfig {
    Seller = "example-ssp1.com",
    DecisionLogicURL = Uri.parse("https://..."),
    CustomAudienceBuyerList = Arrays.asList("example-dsp1.com","example-dsp2.com"),
    AdSelectionSignals = "{"min_price": 10,"auction_attempts": 3}"
    SellerSignals = "{"seller_type": "news", "content_category": "sports","mature_ads_accepted" :"false"}"
    PerBuyerSignals = "{"example-dsp1.com": {"key1" : "value1"},
                        "example-dsp2.com": {"key1" : "value1", "key2" : "value2"}"
    ChainedAdSelections = {network_a_selection_outcome, network_b_selection_outcome}
};

// Invoke ad services API to initiate ad selection workflow.
AdSelectionOutcome winningAd = runAdSelection(myAdSelectionConfig);

廣告選擇鏈結的圖表
圖 4:使用 RunAdSelection() 的鏈結廣告選擇程序

請注意,此 runAdSelection() 呼叫的回傳值會是另一個 AdSelectionOutcome 物件。

  • 如未選出任何廣告,系統會傳回 null 值。
  • 如果 ChainedAdSelections 參照的廣告都沒有勝出,系統會傳回新的 AdSelectionOutcome 物件。
  • 如果在 AdSelection 中傳遞的其中一個結果獲選為廣告,系統就會傳回該結果。

回報勝出曝光次數

如果鏈結廣告選擇程序沒有產生勝出廣告,系統就不會回報任何勝出曝光次數。

如果傳入 AdSelectionConfigAdSelectionOutcome 物件獲選,則執行鏈結廣告選擇程序的 SDK 會與勝出的廣告 SDK 進行通訊,以取得結果。之後,勝出的廣告 SDK 就能叫用勝出曝光次數報表,就像執行自己的 AdSelection 一樣。這可確保回報結果時,系統會使用勝出廣告的 SDK 決策邏輯 JavaScript。在這種情況下,執行鏈結廣告選擇程序的 SDK 可以回報哪一個廣告 SDK 擁有勝出曝光次數。

如果 AdSelectionOutcome 的結果皆未獲選,執行鏈結廣告選擇程序的 SDK 會叫用自己的勝出曝光次數報表。

執行刊登序列中介服務

如前文所述,中介服務 SDK 可以鏈結 AdSelectionOutcome 例項,以便執行刊登序列中介服務,並為第一方廣告聯播網進行最佳化。流程摘要如下:

  1. 中介服務 SDK 使用內容相關廣告請求,從中介服務伺服器取得中介服務鏈。
  2. 中介服務 SDK 同時考量再行銷和內容相關廣告,以執行廣告選擇程序。
  3. 中介服務 SDK 執行競價時,會考量第一方廣告選擇程序的結果,以及中介服務鏈中第一個符合資格項目過去的有效千次曝光出價。

  4. 選出廣告後,系統會決定勝出的廣告,並結束這個程序。

  5. 如未選出任何廣告,中介服務 SDK 會選擇中介服務鏈中第一個符合資格的項目,並叫用相對應的 SDK 來執行內容相關和再行銷廣告選擇程序。

  6. 如果選出廣告,系統就會放送廣告,並結束這個程序。

  7. 如未選出廣告,系統會考量中介服務鏈中的下一個項目,然後執行步驟 3。

  8. 如果中介服務鏈中沒有其他項目,中介服務 SDK 會像步驟 2 一樣,在執行 FLEDGE 廣告選擇程序時,同時考量再行銷和內容相關廣告,然後放送第一方廣告。

FLEDGE 刊登序列中介服務流程
圖 5:FLEDGE 刊登序列中介服務流程

最佳做法

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

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

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

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

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

其他注意事項

FLEDGE 中介服務的提案仍在開發階段,歡迎提供意見回饋

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

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

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