Gdy aplikacja przetworzy żądanie stawki z Google, musi utworzyć i wysłać odpowiedź. Z tego przewodnika dowiesz się, jak zakodować aplikację, aby utworzyć odpowiedź.
Tworzenie wiadomości Protobuf BidResponse
Program Authorized Buyers wysyła BidRequest
jako treść wiadomości HTTP POST
. Jeśli punkt końcowy określania stawek jest skonfigurowany pod kątem używania formatu Protobuf, aplikacja musi wysłać odpowiedź z nagłówkiem Content-Type
ustawionym na application/octet-stream
oraz z tekstem wiadomości zawierającym serializowany bufor protokołu. Bufor protokołu to wiadomość BidResponse
zgodnie z definicją w dokumentacji openrtb.proto
. Aplikacja musi zwracać możliwą do przeanalizowania wartość BidResponse
w odpowiedzi na każde BidRequest
. Przekroczenie limitu czasu i odpowiedzi, których nie można przeanalizować, są uznawane za błędy, a Google ogranicza udział licytujących o wysokim współczynniku błędów.
Jeśli nie chcesz ustalać stawki za wyświetlenie, musisz zwrócić pustą odpowiedź HTTP 204. Dane openrtb.proto
możesz pobrać na stronie danych referencyjnych.
Identyfikator kreacji
Twój element BidResponse
określa kreację za pomocą pola BidResponse.seatbid.bid.crid
(limit 64 bajtów). Nawet podobne kreacje muszą mieć w tym polu unikalne wartości, jeśli różnią się między sobą pod względem jakichkolwiek istotnych cech, takich jak rozmiar, zadeklarowany URL, atrybuty kreacji czy typ dostawcy. Inaczej mówiąc, musisz nadać różne identyfikatory kreacji dowolnym 2 reklamami, które:
- wyglądać lub zachowywać się inaczej;
- Renderowanie do różnych obrazów.
- renderowanie za pomocą różnych metod (np. jedna reklama składa się z obrazu, a druga z filmu);
Podczas projektowania aplikacji należy wybrać systematyczny sposób generowania identyfikatorów, który będzie odpowiedni dla typu przesyłanych komponentów.
Oznaczenie reklamy
Google zaleca deklarowanie atrybutów kreacji, aby opisać cechy reklamy i jej kierowanie, za pomocą kombinacji atrybutów BidResponse.seatbid.bid.apis
i BidResponse.seatbid.bid.attr
lub rozszerzenia BidResponse.seatbid.bid.ext.attribute
. Poniżej znajdziesz opis sposobu deklarowania atrybutów:
VPAID
Ustaw wartośćBidResponse.seatbid.bid.apis
naVPAID_1
lubVPAID_2
. W przypadku formatu JSON możesz ustawić odpowiednio wartości1
lub2
.MRAID
Ustaw wartośćBidResponse.seatbid.bid.apis
naMRAID_1
lub3
w przypadku formatu JSON.SIZELESS
Ustaw wartośćBidResponse.seatbid.bid.attr
naRESPONSIVE
lub18
w przypadku formatu JSON.PLAYABLE
W tym celu należy ustawić wartośćBidResponse.seatbid.bid.attr
naUSER_INTERACTIVE
lub13
w przypadku formatu JSON.
Więcej informacji o tym, jak uzyskać opinię na temat wykrytych właściwości kreacji, znajdziesz w zasobach dotyczących kreacji.
Pola Otwartego ustalania stawek
Odpowiedzi na żądanie reklamy wysyłane przez licytujących giełd i sieci uczestniczących w Otwartym ustalaniu stawek są podobne do odpowiedzi licytujących Authorized Buyers, którzy korzystają ze standardowego określania stawek w czasie rzeczywistym. Klienci korzystający z otwartego ustalania stawek mogą podać niewielką liczbę dodatkowych pól, a kilka dotychczasowych pól może mieć inne zastosowanie. Są to m.in.:
OpenRTB | Authorized Buyers. | Szczegóły |
---|---|---|
BidResponse.imp[].pmp.deals[].id |
BidResponse.ad[].adslot[].exchange_deal_id |
Identyfikator umowy z przestrzeni nazw giełdy powiązany z tą stawką i przekazywany wydawcom. |
BidResponse.seatbid[].bid[].ext.exchange_deal_type |
BidResponse.ad[].adslot[].exchange_deal_type |
Typ umowy przekazywany wydawcom, który wpływa na sposób traktowania umowy w aukcji. |
BidResponse.seatbid[].bid[].ext.third_party_buyer_token |
BidResponse.ad[].adslot[].third_party_buyer_token |
Token służący do identyfikowania informacji o kupującym, jeśli giełda jako uczestnik Otwartego ustalania stawek jest pośrednikiem. Wartość tę uzyskuje się od zewnętrznego kupującego i należy ją przekazać Google w niezmienionej postaci w odpowiedzi na pytanie o stawkę. |
Rekomendacje
- Włącz na serwerach trwałe połączenia HTTPS (zwane też „keep-alive” lub „ponownym użyciem połączenia”). Ustaw limit czasu na co najmniej 10 sekund – w wielu przypadkach korzystne są wyższe wartości. Google sprawdza to podczas początkowych testów opóźnień aplikacji, ponieważ program Authorized Buyers wysyła żądania z dużą częstotliwością i musi unikać opóźnień związanych z ustalaniem osobnego połączenia TCP dla każdego żądania.
Dodaj opcjonalny link monitorujący wyświetlenia, aby śledzić, kiedy wyświetlenie jest renderowane, a nie kiedy licytujący wygrywa. Ze względu na różnicę między wygranymi a wyrenderowaniami uzyskujesz dokładniejsze statystyki śledzenia.
- Upewnij się, że kod licytującego nie jest zależny od wycofanych pól, które mogą powodować błędy w ustalaniu stawek.
- Dodaj właściwości
BidResponse.seatbid.bid.w
iBidResponse.seatbid.bid.h
do plikuBidResponse
.BidResponse
do żądania zawierającego różne rozmiary reklam musi zawierać te pola, w przeciwnym razie zostanie wykluczone z aukcji. - Ogranicz rozmiar odpowiedzi do 8 K. Bardzo duże odpowiedzi mogą zwiększać czas oczekiwania na odpowiedź z sieci i powodować przekroczenie czasu oczekiwania.
- Postępuj zgodnie z wytycznymi dotyczącymi stawek za zasoby reklamowe na iOS, które wymagają atrybucji SKAdNetwork.
Przykładowa odpowiedź na pytanie o stawkę
Poniższe przykłady przedstawiają żądania Protobuf i JSON w formie zrozumiałej dla człowieka.
Pokaż przykład
Zserializowana odpowiedźid: "9u09jhHJXT2fbaDZ9V1x66" seatbid { bid { id: "37Td8Gbw1Lr8161bA4B" impid: "1" price: 0.075 adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adomain: "google.com" adomain: "google.com" crid: "test_creative_id_156129" cat: "IAB22" w: 320 h: 50 language: "es" slotinpod: SLOT_POSITION_POD_ANY cattax: IAB_CONTENT_1_0 [com.google.doubleclick.bid] { impression_tracking_url: "https://test.com/impression?id=123456" exchange_deal_type: OPEN_AUCTION event_notification_token { payload: "token" } billing_id: 61560909063 } } seat: "4778:9251:780612" } cur: "USD"
Pokaż przykład
{ "id": "9u09jhHJXT2fbaDZ9V1x66", "seatbid": [ { "bid": [ { "id": "37Td8Gbw1Lr8161bA4B", "impid": "1", "price": 0.075, "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", "adomain": [ "google.com", "google.com" ], "crid": "test_creative_id_156129", "cat": [ "IAB22" ], "w": 320, "h": 50, "language": "es", "slotinpod": 0, "cattax": 1, "ext": { "impression_tracking_url": [ "https://test.com/impression?id=123456" ], "exchange_deal_type": 0, "event_notification_token": { "payload": "token" }, "billing_id": "61560909063" } } ], "seat": "4778:9251:780612" } ], "cur": "USD" }
Pokaż przykład
Zserializowana odpowiedźad { html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adslot { id: 1 max_cpm_micros: 226722 billing_id: 78614473201 currency: "USD" } click_through_url: "google.com" attribute: 105 buyer_creative_id: "test_creative_id_827359" width: 336 height: 280 impression_tracking_url: "https://test.com/imp?id=123456" event_notification_token: "token" }
Ważne: komunikaty Protobuf przedstawione w próbkach są tu reprezentowane jako tekst zrozumiały dla człowieka. Nie jest to jednak sposób, w jaki wiadomości są wysyłane przez sieć. W przypadku korzystania z formatu Protobuf Google lub OpenRTB akceptowane są tylko serializowane wiadomości BidResponse.
Możesz utworzyć i zserializować wiadomość BidResponse
, korzystając z tego kodu C++:
BidResponse bid_response; // fill in bid response with bid information string post_response; if (bid_response.SerializeToString(&post_response)) { // respond to the POST with post_response as the content } else { // return an error to the POST }
Określanie kreacji
Odpowiedź na stawkę określa kreację, która zostanie wyświetlona, jeśli stawka wygra. Twoja stawka musi zawierać jeden z obsługiwanych formatów reklam (AMP, wideo, natywny). W tym przykładzie kreację określamy za pomocą pola html_snippet
.
Możesz też określić kreację za pomocą jednego z tych pól, w zależności od formatu reklamy:
- Reklama renderowana przez pakiet SDK
BidResponse.seatbid.bid.ext.sdk_rendered_ad
- AMP
BidResponse.seatbid.bid.amp_ad_url
- Film
BidResponse.seatbid.bid.adm
- Reklama natywna
BidResponse.seatbid.bid.adm_native
Podaj reklamę hostowaną na własnych serwerach, używając fragmentu kodu HTML w polu BidResponse.seatbid.bid.adm
. Fragment kodu jest umieszczony w elemencie iframe na stronie internetowej, co powoduje, że reklama jest pobierana i renderowana podczas wczytywania strony. Musisz utworzyć fragment kodu HTML, aby reklama (baner lub reklama pełnoekranowa) była prawidłowo renderowana w elemencie iframe i w odpowiednim rozmiarze do miejsca na reklamę, na które bierzesz udział w aukcji.
Dodatkowo rozmiar reklamy zadeklarowany w odpowiedzi na stawkę musi odpowiadać dokładnie jednej z kombinacji rozmiarów w pytaniu o stawkę, gdy:
- Reklama jest zwykłym banerem (nie wideo, natywnym ani pełnoekranowym).
- Licytujący zadeklarował rozmiar w odpowiedzi na pytanie o stawkę. Zadeklarowanie rozmiaru jest wymagane, gdy w żądaniu występuje więcej niż 1 rozmiar.
- Wyjątkiem są reklamy pełnoekranowe. W przypadku reklam pełnoekranowych szerokość musi wynosić co najmniej 50% szerokości ekranu, a wysokość co najmniej 40% wysokości ekranu.
Kreację fragmentu kodu HTML możesz określić, używając dowolnego prawidłowego kodu HTML, który prawidłowo się renderuje, ale pamiętaj o ograniczeniach dotyczących pola crid
w sekcji Tworzenie wiadomości BidResponse.
Jednym z zastosować jest umieszczanie dodatkowych informacji w argumentach adresów URL pobieranych z Twoich serwerów w ramach renderowania reklamy. Dzięki temu możesz przekazać na własne serwery dowolne dane o wyświetleniu.
Większość zasad dotyczących fragmentów kodu HTML zwracanych w odpowiedziach na żądanie stawki jest takich samych jak w przypadku reklam innych firm. Więcej informacji znajdziesz w wymaganiach dotyczących wyświetlania reklam firm zewnętrznych, wymaganiach dotyczących wyświetlania reklam firm zewnętrznych i deklarowaniu adresów URL w reklamach.
Określanie makr
Makra to sformatowany tekst umieszczony w niektórych polach odpowiedzi na ofertę, zawierający adresy URL, które w momencie wyświetlania reklamy są zastępowane odpowiednimi wartościami. Jeśli na przykład zwycięska stawka zawierała makro AUCTION_PRICE
w kreacji fragmentu kodu HTML dołączonej do stawki, makro zostanie zastąpione wartością, którą możesz odszyfrować, aby określić kwotę, jaką zapłaciłeś/zapłaciłaś za wyświetlenie w aukcji.
Makra możesz uwzględniać w tych polach:
-
BidResponse.seatbid.bid.adm
Makra są obsługiwane w przypadku fragmentów kodu HTML, formatów natywnych, adresów URL wideo i formatu XML VAST.
-
BidResponse.seatbid.bid.adm_native.eventtrackers.url
-
BidResponse.seatbid.bid.adm_native.imptrackers
-
BidResponse.seatbid.bid.ext.amp_ad_url
W przypadku kreacji AMP obsługiwane są tylko makra
WINNING_PRICE
iWINNING_PRICE_ESC
specyficzne dla Google. -
BidResponse.seatbid.bid.burl
-
BidResponse.seatbid.bid.ext.impression_tracking_url
Użyj tego zamiast
BidResponse.seatbid.bid.burl
, jeśli potrzebujesz więcej niż 1 adresu URL do płatności.
Możesz np. umieścić makro w fragmentie kodu HTML, umieszczając w adresie URL używanym do pobierania kreacji makro ${MACRO}
, gdzie MACRO
to jedno z obsługiwanych makro opisanych w specyfikacji OpenRTB.
Makra Google RTB
Google obsługuje dodatkowe makropolecenia oprócz tych, które znajdują się w specyfikacji OpenRTB. Są one sformatowane inaczej i będą wyglądać tak:%%MACRO%%
, jeśli zostaną umieszczone w adresie URL. Tabela poniżej opisuje te makro:
Makro | Opis |
---|---|
ADVERTISING_IDENTIFIER |
Umożliwia kupującym otrzymywanie identyfikatora IDFA w iOS lub identyfikatora wyświetlania reklam (AdID) w Androidzie podczas renderowania wyświetlenia. Szczegółowe informacje znajdziesz w artykule Odszyfrowywanie identyfikatorów reklamodawcy. |
CACHEBUSTER |
Ciąg znaków przedstawiający losową, bezznakową liczbę całkowitą o czterech bajtach. |
CLICK_URL_UNESC |
Niezmodyfikowany adres URL kliknięcia reklamy. W fragmentach kodu bezpośrednio po makrze powinna znajdować się ujęta w znaki ucieczki wersja adresu URL kliknięcia firmy zewnętrznej. Jeśli np. klikany URL firmy zewnętrznej to <a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> W momencie wyświetlania reklamy wartość ta jest rozszerzana do: <a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> Adres URL najpierw rejestruje kliknięcie w Google, a potem przekierowuje do adresu URL kliknięcia należącego do osoby trzeciej. |
CLICK_URL_ESC |
Ucieczka adresu URL kliknięcia reklamy. Użyj tego zamiast W fragmentach kodu HTML można na przykład użyć tego kodu: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a> W momencie wyświetlania reklamy wartość ta jest rozszerzana do: <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> Spowoduje to zarejestrowanie kliknięcia w usługach Po znaku |
CLICK_URL_ESC_ESC |
Podwójnie ujęty w znaki cudzysłowu adres URL reklamy. Użyj tego zamiast W fragmentach kodu HTML można na przykład użyć takiego kodu: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a> W momencie wyświetlania reklamy wartość ta jest rozszerzana do: <a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a> |
SCHEME |
Rozwinięte do http: , jeśli żądanie stawki nie wymaga protokołu SSL, lub do
https: , jeśli żądanie stawki wymaga protokołu SSL. |
SITE |
Domena z ucieczkami znaków w adresie URL treści lub anonimowy identyfikator anonimowego asortymentu. |
SITE_URL |
Rola wycofana. Zastąpione przez makro SITE, które zapewnia identyczną funkcjonalność. |
TZ_OFFSET |
przesunięcie strefy czasowej. |
VERIFICATION |
różne wartości w przypadku produkcji i skanowania kreacji w systemie weryfikacji. Format:
Jeśli np. kreacja zawierałaby tekst |
WINNING_PRICE |
Koszt zakodowanego wyświetlenia (czyli CPI, a nie CPM) w mikrosach waluty konta. Na przykład wygrany CPM w wysokości 5 USD odpowiada CPM w wysokości 5 000 000 milionowych części jednostki lub CPI w wysokości 5 000 milionowych części jednostki. Odkodowana wartość Aby przeanalizować to makro, musisz zaimplementować aplikację, która odszyfrowuje potwierdzenia cen. Więcej informacji znajdziesz na stronie Odszyfrowywanie potwierdzenia ceny. |
WINNING_PRICE_ESC |
WINNING_PRICE w formie ucieczki składni URL. |
Google wymaga, aby w kreacji reklamy obsługiwanej przez firmę zewnętrzną używać makra CLICK_URL_UNESC
lub CLICK_URL_ESC
. Google używa makro CLICK_URL
do śledzenia kliknięć.
Makra używają ucieczki w adresach URL zgodnie z tym schematem:
- Znak odstępu jest zastępowany znakiem plusa (
+
). - Znaki alfanumeryczne (0–9, a–z, A–Z) i znaki z zestawu !()*,-./:_~ pozostają niezmienione.
- Wszystkie inne znaki są zastępowane przez
%XX
, gdzieXX
to szesnastkowa liczba reprezentująca znak.
Ograniczenia i wymagania dotyczące wydawców
Pytanie o stawkę zawiera informacje o rodzajach ograniczeń i wymagań, które wydawcy nakładają na kreacje w aukcji.
BidRequest.bcat
- Możesz porównać zablokowane kategorie określone w tym polu z kategoriami wykrytymi w przesłanych kreacjach za pomocą pola
detectedCategories
interfejsu Real-time Bidding API.
- Możesz porównać zablokowane kategorie określone w tym polu z kategoriami wykrytymi w przesłanych kreacjach za pomocą pola
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
- W praktyce zawsze będzie to wartość
true
, ponieważ Google wymaga obsługi protokołu SSL we wszystkich kreacjach.
- W praktyce zawsze będzie to wartość
BidRequest.imp.{audio/banner/native/video}
BidRequest.imp.{audio/banner/native/video}.api
BidRequest.imp.{audio/banner/native/video}.battr
BidRequest.imp.{audio/banner/video}.mimes
Nigdy nie licytuj reklamy zawierającej funkcję podlegającą ograniczeniom. W przypadku dozwolonych funkcji, takich jak typ dostawcy, zwracaj reklamę tylko wtedy, gdy typ dostawcy znajduje się na liście allowed_vendor_type
w sekcji BidRequest
. W stawce powinny być uwzględnione tylko formaty reklam określone w pytaniu o stawkę przez wypełnienie pól takich jak BidRequest.imp.banner
. Aby dowiedzieć się więcej, zapoznaj się z komentarzami dotyczącymi tych pól w definicji bufora protokołu BidRequest
.
Jeśli reklama jest zwracana w BidResponse
, musisz prawidłowo ustawić pola BidResponse.seatbid.bid.attr
, BidResponse.seatbid.bid.cat
oraz BidResponse.seatbid.bid.adomain
lub BidResponse.seatbid.bid.adm_native.link.url
w BidResponse
. Jeśli reklama ma wiele wartości w tych polach, musisz uwzględnić wszystkie wartości. Więcej informacji znajdziesz w opisach tych pól w definicji bufora protokołu BidResponse
.
Odpowiedzi, w których nie ma tych pól, są odrzucane.
Open Measurement
Open Measurement umożliwia określenie zewnętrznych dostawców, którzy zapewniają niezależne usługi pomiarowe i weryfikacyjne w przypadku reklam wyświetlanych w środowiskach aplikacji mobilnych.
Obsługiwane formaty reklam to reklamy wideo, banery i reklamy pełnoekranowe. Więcej informacji o używaniu pakietu Open Measurement w odpowiedzi na zapytanie o stawkę zawierającej te formaty znajdziesz w artykule w Centrum pomocy poświęconym pakietowi Open Measurement SDK.
Przykładowe odpowiedzi na stawkę
W następnych sekcjach znajdziesz przykładowe odpowiedzi na żądanie stawki w przypadku różnych typów reklam.
Baner aplikacji
Pokaż przykład
Zserializowana odpowiedźid: "8L85Di7e9374c3jriwo2W0" seatbid { bid { id: "0L7hx7783rjD1hT81FH" impid: "1" price: 0.4000000059604645 adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adomain: "google.com" crid: "test_creative_id_192654" w: 300 h: 50 burl: "https://test.com/imp?id=123456" [com.google.doubleclick.bid] { impression_tracking_url: "https://test.com/impression?id=123456" billing_id: 70614819650 skadn { version: "3.0" network: "Y8HK1z22" campaign: "72382716" itunesitem: "953637916" sourceapp: "com.google.testapp" fidelities { fidelity: VIEW_THROUGH_ADS nonce: "bf105d9a-6df9-4d49-a10d-44e21a539415" timestamp: "1730359683568" signature: "589Vb2BJlF955D6kUj197D84U8UWWtngYQ73o1SVMEcAk6ju348j0454AOxpR74j95BF13RLC119Qo73nyq2qgp4IJENP6yE" } fidelities { fidelity: STOREKIT_RENDERED_ADS nonce: "bf105d9a-6df9-4d49-a10d-44e21a539415" timestamp: "1730359683568" signature: "3Av39t8684YefY03NT715Z2dTtXQ39pQH7C9aq6Wuh4WzbS044734J7FAlw7690Nm7743G7Z4P6hX8K7H607886b7FBHTCYY" } skadn_opts { always_open_appstore: true } } app_promotion_type: INSTALLS } } seat: "4095:5416:758587" } cur: "USD" [com.google.doubleclick.bid_response] { processing_time_ms: 16 }
Pokaż przykład
{ "id": "8L85Di7e9374c3jriwo2W0", "seatbid": [ { "bid": [ { "id": "0L7hx7783rjD1hT81FH", "impid": "1", "price": 0.4000000059604645, "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", "adomain": [ "google.com" ], "crid": "test_creative_id_192654", "w": 300, "h": 50, "burl": "https://test.com/imp?id=123456", "ext": { "impression_tracking_url": [ "https://test.com/impression?id=123456" ], "billing_id": "70614819650", "skadn": { "version": "3.0", "network": "Y8HK1z22", "campaign": "72382716", "itunesitem": "953637916", "sourceapp": "com.google.testapp", "fidelities": [ { "fidelity": 0, "nonce": "bf105d9a-6df9-4d49-a10d-44e21a539415", "timestamp": "1730359683568", "signature": "589Vb2BJlF955D6kUj197D84U8UWWtngYQ73o1SVMEcAk6ju348j0454AOxpR74j95BF13RLC119Qo73nyq2qgp4IJENP6yE" }, { "fidelity": 1, "nonce": "bf105d9a-6df9-4d49-a10d-44e21a539415", "timestamp": "1730359683568", "signature": "3Av39t8684YefY03NT715Z2dTtXQ39pQH7C9aq6Wuh4WzbS044734J7FAlw7690Nm7743G7Z4P6hX8K7H607886b7FBHTCYY" } ], "skadn_opts": { "always_open_appstore": 1 } }, "app_promotion_type": 1 } } ], "seat": "4095:5416:758587" } ], "cur": "USD", "ext": { "processing_time_ms": 16 } }
Pokaż przykład
Zserializowana odpowiedźad { html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adslot { id: 1 max_cpm_micros: 44095 billing_id: 99718422589 } click_through_url: "google.com" attribute: 47 attribute: 50 category: 7 buyer_creative_id: "test_creative_id_997551" advertiser_name: "Google" width: 300 height: 250 impression_tracking_url: "https://test.com/imp?id=123456" skadn { version: "4.0" network: "DofiF4X5" itunesitem: "448730563" sourceapp: "195751234" fidelities { fidelity_type: VIEW_THROUGH_ADS nonce: "a869c155-3566-475c-8cb9-d0a75159e0c5" timestamp: 1728803273481 signature: "0KXE97ri9xnW9M10NDg64r014MsN7SO5R11N29oe8h8Cuao3K477i9dFH61bKny28iA6337A6EK6T3fgR9p9EJK12qvaY96E" } fidelities { fidelity_type: STOREKIT_RENDERED_ADS nonce: "a869c155-3566-475c-8cb9-d0a75159e0c5" timestamp: 1728803273481 signature: "EF1Vj82st371O79029Q9067AL00972U3NqNG9u295r8B4681c12Se2jk34XSR8404681c9WGa9a69779CQ87o9T81Y85198C" } source_identifier: 1 } advertised_app_id: "APP_ID_OMITTED" app_promotion_type: INSTALLS } processing_time_ms: 13
Reklama pełnoekranowa w aplikacji
Pokaż przykład
Zserializowana odpowiedźid: "6700Z3L2o0zSw9g8IqmiQ5" seatbid { bid { id: "0UBHDN63xQ8hj1F8184" impid: "1" price: 0.016728 adid: "test_creative_id_179418" adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adomain: "google.com" crid: "test_creative_id_179418" cat: "IAB13-7" w: 300 h: 600 burl: "https://test.com/imp?id=123456" [com.google.doubleclick.bid] { billing_id: 14443955188 dsa { behalf: "TEST_ADVERTISER" paid: "TEST_PAYING_ENTITY" adrender: false } } } seat: "2054:4176:757161" group: false } bidid: "TI590379-wi3Z9CU8-6j8V-Uj0l1I102h2q" cur: "USD"
Pokaż przykład
{ "id": "6700Z3L2o0zSw9g8IqmiQ5", "seatbid": [ { "bid": [ { "id": "0UBHDN63xQ8hj1F8184", "impid": "1", "price": 0.016728, "adid": "test_creative_id_179418", "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", "adomain": [ "google.com" ], "crid": "test_creative_id_179418", "cat": [ "IAB13-7" ], "w": 300, "h": 600, "burl": "https://test.com/imp?id=123456", "ext": { "billing_id": "14443955188", "dsa": { "behalf": "TEST_ADVERTISER", "paid": "TEST_PAYING_ENTITY", "adrender": 0 } } } ], "seat": "2054:4176:757161", "group": 0 } ], "bidid": "TI590379-wi3Z9CU8-6j8V-Uj0l1I102h2q", "cur": "USD" }
Pokaż przykład
Zserializowana odpowiedźad { html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adslot { id: 1 max_cpm_micros: 80117 min_cpm_micros: 0 billing_id: 12608068331 deal_id: 0 } click_through_url: "google.com" attribute: 47 buyer_creative_id: "test_creative_id_266407" advertiser_name: "Google" width: 756 height: 384 impression_tracking_url: "https://test.com/imp?id=123456" event_notification_token: "token" dsa_transparency { buyer_render: true } } processing_time_ms: 11
Pełnoekranowa reklama wideo w aplikacji
Pokaż przykład
Zserializowana odpowiedźid: "79N7F1708654i75q3k69j1" seatbid { bid { id: "1gR655162hOsH9q3X6R" impid: "1" price: 2.3833 adid: "test_creative_id_648299" adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" adomain: "google.com" crid: "test_creative_id_648299" attr: VIDEO_IN_BANNER_AUTO_PLAY w: 1920 h: 1080 [com.google.doubleclick.bid] { event_notification_token { payload: "token" } billing_id: 11004606416 skadn { version: "4.0" network: "O5O88B57" itunesitem: "509167749" nonce: "" sourceapp: "com.google.testapp" timestamp: "OMITTED" signature: "OMITTED" fidelities { fidelity: VIEW_THROUGH_ADS nonce: "d3be52b1-8ef6-4277-8922-54450b07fd5b" timestamp: "1730409097616" signature: "8d52E359K158Dj1u89EpLP3544Qz7B10CV0a92YZJ6JXX8d9uXi72N43ZxjRl96Ph7v8R5u1k5y9Aoy3jZcN3C5dxRU390qc" } fidelities { fidelity: STOREKIT_RENDERED_ADS nonce: "d3be52b1-8ef6-4277-8922-54450b07fd5b" timestamp: "1730409097616" signature: "43C2b79X4nPY913Qs3jJLLhCjUNZg39cK022pCE2wH731Ie7q4584b5UGG137Jh12I2R6a0e35LJbvQJbn5o564roQ7G1Mtd" } sourceidentifier: "1" } app_promotion_type: INSTALLS } } seat: "1061:9160:833989" } bidid: "m7V3rjn0-aF599ZZ6-37hA-b9o7DU8CLrtp" cur: "USD"
Pokaż przykład
{ "id": "79N7F1708654i75q3k69j1", "seatbid": [ { "bid": [ { "id": "1gR655162hOsH9q3X6R", "impid": "1", "price": 2.3833, "adid": "test_creative_id_648299", "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%", "adomain": [ "google.com" ], "crid": "test_creative_id_648299", "attr": [ 6 ], "w": 1920, "h": 1080, "ext": { "event_notification_token": { "payload": "token" }, "billing_id": "11004606416", "skadn": { "version": "4.0", "network": "O5O88B57", "itunesitem": "509167749", "nonce": "", "sourceapp": "com.google.testapp", "timestamp": "OMITTED", "signature": "OMITTED", "fidelities": [ { "fidelity": 0, "nonce": "d3be52b1-8ef6-4277-8922-54450b07fd5b", "timestamp": "1730409097616", "signature": "8d52E359K158Dj1u89EpLP3544Qz7B10CV0a92YZJ6JXX8d9uXi72N43ZxjRl96Ph7v8R5u1k5y9Aoy3jZcN3C5dxRU390qc" }, { "fidelity": 1, "nonce": "d3be52b1-8ef6-4277-8922-54450b07fd5b", "timestamp": "1730409097616", "signature": "43C2b79X4nPY913Qs3jJLLhCjUNZg39cK022pCE2wH731Ie7q4584b5UGG137Jh12I2R6a0e35LJbvQJbn5o564roQ7G1Mtd" } ], "sourceidentifier": "1" }, "app_promotion_type": 1 } } ], "seat": "1061:9160:833989" } ], "bidid": "m7V3rjn0-aF599ZZ6-37hA-b9o7DU8CLrtp", "cur": "USD" }
Pokaż przykład
Zserializowana odpowiedźad { adslot { id: 1 max_cpm_micros: 2454000 billing_id: 95400492935 deal_id: 1 } click_through_url: "google.com" attribute: 22 attribute: 105 buyer_creative_id: "test_creative_id_716344" width: 0 height: 0 video_vast_xml: "OMITTED_VAST_XML" event_notification_token: "token" skadn { version: "4.0" network: "113tdmXM" itunesitem: "460184775" sourceapp: "751592940" fidelities { fidelity_type: STOREKIT_RENDERED_ADS nonce: "1c3ed154-33f5-4cb7-960a-3e571cb9c3b9" timestamp: 1728932156118 signature: "7m3PDLV778PZ741T2I3561kkCW3UjIp5p63989cP311iiZ2445v20HP5ymfD8ThYO7437h22075h4h9O21S8A08U1kw3qis2" } fidelities { fidelity_type: VIEW_THROUGH_ADS nonce: "1c3ed154-33f5-4cb7-960a-3e571cb9c3b9" timestamp: 1728932156118 signature: "28X90AX01Z762a3W92186a40Eb4J8ekACsYFo55J8vD445f5pcA80MH45753Iy887596gK8ax0s55ndC23eg0V7P862yS240" } source_identifier: 1 } advertised_app_id: "APP_ID_OMITTED" app_promotion_type: INSTALLS } processing_time_ms: 51
Aplikacja natywna
Pokaż przykład
Zserializowana odpowiedźid: "96Z599PGNvp7Mr99138Fm0" seatbid { bid { id: "NQb32Ge7Rtt84wFn2p8" impid: "1" price: 0.153584 adid: "test_creative_id_272596" adomain: "google.com" crid: "test_creative_id_272596" cat: "IAB13-7" burl: "https://test.com/imp?id=123456" adm_native { ver: "1.2" assets { id: 1 required: true title { text: "Luxury Mars Cruises" } } assets { id: 2 required: true data { value: "Visit the planet in a luxury spaceship." } } assets { id: 3 required: false data { value: "Book today" } } assets { id: 4 required: true data { value: "Galactic Luxury Cruises" } } assets { id: 5 required: true img { url: "https://native.test.com/image?id=123456" w: 1200 h: 627 } } link { url: "https://www.google.com" } eventtrackers { event: IMPRESSION method: IMG url: "https://test.com/event?id=123456" } privacy: "https://adssettings.google.com/whythisad?source=display&reasons=OMITTED" } [com.google.doubleclick.bid] { ad_choices_destination_url: "https://test.com/preferences" billing_id: 29846056590 dsa { behalf: "TEST_ADVERTISER" paid: "TEST_PAYING_ENTITY" adrender: false } } } bid { id: "4vwb23qm6iqU6w6G978" impid: "1" price: 0.153584 adid: "test_creative_id_272596" adomain: "google.com" crid: "test_creative_id_272596" cat: "IAB21" burl: "https://test.com/imp?id=123456" adm_native { ver: "1.2" assets { id: 1 required: true title { text: "Luxury Mars Cruises" } } assets { id: 2 required: true data { value: "Visit the planet in a luxury spaceship." } } assets { id: 3 required: false data { value: "Book today" } } assets { id: 4 required: true data { value: "Galactic Luxury Cruises" } } assets { id: 5 required: true img { url: "https://native.test.com/image?id=123456" w: 1200 h: 627 } } link { url: "https://www.google.com" } eventtrackers { event: IMPRESSION method: IMG url: "https://test.com/event?id=123456" } privacy: "https://adssettings.google.com/whythisad?source=display&reasons=OMITTED" } [com.google.doubleclick.bid] { ad_choices_destination_url: "https://test.com/preferences" dsa { behalf: "TEST_ADVERTISER" paid: "TEST_PAYING_ENTITY" adrender: false } } } seat: "4528:1161:591635" group: false } bidid: "hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC" cur: "USD"
Pokaż przykład
{ "id": "96Z599PGNvp7Mr99138Fm0", "seatbid": [ { "bid": [ { "id": "NQb32Ge7Rtt84wFn2p8", "impid": "1", "price": 0.153584, "adid": "test_creative_id_272596", "adomain": [ "google.com" ], "crid": "test_creative_id_272596", "cat": [ "IAB13-7" ], "burl": "https://test.com/imp?id=123456", "ext": { "ad_choices_destination_url": "https://test.com/preferences", "billing_id": "29846056590", "dsa": { "behalf": "TEST_ADVERTISER", "paid": "TEST_PAYING_ENTITY", "adrender": 0 } }, "adm": "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}" }, { "id": "4vwb23qm6iqU6w6G978", "impid": "1", "price": 0.153584, "adid": "test_creative_id_272596", "adomain": [ "google.com" ], "crid": "test_creative_id_272596", "cat": [ "IAB21" ], "burl": "https://test.com/imp?id=123456", "ext": { "ad_choices_destination_url": "https://test.com/preferences", "dsa": { "behalf": "TEST_ADVERTISER", "paid": "TEST_PAYING_ENTITY", "adrender": 0 } }, "adm": "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}" } ], "seat": "4528:1161:591635", "group": 0 } ], "bidid": "hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC", "cur": "USD" }
Pokaż przykład
Zserializowana odpowiedźad { adslot { id: 1 max_cpm_micros: 158000 billing_id: 41106584355 deal_id: 1 } click_through_url: "google.com" attribute: 70 buyer_creative_id: "test_creative_id_251451" advertiser_name: "Google" native_ad { headline: "Luxury Mars Cruises" body: "Visit the planet in a luxury spaceship." call_to_action: "Book today" advertiser: "Galactic Luxury Cruises" image { url: "https://native.test.com/image?id=123456" width: 1200 height: 222 } app_icon { url: "https://native.test.com/icon?id=123456" width: 512 height: 512 } star_rating: 4.300000190734863 click_link_url: "https://www.google.com" } impression_tracking_url: "https://test.com/imp?id=123456" impression_tracking_url: "https://test.com/imp?id=123456" event_notification_token: "token" skadn { version: "4.0" network: "l6x39K4z" itunesitem: "731305960" sourceapp: "627009739" fidelities { fidelity_type: STOREKIT_RENDERED_ADS nonce: "9216faff-74a9-4b35-badc-66878c35f67c" timestamp: 1728975919221 signature: "b0USXkmg02Q3v6p301kYOHG36CCOWWdEo52RHRttB9t8PTNi79qL17E4D6h7UeUSuq479oTK13G2Ev34MJlU86C5vY1SMVw2" } fidelities { fidelity_type: VIEW_THROUGH_ADS nonce: "9216faff-74a9-4b35-badc-66878c35f67c" timestamp: 1728975919221 signature: "4Cf4NH6239z9f3wa8j6420Z7H0UISYxyxN5720444dkq6457I5FY0Jg8bk1xge2P8YgiDp74l2738136v2g1A8D50331IRm0" } source_identifier: 1 } click_tracking_urls: "https://google.com/rtb/click?imp_id=55d2112c-4947-4da5-bc37-b79ebf4577dd" advertised_app_id: "APP_ID_OMITTED" app_promotion_type: INSTALLS } processing_time_ms: 63
Film internetowy
Pokaż przykład
Zserializowana odpowiedźid: "b2F6m05a9d83V7I35iw415" seatbid { bid { id: "Ob7259K5679O36pMt00" impid: "1" price: 1.52 adid: "test_creative_id_262797" adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" adomain: "google.com" crid: "test_creative_id_262797" exp: 3600 [com.google.doubleclick.bid] { event_notification_token { payload: "token" } billing_id: 47460168025 } } bid { id: "0890di791A75n9R13jM" impid: "1" price: 1.2 adid: "test_creative_id_262797" adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" adomain: "google.com" crid: "test_creative_id_262797" exp: 3600 [com.google.doubleclick.bid] { event_notification_token { payload: "token" } } } seat: "2121:7826:598388" } cur: "USD"
Pokaż przykład
{ "id": "b2F6m05a9d83V7I35iw415", "seatbid": [ { "bid": [ { "id": "Ob7259K5679O36pMt00", "impid": "1", "price": 1.52, "adid": "test_creative_id_262797", "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%", "adomain": [ "google.com" ], "crid": "test_creative_id_262797", "exp": 3600, "ext": { "event_notification_token": { "payload": "token" }, "billing_id": "47460168025" } }, { "id": "0890di791A75n9R13jM", "impid": "1", "price": 1.2, "adid": "test_creative_id_262797", "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%", "adomain": [ "google.com" ], "crid": "test_creative_id_262797", "exp": 3600, "ext": { "event_notification_token": { "payload": "token" } } } ], "seat": "2121:7826:598388" } ], "cur": "USD" }
Pokaż przykład
Zserializowana odpowiedźfad { adslot { id: 1 max_cpm_micros: 68340760 min_cpm_micros: 0 billing_id: 75752641104 deal_id: 0 } click_through_url: "google.com" vendor_type: 145 attribute: 47 attribute: 8 video_url: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" buyer_creative_id: "test_creative_id_877383" advertiser_name: "Google" event_notification_token: "token" dsa_transparency { buyer_render: true } } processing_time_ms: 17
Baner internetowy na urządzenia mobilne dla licytujących na giełdzie
Pokaż przykład
Zserializowana odpowiedźid: "l30Zu42070Man1Z5u751yG" seatbid { bid { id: "4X6uu65F9J3m467C571" impid: "1" price: 0.17 adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" adomain: "google.com" crid: "test_creative_id_941528" w: 320 h: 50 [com.google.doubleclick.bid] { impression_tracking_url: "https://test.com/impression?id=123456" impression_tracking_url: "https://test.com/impression?id=123456" event_notification_token { payload: "token" } billing_id: 50962964480 } } seat: "7632:7504:809671" } bidid: "II638Xkf-6432F06d-VGu8-27B4407D136w" [com.google.doubleclick.bid_response] { processing_time_ms: 70 }
Pokaż przykład
{ "id": "l30Zu42070Man1Z5u751yG", "seatbid": [ { "bid": [ { "id": "4X6uu65F9J3m467C571", "impid": "1", "price": 0.17, "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", "adomain": [ "google.com" ], "crid": "test_creative_id_941528", "w": 320, "h": 50, "ext": { "impression_tracking_url": [ "https://test.com/impression?id=123456", "https://test.com/impression?id=123456" ], "event_notification_token": { "payload": "token" }, "billing_id": "50962964480" } } ], "seat": "7632:7504:809671" } ], "bidid": "II638Xkf-6432F06d-VGu8-27B4407D136w", "ext": { "processing_time_ms": 70 } }