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śloną w polu biddingLogicUrl i wykonuje funkcję generateBid() dla każdej grupy zainteresowań w bezpiecznym, odizolowanym środowisku, które ma ograniczoną możliwość komunikacji 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 (pierwsza lub druga cena) i inne metadane. |
|
Właściwość argumentu auction config przekazanego przez sprzedawcę. Może to dostarczać sygnały kontekstowe z serwera kupującego dotyczące strony, jeśli sprzedawca jest 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 sprawdzić podpis kryptograficzny tych sygnałów w generateBid(), 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órą 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 wyświetlania na urządzeniu). |
|
Sygnały pochodzące od konkretnego sprzedawcy, w przeciwieństwie do 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 generateBid(). Uczestnicy aukcji 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, pobrana 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 dodawaniem szumu zgodnie z opisem w schemacie dodawania szumu i grupowania. Nieprawidłowe wartości, takie jak wartości ujemne, nieskończone i NaN, zostaną zignorowane i nie zostaną przekazane. Przekazywane 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. |