Przetwarzanie żądania
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Interakcja związana z określaniem stawek w czasie rzeczywistym rozpoczyna się, gdy Google wyśle do Twojej aplikacji pytanie o stawkę. Z tego przewodnika dowiesz się, jak napisać kod aplikacji, aby przetwarzać żądanie stawki.
Prośba o analizę
Google wysyła żądanie stawki w formacie OpenRTB JSON lub Protobuf jako ładunek żądania HTTP POST. Otrzymany format zależy od konfiguracji punktu końcowego. Przykład znajdziesz w artykule Przykładowe pytanie o stawkę.
Aby otrzymać zserializowany obiekt BidRequest, musisz przeanalizować tę prośbę. Jeśli używasz formatu Protobuf, musisz pobrać pliki openrtb.proto i openrtb-adx.proto ze strony danych referencyjnych i użyć ich do wygenerowania biblioteki, która może służyć do analizowania komunikatu BidRequest. Na przykład ten kod w C++ analizuje żądanie na podstawie ładunku POST w ciągu znaków:
Gdy masz już BidRequest, możesz z nim pracować jako z obiektem, wyodrębniając i interpretując potrzebne pola. Na przykład w C++ iteracja po transakcjach w obiekcie `BidRequest` OpenRTB może wyglądać tak:
Żądanie stawki otrzymujesz, gdy zasoby reklamowe wydawcy są kierowane na co najmniej jedną z Twoich
konfiguracji kierowania wstępnego. BidRequest.imp.ext.billing_id
zostanie wypełnione identyfikatorami rozliczeniowymi kwalifikujących się kupujących i odpowiednimi
konfiguracjami wstępnego kierowania. W przypadku zasobów reklamowych objętych umową możesz też znaleźć identyfikatory rozliczeniowe powiązane z odpowiednimi kupującymi za pomocą funkcji BidRequest.imp.pmp.deal.ext.billing_id. Podczas składania oferty można podać tylko identyfikatory rozliczeniowe kupujących uwzględnionych w pytaniu o stawkę.
Jeśli w pytaniu o stawkę znajduje się kilka identyfikatorów płatności, musisz podać identyfikator płatności kupującego, któremu chcesz przypisać stawkę, w polu BidResponse.seatbid.bid.ext.billing_id.
imp {
ext {
// The billing IDs of all of your matching pretargeting configs and eligible child seats are
// stored in a flat list here.
billing_id: 123
billing_id: 456
billing_id: 789
}
pmp {
// All eligible deals are stored in a single flat list.
deal {
id: 1000
ext {
// The specific billing IDs eligible to bid on this deal are indicated here.
billing_id: 789
}
...
}
deal {
id: 2000
ext {
billing_id: 123
billing_id: 456
}
...
}
}
...
}
...
Określanie zablokowanych kategorii
Gdy składasz stawkę, dołączona kreacja nie może mieć wykrytych kategorii, które wydawca zablokował. W przeciwnym razie stawka zostanie odfiltrowana z aukcji.
Zablokowane kategorie w przypadku wyświetlenia możesz sprawdzić w polu BidRequest.bcat, które jest wypełnione kategoriami z taksonomii skonfigurowanej na Twoim koncie.
Przykład poniżej pokazuje zablokowane kategorie na podstawie skonfigurowanej taksonomii kategorii reklam:
Taksonomia treści IAB w wersji 1.0
// Bid request{// Indicates the blocked categories using IAB Content 1.0 Taxonomy."bcat":["IAB9-9",// Cigars"IAB8-18"// Wine]"imp":{...}}
Taksonomia kategorii reklam Google
// Bid request{// Indicates the blocked categories using Google Ad Category Taxonomy."bcat":["10138",// Cigar and tobacco collecting"10080",// Tobacco"11649",// Wine"10674",// Wine collecting"13008"// Wine clubs]"imp":{...}}
Pliki słownika
Żądanie stawki używa identyfikatorów zdefiniowanych w plikach słownika, które są dostępne na stronie danych referencyjnych.
Makra adresu URL licytującego
Opcjonalnie niektóre informacje z BidRequest można wstawiać do adresów URL punktów końcowych określania stawek za pomocą makr. Jeśli skonfigurujesz adres URL punktu końcowego z co najmniej 1 makrem, zostaną one rozwinięte, jeśli te informacje będą obecne w żądaniu stawki. Może to być przydatne np. wtedy, gdy chcesz przeprowadzić równoważenie obciążenia na podstawie informacji w BidRequest.
Aby poprosić o obsługę nowych makr, skontaktuj się z menedżerem konta.
Makro
Opis
%%GOOGLE_USER_ID%%
Zastąpiono identyfikatorem użytkownika Google znalezionym w BidRequest.user.id. Na przykład adres URL licytującego http://google.bidder.com/path?gid=%%GOOGLE_USER_ID%% zostanie w momencie wysłania żądania zastąpiony adresem http://google.bidder.com/path?gid=dGhpyBhbiBleGFtGxl.
Jeśli identyfikator użytkownika Google jest nieznany, zostanie zastąpiony pustym ciągiem, a wynik będzie podobny do
http://google.bidder.com/path?gid=
%%HAS_MOBILE%%
Zastąpiony wartością 1, aby wskazać, że żądanie stawki pochodzi z urządzenia mobilnego, lub wartością 0 w innych przypadkach. Jest to oparte na wartości BidRequest.device.devicetype, gdzie urządzenia mobilne są oznaczone jako HIGHEND_PHONE (4) lub Tablet (5).
%%HAS_VIDEO%%
Zastąpiony wartością 1, aby wskazać, że żądanie stawki zawiera zasoby reklamowe wideo, lub wartością 0 w innych przypadkach. Zależy to od tego, czy w żądaniu stawki znajduje się wartość parametru BidRequest.imp.video.
%%HOSTED_MATCH_DATA%%
Zastąpiona wartością na podstawie BidRequest.user.buyeruid.
%%MOBILE_IS_APP%%
Zastąpiony przez 1, aby wskazać, że pytanie o stawkę dotyczy zasobów reklamowych w aplikacji mobilnej, lub przez 0 w innych przypadkach. Zależy to od tego, czy pole BidRequest.app jest wypełnione.
Znajdowanie identyfikatora aplikacji mobilnej w adresie URL transakcji
W przypadku transakcji w aplikacjach mobilnych raporty będą zawierać adresy URL podobne do tego:
mbappgewtimrzgyytanjyg4888888.com
Użyj dekodera base32, aby zdekodować część ciągu pogrubionego (gewtimrzgyytanjyg4888888).
Możesz użyć dekodera online, ale musisz pisać litery wielką literą i zastąpić końcowe znaki 8 wartościami =.
Dekodowanie tej wartości:
GEWTIMRZGYYTANJYG4======
daje w rezultacie:
1-429610587
Ciąg znaków 429610587 to identyfikator aplikacji na iOS iFunny.
Oto kolejny przykład. Zgłoszony adres URL to:
mbappgewtgmjug4ytmmrtgm888888.com
Dekodowanie tej wartości:
GEWTGMJUG4YTMMRTGM======
daje w rezultacie:
1-314716233
Wynikiem 314716233 jest identyfikator aplikacji na iOS
TextNow.
Znajdowanie nazwy aplikacji mobilnej na podstawie adresu URL transakcji
Oto przykład uzyskiwania nazwy aplikacji. Zgłoszony adres URL to:
Żądania stawek wysyłane do oferentów z giełd i sieci uczestniczących w Otwartym ustalaniu stawek są podobne do żądań wysyłanych do kupujących z programu Authorized Buyers uczestniczących w standardowym określaniu stawek w czasie rzeczywistym. Klienci korzystający z Otwartego ustalania stawek otrzymają niewielką liczbę dodatkowych pól, a kilka dotychczasowych pól może mieć inne zastosowania. Obejmują one:
OpenRTB
Szczegóły
BidRequest.imp.ext.dfp_ad_unit_code
Zawiera kod sieci Ad Managera wydawcy, a po nim hierarchię jednostek reklamowych rozdzieloną ukośnikami.
Na przykład będzie to wyglądać mniej więcej tak:/1234/cruises/mars.
BidRequest.user.data.segment
Powtarzające się pary klucz-wartość wysyłane przez wydawcę do podmiotu ustalającego stawki na giełdzie.
Możesz określić, że wartości są parami klucz-wartość wysyłanymi przez wydawcę, gdy parametr BidRequest.user.data.name ma wartość “Publisher Passed”.
Deklarowanie dozwolonych dostawców
Dostawcy technologii, którzy świadczą usługi takie jak badania, remarketing i wyświetlanie reklam, mogą odgrywać rolę w interakcjach między kupującymi a sprzedawcami. Dozwoleni są tylko dostawcy, którzy zostali zweryfikowani przez Google pod kątem udziału w interakcjach w ramach programu Authorized Buyers.
Aby zrozumieć BidRequest i utworzyć BidResponse, musisz poznać 2 różne możliwości deklarowania dostawców technologii:
Inni dostawcy mogą uczestniczyć w programie tylko wtedy, gdy zostaną zgłoszeni w BidRequest:
W polu BidRequest pole BidRequest.imp.ext.allowed_vendor_type określa, na których dostawców zezwala sprzedawca. Dostawcy, którzy zostaną wysłani w ramach parametru
allowed_vendor_type, są wymienieni w pliku słownika
vendors.txt.
Przykładowe pytanie o stawkę
Poniższe przykłady przedstawiają czytelne dla człowieka próbki żądań Protobuf i JSON.
Aby przekonwertować żądanie stawki na postać binarną, taką jak w przypadku ładunku POST w prawdziwym żądaniu, możesz wykonać te czynności (w C++). Pamiętaj jednak, że nie ma to zastosowania do OpenRTB JSON.
Informacje zwrotne w czasie rzeczywistym są dostępne dla kupujących w programie Authorized Buyers, a także dla giełd i sieci korzystających z Otwartego ustalania stawek.
Informacje zwrotne w czasie rzeczywistym są wypełniane w BidRequest.ext.bid_feedback na podstawie wyników co najmniej 1 wcześniej złożonej stawki. Możesz ich używać do znajdowania szczegółów, np. czy stawka wygrała aukcję lub jaka była minimalna stawka potrzebna do wygrania aukcji. Aby włączyć opinie w czasie rzeczywistym, skontaktuj się z menedżerem konta.
Oprócz domyślnych pól wysyłanych w ramach opinii o odpowiedzi na żądanie stawki możesz też wysyłać w odpowiedzi na żądanie stawki dane niestandardowe za pomocą pola BidResponse.seatbid.bid.ext.event_notification_token. Wartość
event_notification_token to dowolne dane znane tylko
oferentowi, które mogą pomóc w debugowaniu, np. nowy identyfikator kierowania lub
identyfikator licytowania reprezentujący nową taktykę albo metadane powiązane z kreacją
znane tylko oferentowi. Szczegółowe informacje znajdziesz w pliku protokołu buforowania OpenRTB Extensions.
Gdy Authorized Buyers wysyła do licytującego pytanie o stawkę, licytujący odpowiada BidResponse. Jeśli oferent ma włączone odpowiedzi na pytania o stawkę w czasie rzeczywistym, w kolejnym pytaniu o stawkę Authorized Buyers wysyła odpowiedź w BidFeedback:
messageBidFeedback{//TheuniqueidfromBidRequest.id.optionalstringrequest_id=1;//Thestatuscodeforthead.Seecreative-status-codes.txtinthe//technicaldocumentationforalistofids.optionalint32creative_status_code=2;//Deprecated.ThisfieldisnotpopulatedandwillberemovedafterMarch,//2025.Ifthebidwontheauction,thisisthepricepaidinyouraccount//currency.Ifthebidparticipatedintheauctionbutwasout-bid,this//istheCPMthatshouldhavebeenexceededinordertowin.Thisisnot//setifthebidwasfilteredpriortotheauction,ifthepublisheror//winningbidderhasoptedoutofpricefeedbackorifyouraccounthas//optedoutofsharingwinningpriceswithotherbidders.Forfirst-price//auctions,minimum_bid_to_winispopulatedinsteadofthisfield.optionaldoubleprice=3[deprecated=true];//Theminimumbidvaluenecessarytohavewontheauction,inyouraccount//currency.Ifyourbidwontheauction,thisisthesecondhighestbid//thatwasnotfiltered(includingthefloorprice).Ifyourbiddidn't win//theauction,thisisthewinningcandidate's bid. This field will only be//populatedifyourbidparticipatedinafirst-priceauction,andwillnot//bepopulatedifyourbidwasfilteredpriortotheauction.optionaldoubleminimum_bid_to_win=6;//Deprecated.ThisfieldwillberemovedinFebruary2026.//Theminimumbidvaluenecessarytohavewontheserver-sidecomponentof//theoverallauctiongiventhattherewasalsoaninterestgroupbidding//componenttotheoverallauctionwhichranusingtheProtectedAudience//API.ThevalueisexpressedinCPMofthebuyeraccountcurrency.The//minimumbidtowinfortheoverallauction,includingbidsfromthe//server-sideandtheon-deviceinterestgroupcomponents,ispopulatedin//theminimum_bid_to_winfieldofthesameBidFeedbackobject.optionaldoublesscminbidtowin=14[deprecated=true];//Billableeventratemultiplierthatwasappliedtothisbidduring//ranking.Theadjustmentreflectsthelikelihoodthatyourbidwould//generateabillableevent(namely,theadrenderssuccessfully)ifitwon//theauction,relativetotheprobabilitythatotherbidsgeneratea//billableeventiftheywontheauction.Thisadjustmentcanbelargeror//smallerthan1.Thisaffectsthefinalrankingintheauctiononly;in//particular,thismultiplierdoesnotaffectthepaymentorwhetherthe//bidclearsanyfloorprice.optionalfloatbillable_event_rate_bid_adjustment=13[default=1];//WhenapublisherusesanRTBauctionandwaterfall-basedSDKmediationon//thesamequery,thewinnerofthereal-timeauctionmustalsocompetein//amediationwaterfall(whichisorderedbyprice)towintheimpression.//Ifthebidparticipatedintheauctionandtherewasnowaterfall,the//valueofthisfieldis0.Ifthebidparticipatedintheauctionand//therewasawaterfall,thevalueofthisfieldisapricerepresentinga//samplebidfromtheeligiblemediationnetworksthatwerehigherthanthe//auctionwinner,weightedbyexpectedfillrate.Thisfieldcanbeused//inconjunctionwithminimum_bid_to_wintotrainbiddingmodels.TheCPM//isinyouraccountcurrency.optionaldoublesampled_mediation_cpm_ahead_of_auction_winner=8;messageEventNotificationToken{//Thecontentsofthetoken.optionalstringpayload=1;}//Thetokenincludedinthecorrespondingbid.optionalEventNotificationTokenevent_notification_token=4;//ThecreativeIDincludedinthecorrespondingbid.optionalstringbuyer_creative_id=5;//Possibletypesofbidresponsefeedbackobjects.enumFeedbackType{FEEDBACK_TYPE_UNSPECIFIED=0;//Feedbackforabidthatwassubmittedonabidresponse.BID_FEEDBACK=1;//Feedbackforaninterestgroupbuyersubmittedonabidresponseto//particpateinaninterestgroupbiddingcomponentoftheauctionrun//usingtheProtectedAudienceAPI.INTEREST_GROUP_BUYER_FEEDBACK=2;}//Deprecated.ThisfieldwillberemovedinFebruary2026.//ThetypeoftheBidFeedbackmessage.Googlewillsendseparate//BidFeedbackobjectsfor://a)Eachbidsubmittedonabidresponse//b)Eachbuyersubmittedonabidresponsetoparticpateinaninterest//groupbiddingcomponentoftheauctionrunusingtheProtectedAudience//API.optionalFeedbackTypefeedbacktype=15[deprecated=true];//Deprecated.ThisfieldwillberemovedinFebruary2026.//Originofaninterestgroupbuyerthatwasincludedinthebidresponse.//Thisfieldispopulatedonlyforfeedbackwhereabidderoptedinan//interestgroupbuyertoparticipateintheinterestgroupbidding//componentoftheoverallauctionrunusingtheProtectedAudienceAPI.//Tolearnmoreaboutorigins,seehttps://www.rfc-editor.org/rfc/rfc6454.//TolearnmoreaboutinterestgroupbiddingandtheProtectedAudience//API,see//https://developers.google.com/authorized-buyers/rtb/fledge-origin-trial.optionalstringbuyerorigin=16[deprecated=true];//Deprecated.ThisfieldwillberemovedinFebruary2026.//Thestatuscodeforthesubmittedinterestgroupbuyer.Thisfieldis//onlypopulatedinthefeedbackforaninterestgroupbuyerthatabidder//requestedtoenterintotheinterestgroupauctionthroughthebid//response.Individualcreativestatuscodesofbidssubmittedbythebuyer//intheon-deviceinterestgroupauctionarenotavailable.See//https://storage.googleapis.com/adx-rtb-dictionaries/interest-group-buyer-status-codes.txt//foralistofinterestgroupbuyerstatuscodes.optionalint32igbuyerstatus=17[deprecated=true];}
W tym komunikacie pierwszym polem, które należy sprawdzić, jest bid_feedback.creative_status_code. Znaczenie kodu znajdziesz w pliku
creative-status-codes.txt. Pamiętaj, że jeśli wygrasz aukcję, możesz zrezygnować z przesyłania informacji o cenie. Więcej informacji znajdziesz w artykule Jak zrezygnować.
Odpowiedź w czasie rzeczywistym zawiera identyfikator pytania o stawkę i jedną z tych informacji:
Wynik aukcji
Opinie w czasie rzeczywistym
Kupujący nie przesłał oferty.
Nic.
Kupujący przesłał stawkę, która została odfiltrowana przed dotarciem na aukcję.
Tworzenie modelu określania stawek na potrzeby aukcji pierwszej ceny
Po złożeniu stawki w aukcji pierwszej ceny otrzymasz w czasie rzeczywistym informacje zwrotne, w tym pola minimum_bid_to_win i sampled_mediation_cpm_ahead_of_auction_winner, jeśli stawka nie została odfiltrowana z aukcji. Te sygnały mogą być wykorzystywane w logice ustalania stawek, aby określić, o ile wyższa lub niższa mogła być Twoja stawka, aby wygrać wyświetlenie.
minimum_bid_to_win: minimalna stawka, jaką można było złożyć, aby wygrać aukcję w ramach ustalania stawek w czasie rzeczywistym. Jeśli wygrasz aukcję, będzie to najniższa stawka, jaką możesz złożyć, aby wygrać. Jeśli aukcja została przegrana, będzie to zwycięska stawka.
sampled_mediation_cpm_ahead_of_auction_winner: jeśli w łańcuchu zapośredniczenia są inne sieci, wartość tego pola to cena reprezentująca przykładową stawkę z jednej z kwalifikujących się sieci zapośredniczenia, która była wyższa niż zwycięska stawka w aukcji, ważona przez oczekiwany współczynnik wypełnienia. Jeśli żadna z sieci w łańcuchu mediacji nie ma wyświetlać reklam lub wydawca nie korzysta z mediacji za pomocą pakietu SDK, wartość tego parametru będzie wynosić 0.
Jak to działa
Aby opisać obliczenia używane do określania możliwych wartości minimum_bid_to_win i sampled_mediation_cpm_ahead_of_auction_winner, musimy najpierw zdefiniować te pojęcia:
Poniżej przedstawiamy wartości CPM w łańcuchu zapośredniczenia w porządku malejącym:
\[C_1, C_2, …, C_n\]
Poniżej przedstawiamy odpowiednie współczynniki wypełnienia dla wartości CPM w łańcuchu mediacji:
\[f_1, f_2, …, f_n\]
Poniżej znajduje się funkcja służąca do określania oczekiwanego CPM i jego prawdopodobieństwa na podstawie elementu łańcucha mediacji \(i\)na podstawie podanego współczynnika wypełnienia:
\(X_i = \{C_i\) z prawdopodobieństwem \(f_i\); \(0\) z prawdopodobieństwem \(1 - f_i\}\)
Ostateczny zwycięski łańcuch zapośredniczenia będzie wyglądać tak:
\[\{C_1, C_2, …, C_K, W\}\]
gdzie \(W\) to zwycięska stawka, a \(C_K > W >= C_{K+1}\)
Cena minimalna jest oznaczona jako \(F\).
Druga najwyższa stawka jest oznaczona symbolem \(R\).
Obliczenia dla zwycięzcy aukcji
Pole
Obliczenie
minimum_bid_to_win
\(max\{F, R, X_{K+1}, …, X_n\}\)
sampled_mediation_cpm_ahead_ of_auction_winner
\(\{C_i\) z prawdopodobieństwem \(\prod_{j=1}^{i-1}(1-f_j) \cdot f_i \div \prod_{j=1}^{K}(1-f_j)\}\)
Dotyczy: \(1 <= i <= K\).
Obliczenia dla przegranego aukcji
Pole
Obliczenie
minimum_bid_to_win
\(max\{F, W\}\)
sampled_mediation_cpm_ahead_ of_auction_winner
\(max\{X_1, …, X_K\}\)
Przykład z prostym łańcuchem zapośredniczenia
Załóżmy, że wydawca korzysta zarówno z określania stawek w czasie rzeczywistym, jak i z łańcucha zapośredniczenia SDK w sposób opisany poniżej:
Łańcuch zapośredniczenia SDK
Oczekiwany CPM
Współczynnik wypełnienia
Sieć 1
\(C_1 = $3.00\)
\(f_1 = 5\%\)
Sieć 2
\(C_2 = $2.00\)
\(f_2 = 45\%\)
Sieć 3
\(C_3 = $0.50\)
\(f_3 = 80\%\)
Sieć 4
\(C_4 = $0.10\)
\(f_4 = 85\%\)
Załóżmy, że w wyniku aukcji RTB otrzymaliśmy te dane:
Aukcja RTB
CPM
Zwycięzca aukcji (W)
1 USD
Drugie miejsce w aukcji (R)
0,05 USD
Cena minimalna (F)
0 USD
Stawka, która wygrała aukcję
Poniżej znajdziesz przykład obliczania wartości i prawdopodobieństw dla elementów minimum_bid_to_win i sampled_mediation_cpm_ahead_of_auction_winner w przypadku wygranej stawki.
Poniżej znajdziesz przykład obliczania wartości i prawdopodobieństw dla elementów minimum_bid_to_win i sampled_mediation_cpm_ahead_of_auction_winner w przypadku stawek, które przegrały.
minimum_bid_to_win
Prawdopodobieństwo
\(max(F, W) = $1.00\)
\(100\%\)
sampled_mediation_cpm_ ahead_of_auction_winner
Prawdopodobieństwo
\(C_1 = $3.00\)
\(f_1 = 5\%\)
\(C_2 = $2.00\)
\((1-f_1) \cdot f_2 =~ 42.8\%\)
\(0\)
\((1-f_1) \cdot (1-f_2) =~ 52.2\%\)
Rozdzielanie stawek
Rozdzielanie pytań o stawkę to proces przetwarzania jednego złożonego pytania o stawkęBidRequest na wiele pytań o stawkę, które są wysyłane do Twojej aplikacji. Gdy pytanie o stawkę zostanie spłaszczone, możesz sprawdzić, które pytania o stawkę były częścią pierwotnego pytania, ponieważ będą miały identyczną wartość w polu BidRequest.ext.google_query_id.
Wygładzanie stawek jest domyślnie włączone, ale jeśli chcesz je wyłączyć, skontaktuj się z menedżerem konta.
Formaty reklam
Niektóre możliwości reklamowe mogą akceptować wiele formatów. W przypadku rozdzielania pytań o stawkę każdy format jest wysyłany w ramach osobnego pytania o stawkę, w którym atrybuty takie jak kwalifikujące się identyfikatory rozliczeniowe są powiązane z formatem określonym w żądaniu.
Pytania o stawkę zawierające te formaty zostaną rozdzielone na osobne pytania:
Baner
Wideo
Audio
Natywna
Przykład spłaszczania formatu reklamy
Poniżej znajdziesz przykład uproszczonego żądania stawki w formacie JSON OpenRTB bez spłaszczania formatu reklamy w porównaniu z równoważnym zestawem spłaszczonych żądań:
Możliwość wyświetlenia reklamy w przypadku danego oferenta może dotyczyć różnych rodzajów umów, a nie tylko aukcji otwartej. W przypadku spłaszczania stawek w umowach wysyłane jest jedno żądanie stawki na aukcję otwartą i jedno na każdy typ umowy o stałej cenie. W praktyce ograniczenia reklam mogą się różnić w zależności od aukcji i rodzajów transakcji o stałej cenie. Na przykład w przypadku danej możliwości wyświetlenia reklamy wideo, która jest dostępna zarówno w aukcji otwartej, jak i w transakcji o stałej cenie, reklamodawca otrzyma osobne żądania stawek dla każdej z nich, w których mogą się różnić ograniczenia, takie jak maksymalny czas trwania reklamy i to, czy dozwolone są reklamy możliwe do pominięcia. Dzięki temu spłaszczenie zastosowane do możliwości wyświetlenia reklamy ułatwia rozpoznawanie ograniczeń reklamy w przypadku aukcji otwartej i umowy o stałej cenie.
Możliwość pominięcia i czas trwania filmu
Specyfikacja OpenRTB nie zawiera osobnych pól do określania maksymalnego czasu trwania reklam wideo możliwych i niemożliwych do pominięcia. Wdrożenie Google wykorzystuje spłaszczanie stawek do rozróżniania tych wartości za pomocą istniejących pól BidRequest.video.maxduration i BidRequest.video.skip.
Oto przykład spłaszczania zasobów reklamowych wideo, gdy maksymalny czas trwania reklamy niemożliwej do pominięcia wynosi 15, a maksymalny czas trwania reklamy możliwej do pominięcia to 60.
Przykład
max_ad_duration
skip (prawda LUB fałsz)
Oryginalna prośba bez spłaszczania
15
true
Spłaszczone żądanie nr 1: reklama niemożliwa do pominięcia
15
false
Spłaszczone żądanie 2: można pominąć
60
true
Rozdzielanie pytań o stawkę na podstawie czasu trwania filmu możliwego do pominięcia będzie miało miejsce tylko wtedy, gdy zostaną spełnione te warunki:
Żądanie zezwala na film.
Zezwól na reklamy wideo możliwe i niemożliwe do pominięcia, a maksymalne czasy trwania tych reklam różnią się od siebie.
To żądanie kwalifikuje się do aukcji prywatnej lub otwartej.
Aby zrezygnować z tego typu uśredniania, skontaktuj się z technicznym menedżerem konta. Gdy ta opcja jest wyłączona, a wydawca zezwala na reklamy wideo możliwe i niemożliwe do pominięcia o różnych maksymalnych czasach trwania w zależności od możliwości pominięcia, parametr skip zostanie ustawiony na true, a parametr maxduration zostanie ustawiony na krótszy czas trwania spośród ograniczeń dotyczących reklam możliwych i niemożliwych do pominięcia.
Bloki reklamowe wideo
Pytania o stawkę dotyczące bloku reklam wideo z wieloma możliwościami wyświetlenia reklamy są rozdzielane, tak aby każde pytanie dotyczyło pojedynczej możliwości wyświetlenia reklamy w tym bloku.
Umożliwia to składanie ofert w przypadku wielu możliwości wyświetlania reklam w danym bloku.
Open Measurement
Open Measurement umożliwia określanie zewnętrznych dostawców, którzy świadczą niezależne usługi pomiaru i weryfikacji reklam wyświetlanych w środowiskach aplikacji mobilnych.
Aby sprawdzić, czy wydawca obsługuje Open Measurement, sprawdź, czy w pytaniu o stawkę wykluczony jest atrybut OmsdkType:
OMSDK 1.0, który znajduje się w atrybutach kreacji, które wydawca może wykluczyć. Znajduje się on w atrybucie battr dla formatu Baner lub Wideo, w zależności od formatu.
Więcej informacji o interpretowaniu pytań o stawki zawierających sygnały Open Measurement znajdziesz w artykule w Centrum pomocy na temat pakietu SDK Open Measurement.
Przykładowe pytania o stawkę
W sekcjach poniżej znajdziesz przykładowe żądania stawek dla różnych typów reklam.
[null,null,["Ostatnia aktualizacja: 2026-01-20 UTC."],[],["Bid requests are HTTP POSTs using OpenRTB Protobuf, replacing the deprecated Google RTB protocol. Parsing involves `ParseFromString()` to access fields in the `BidRequest` object. Billing IDs, found in `BidRequest.imp.ext.billing_id` and `BidRequest.imp.pmp.deal.ext.billing_id`, must be specified in `BidResponse.seatbid.bid.ext.billing_id`. Key information comes from dictionary files. Bid URL macros dynamically insert `BidRequest` data. Complex bid requests can be broken into simpler, flattened requests per format or deal, such as skippable/non-skippable video ads, or video pods. Bidders get real-time feedback. The provided sample requests are used to help the process.\n"]]