身為廣告買方 (DSP 和廣告客戶),您可能有興趣參與發布商網站上的 Protected Audience 廣告競價,以便將廣告指定到您在廣告客戶網站上定義的興趣群組。參加 Protected Audience 競價,您就能在其他網站上以保護隱私權的方式觸及其他網站上的理想客戶。
在 Protected Audience 競價中,您需要提供產生出價的邏輯,瀏覽器就會使用該邏輯計算出價。這與其他競價架構不同,您可以直接提交出價,而不是提供邏輯。
您在 generateBid()
JavaScript 函式中提供出價產生邏輯,而檔案是由您的伺服器代管。當您將使用者加入興趣群組時,系統會將這個檔案的位置以 biddingLogicUrl
的形式傳入興趣群組設定中。
競價期間,瀏覽器會擷取 biddingLogicUrl
欄位中指定的出價邏輯,然後在安全的獨立環境中為每個興趣群組執行 generateBid()
函式,該環境限制與外部環境之間的通訊有限。執行 generateBid()
時,瀏覽器會將信號做為引數傳遞至函式。這些信號內含不同來源的各種資訊,例如發布商的第一方資料、賣家資料、即時資料等。您可以運用這些信號來計算出價,而 generateBid()
呼叫會傳回值。提交出價後,瀏覽器會對每筆出價執行賣方的評分邏輯,以計算賣方的理想能力分數。
generateBid()
以下說明 generateBid()
函式的引數和該函式傳回的出價結構:
generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals, directFromSellerSignals) {
return {
ad: adObject,
adCost: optionalAdCost,
bid: bidValue,
bidCurrency: 'USD',
render: {
url: renderURL,
width: renderWidth,
height: renderHeight
},
adComponents: [
{url: adComponent1, width: componentWidth1, height: componentHeight1},
{url: adComponent2, width: componentWidth2, height: componentHeight2},
// ...
],
allowComponentAuction: false,
modelingSignals: 123 // 0-4095 integer (12-bits)
};
}
引數
generateBid()
會使用下列引數:
引數 | 角色 |
---|---|
|
廣告買方傳遞至這個物件。興趣群組可能會更新為 dailyUpdateUrl 。 |
|
賣方傳遞至 navigator.runAdAuction() 的競價設定引數屬性。包括網頁內容 (例如廣告大小和發布商 ID)、競價類型 (最高價得標競價或次高價) 和其他中繼資料的相關資訊。 |
|
賣方傳遞的競價設定引數屬性。如果賣方是SSP,且會向買方伺服器執行即時出價呼叫並傳遞回應,或是如果發布商頁面直接與買方伺服器聯絡,發布商伺服器就會提供與網頁有關的內容信號。如果是的話,買方可能會想要在 generateBid() 中檢查這些信號的加密編譯簽章,以防範竄改行為。 |
|
興趣群組的鍵是 trustedBiddingSignalsKeys ,且 trustedBiddingSignals 要求會傳回其值的物件。 |
|
瀏覽器建構的物件,可能包括網頁環境相關資訊 (例如目前網頁的 hostname ,賣方可能會以假冒的方式假造),以及興趣群組本身的資料 (例如群組先前贏得競價的記錄,以允許裝置端展示頻率上限)。 |
|
保證來自特定賣方的信號,不像 auctionSignals 和 sellerSignals 一樣,可能是來自執行 runAdAuction 時任何參與者的信號。 |
瀏覽器信號
browserSignals
物件的屬性如下:
{
topWindowHostname: 'publisher.example',
seller: 'https://ssp.example',
topLevelSeller: 'https://www.top-level-ssp.com',
requestedSize: {width: 100, height: 200}, /* if specified in auction config */
joinCount: 3,
recency: 3600000,
bidCount: 17,
prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
wasmHelper: ...
dataVersion: 1,
adComponentsLimit: 40
}
屬性 | 說明 |
---|---|
|
進行 runAdAuction() 呼叫的主機名稱。 |
|
收到出價的賣方。在元件競價中,這個值是元件賣家。 |
|
參與元件競價的頂層賣家,並僅參與組成競價。 |
|
requestedSize 屬性會建議競價中的影格大小。賣方在競價設定中設定了請求的大小,這個值就會提供給 generateBid() 中的出價方。參與競價的出價方可能會為廣告挑選不同的內容大小,然後配合元素的容器大小,自動調整成適當的大小。 |
|
「joinCount 」欄位是裝置在過去 30 天內持續儲存興趣群組時加入這個興趣群組的次數 (也就是說,因退出或成員資格過期,裝置儲存的興趣群組不會有落差)。 |
|
recency 欄位是指從這部裝置加入這個興趣群組到現在為止的持續時間 (以分鐘為單位) |
|
興趣群組提交出價的次數。 |
|
prevWinMs 欄位包含興趣群組勝出的廣告,以及自上次勝出廣告的時間 (以毫秒為單位)。請注意,這裡的廣告物件只包含 renderURL 和中繼資料欄位。 |
|
以興趣群組的 biddingWasmHelperURL 為基礎的 WebAssembly.Module 物件。 |
|
買方鍵/值服務回應中的資料-版本值。 |
|
generateBid() 可傳回的廣告元件數量上限 |
計算出價
如要計算出價值,generateBid()
中的程式碼可以使用函式參數的屬性。
例如:
function generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals) {
return {
// ...
bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
// ...
}
}
傳回出價
generateBid()
會傳回包含下列屬性的物件:
屬性 | 角色 |
---|---|
ad |
廣告的任意中繼資料,例如賣方預期能夠瞭解這個出價或廣告素材的資訊。賣方會在競價和決策邏輯中使用這項資訊。 |
adCost |
以數值表示,將廣告客戶點擊或轉換費用從 generateBid 傳送至 reportWin。這個數字的精確度僅限於 8 位元的 mantisa 和 8 位元指數,所有四捨五入以逐次計算。 |
adComponents |
選用清單,最多可包含由多個部分組合的廣告元件 (最多 20 個),取自傳送至 navigator.joinAdInterestGroup() 的興趣群組引數的 adComponents 屬性。 |
allowComponentAuction |
布林值,指出此出價是否能用於元件競價。預設值為「false」。。 |
bid |
參加競價的數值出價。賣方必須能夠比較不同買方的出價,因此出價必須採用賣方所選單位 (例如「每千美元」)。如果出價為零或負值,這個興趣群組完全不會參與賣方的競價。透過這個機制,買方就可以採用任何廣告客戶規則,決定廣告能否顯示的位置。 |
bidCurrency |
出價的貨幣,用於currency-checking。 |
render |
字典,說明在這次出價贏得競價時,應顯示的廣告素材。這類內容符合以下敘述:
|
|
傳遞至 reportWin() 的 0 到 4095 個整數 (12 位元),加上雜訊,如雜訊和分組配置中所述。系統會忽略無效值 (例如負數、無限值和 NaN 值),也不會傳遞。系統只會傳遞最低的 12 位元。買家可以使用 generateBid() 函式中可用的信號 (包括在 userBiddingSignals 建立興趣群組時擷取的第一方買家資料),導出某個值並傳遞至買方的勝出報表函式,以便進行機器學習模型訓練。 |