Jako kupujący reklamy (platformy DSP i reklamodawcy) możesz być zainteresowany udziałem w aukcji reklam z interfejsem Protected Audience API na stronie wydawcy, aby kierować reklamy na grupę zainteresowań zdefiniowaną na stronie reklamodawcy. Uczestnicząc w aukcji Protected Audience, możesz docierać do zidentyfikowanych klientów w innych witrynach w sposób zapewniający ochronę prywatności.
W aukcji Protected Audience podajesz logikę generowania stawki, a przeglądarka oblicza stawkę na podstawie tej logiki. W przeciwieństwie do innych architektur aukcji, w których przesyłasz stawkę bezpośrednio, a nie logikę.
Logikę generowania stawek podajesz w funkcji JavaScript generateBid(), a plik jest hostowany na Twoim serwerze. Gdy dodasz użytkownika do grupy zainteresowań, lokalizacja tego pliku zostanie przekazana do konfiguracji grupy zainteresowań jako biddingLogicUrl.
Podczas aukcji przeglądarka pobiera logikę określania stawek podaną w polu biddingLogicUrl i wykonuje funkcję generateBid() dla każdej grupy zainteresowań w bezpiecznym, odizolowanym środowisku, które ma ograniczoną komunikację z kontekstem zewnętrznym. Gdy funkcja generateBid() jest wykonywana, przeglądarka przekazuje do niej sygnały jako argumenty. Sygnały te zawierają różne informacje z różnych źródeł, np. dane własne wydawcy, dane sprzedawcy, dane w czasie rzeczywistym i inne. Możesz używać tych sygnałów do obliczania stawki, a wartość jest zwracana przez wywołanie generateBid(). Po przesłaniu stawek przeglądarka wykona logikę oceny sprzedawcy dla każdej stawki, aby obliczyć wynik atrakcyjności sprzedawcy.
generateBid()
Poniżej znajdziesz opis argumentów funkcji generateBid() i struktury stawki zwracanej przez tę funkcję:
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)
};
}
Argumenty
generateBid() przyjmuje te argumenty:
| Argument | Rola |
|---|---|
|
Obiekt przekazywany przez kupującego reklamę. Grupę zainteresowań można zaktualizować za pomocą dailyUpdateUrl. |
|
Właściwość argumentu auction config przekazywanego do funkcji navigator.runAdAuction() przez sprzedawcę. Zawiera on informacje o kontekście strony (np. rozmiar reklamy i identyfikator wydawcy), typie aukcji (pierwszej lub drugiej ceny) i inne metadane. |
|
Właściwość argumentu auction config przekazywanego przez sprzedawcę. Może to dostarczać sygnały kontekstowe z serwera kupującego dotyczące strony, jeśli sprzedawca jest platformą SSP, która wykonuje wywołanie określania stawek w czasie rzeczywistym do serwerów kupującego i przekazuje odpowiedź z powrotem, lub jeśli strona wydawcy kontaktuje się bezpośrednio z serwerem kupującego. W takim przypadku kupujący może chcieć sprawdzić w generateBid() podpis kryptograficzny tych sygnałów, aby chronić się przed manipulacją. |
|
Obiekt, którego klucze to trustedBiddingSignalsKeys dla grupy zainteresowań, a wartości są zwracane w żądaniu trustedBiddingSignals. |
|
Obiekt utworzony przez przeglądarkę, który może zawierać informacje o kontekście strony (np. hostname bieżącej strony, które sprzedawca mógłby sfałszować) i dane dotyczące samej grupy zainteresowań (np. zapis informacji o tym, kiedy grupa wygrała wcześniej aukcję, aby umożliwić ograniczenie częstotliwości na urządzeniu). |
|
Sygnały pochodzące od konkretnego sprzedawcy, w przeciwieństwie do sygnałów auctionSignals i sellerSignals, które mogą pochodzić od dowolnego uczestnika obecnego w kontekście, w którym wykonywana jest funkcja runAdAuction. |
Sygnały przeglądarki
Obiekt browserSignals ma te właściwości:
{
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
}
| Właściwość | Opis |
|---|---|
|
Nazwa hosta, z którego wykonano połączenie runAdAuction(). |
|
Sprzedawca, do którego przesłano stawkę. W przypadku aukcji komponentów ta wartość to sprzedawca komponentów. |
|
Sprzedawca najwyższego poziomu na aukcji komponentów. Występuje tylko na aukcji komponentów. |
|
Właściwość requestedSize zaleca rozmiar ramki na potrzeby aukcji. Sprzedawca ustawia żądany rozmiar w konfiguracji aukcji, a wartość staje się dostępna dla oferentów w parametrze generateBid(). Biorący udział w aukcji reklamodawcy mogą wybrać inny rozmiar treści reklamy, a wynikowy rozmiar zostanie wizualnie przeskalowany, aby zmieścić się w kontenerze elementu. |
|
Pole joinCount to liczba przypadków, w których to urządzenie dołączyło do tej grupy zainteresowań w ciągu ostatnich 30 dni, gdy grupa zainteresowań była przechowywana w sposób ciągły (tzn. nie było przerw w przechowywaniu grupy zainteresowań na urządzeniu z powodu opuszczenia jej lub wygaśnięcia członkostwa). |
|
Pole recency to czas (w minutach) od momentu dołączenia tego urządzenia do tej grupy zainteresowań do chwili obecnej. |
|
Liczba stawek przesłanych przez grupę zainteresowań. |
|
Pole prevWinMs zawiera zwycięskie reklamy grupy zainteresowań i czas od poprzednich zwycięstw w milisekundach. Pamiętaj, że obiekt reklamy zawiera tylko pola renderURL i metadane. |
|
obiekt WebAssembly.Module na podstawie biddingWasmHelperURL grupy zainteresowań. |
|
Wartość Data-Version z odpowiedzi usługi klucz/wartość kupującego. |
|
Maksymalna liczba komponentów reklamy, które mogą zostać zwrócone: generateBid() |
Obliczanie stawki
Aby obliczyć wartość stawki, kod w generateBid() może używać właściwości parametrów funkcji.
Na przykład:
function generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals) {
return {
// ...
bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
// ...
}
}
Zwracanie stawki
generateBid() zwraca obiekt z tymi właściwościami:
| Właściwość | Rola |
|---|---|
ad |
Dowolne metadane dotyczące reklamy, np. informacje, które sprzedawca chce uzyskać na temat tej stawki lub kreacji. Sprzedawca wykorzystuje te informacje w swojej logice aukcji i podejmowania decyzji. |
adCost |
Wartość liczbowa używana do przekazywania kosztu kliknięcia lub konwersji reklamodawcy raportującego z funkcji generateBid do funkcji reportWin. Precyzja tej liczby jest ograniczona do 8-bitowej mantysy i 8-bitowego wykładnika, a zaokrąglanie odbywa się stochastycznie. |
adComponents |
Opcjonalna lista maksymalnie 20 komponentów reklam składających się z wielu elementów, pobranych z właściwości adComponents argumentu interestGroup przekazanego do funkcji navigator.joinAdInterestGroup(). |
allowComponentAuction |
Wartość logiczna wskazująca, czy tej stawki można używać w aukcji komponentów. Jeśli nie zostanie podana, domyślnie przyjmuje się wartość „false”. |
bid |
Stawka w postaci liczby, która weźmie udział w aukcji. Sprzedawca musi mieć możliwość porównania stawek różnych kupujących, dlatego stawki muszą być podane w wybranej przez niego jednostce (np. „USD za tysiąc”). Jeśli stawka wynosi zero lub jest ujemna, ta grupa zainteresowań w ogóle nie weźmie udziału w aukcji sprzedawcy. Dzięki temu mechanizmowi kupujący może wdrożyć dowolne reguły reklamodawcy dotyczące miejsc, w których mogą lub nie mogą się wyświetlać jego reklamy. |
bidCurrency |
Waluta stawki używana do sprawdzania waluty. |
render |
Słownik opisujący kreację, która powinna być wyświetlana, jeśli ta stawka wygra aukcję. Obejmuje to:
|
|
Liczba całkowita z zakresu 0–4095 (12 bitów) przekazywana do funkcji reportWin() z dodaniem szumu zgodnie z opisem w schemacie dodawania szumu i grupowania. Nieprawidłowe wartości, takie jak wartości ujemne, nieskończone i NaN, będą ignorowane i nie będą przekazywane. Przekazywanych będzie tylko 12 najmniej znaczących bitów. Kupujący może używać sygnałów dostępnych w funkcji generateBid(), w tym danych własnych kupującego zebranych w momencie tworzenia grupy zainteresowań w userBiddingSignals, aby uzyskać pewną wartość, która jest przekazywana do funkcji raportowania wygranych kupującego w celu umożliwienia trenowania modelu ML. |