如果您是廣告買方 (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)、競價類型 (最高價或次高價) 和其他中繼資料的相關資訊。 |
|
賣方傳遞的競價設定引數屬性。如此一來,如果賣方是「賣方平台」,就會向買方伺服器執行即時出價呼叫並傳遞回應,或是發布商網頁直接與買方伺服器聯絡,因而提供來自買方伺服器的網頁比對內容訊號。如果是的話,買家最好檢查 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 物件。 |
|
買方鍵/值服務回應的資料-Version 值。 |
|
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 |
選用清單,針對由多個部分組成的廣告,根據傳送至 navigator.joinAdInterestGroup() 的興趣群組引數的 adComponents 屬性擷取最多 20 個元件。 |
allowComponentAuction |
布林值,表示這個出價是否可用於元件競價。如未指定,預設值為「false」。 |
bid |
將輸入競價的數字出價。賣方必須在比較不同買方的出價,因此出價必須採用某些賣方選擇的單位 (例如「每千美元」)。如果出價為零或負數,這個興趣群組就完全不會參與賣方的競價。買方可以運用這個機制,針對廣告是否能夠顯示的位置執行任何廣告客戶規則。 |
bidCurrency |
出價的貨幣,用於貨幣檢查。 |
render |
一個字典,說明當此出價贏得競價時應顯示的廣告素材。包括:
|
|
傳遞至 reportWin() 的 0 到 4095 整數 (12 位元),包含雜訊,如雜訊和特徵分塊配置中所述。系統會忽略並將無效值 (例如負數、無限值和 NaN 值) 傳遞。系統只會傳送最低的 12 位元。買家可使用 generateBid() 函式中的信號 (包括在 userBiddingSignals 中建立興趣群組時擷取的第一方買家資料),衍生一些值並傳遞至買方的勝出報表函式,藉此啟用機器學習模型訓練。 |