Gdy aplikacja przetworzy pytanie o stawkę od Google, musi utworzyć i wysyłanie odpowiedzi. Ten przewodnik wyjaśnia, jak pisać kod aplikacji na potrzeby kompilacji odpowiedź.
Utwórz wiadomość na temat stawki
Authorized Buyers wysyła parametr BidRequest
jako treść wiadomości
POST
HTTP. Odpowiedź wysyłana przez aplikację musi zawierać
nagłówek Content-Type
został ustawiony na application/octet-stream
i treści wiadomości składającej się z bufora zserializowanego protokołu. Protokół
bufor to komunikat BidResponse
zgodny z definicją
realtime-bidding.proto
Aplikacja musi zwracać plik, który można przeanalizować
BidResponse
w odpowiedzi na każde BidRequest
. tymczasowe zawieszenie użytkownika
a odpowiedzi, których nie można przeanalizować, są uznawane za błędy, a Google ogranicza
licytujących z wysokim odsetkiem błędów.
Jeśli nie chcesz ustalać stawki za wyświetlenie, możesz ustawić parametr
processing_time_ms
bez zmian i pozostaw wszystkie pozostałe pola
puste. realtime-bidding.proto
możesz uzyskać z
danych referencyjnych.
Identyfikator kreacji
BidResponse
określa kreację w tagu
Pole buyer_creative_id
(maks. 64 bajty). Nawet podobne kreacje
musi mieć unikalne wartości dla buyer_creative_id
, jeśli różnią się w
żadnych istotnych cech, takich jak rozmiar, zadeklarowany adres URL,
atrybutów kreacji i typów dostawców. Innymi słowy, musisz określić różne wartości,
do dwóch dowolnych reklam, które:
- wyglądają lub zachowuj się inaczej;
- Renderuj na różnych obrazach.
- renderowanie w różny sposób (np. jedna reklama składa się z obrazu, a drugi – Flash).
Projektując aplikację, należy wybrać systematyczny sposób generowanie identyfikatorów dopasowanych do rodzajów planowanych kreacji do przesłania.
Oznaczenie reklamy
Musisz zadeklarować atrybuty kreacji, które w pełni opisują
i jego kierowanie w przypadku: BidResponse.Ad.attribute
.
wymagane atrybuty to (zobacz też pełną listę obsługiwanych atrybutów
atrybutów w
buyer-declarable-creative-attributes.txt):
7 Tagging: IsTagged
Reklama zawiera piksel lub obraz typu beacon, który umożliwia tworzenie listę identyfikatorów plików cookie używanych w późniejszym remarketingu.8 Remarketing: IsRemarketing
Reklama jest kierowana na użytkowników na podstawie identyfikatora pliku cookie lub identyfikatora urządzenia, gdzie lista identyfikatorów plików cookie lub identyfikatorów urządzeń reprezentuje zbiór konsumentów, weszli wcześniej w interakcję z witryną należącą do kupującego lub przez niego reprezentowaną.9 UserInterestTargeting: IsUserInterestTargeted
Reklama jest kierowana na użytkowników na podstawie identyfikatora pliku cookie lub identyfikatora urządzenia, gdzie lista identyfikatorów plików cookie lub identyfikator urządzenia reprezentuje zbiór konsumentów, to grupa o wspólnych zainteresowaniach.30 InstreamVastVideoType: Vpaid
Do renderowania reklama wymaga obsługi VPAID.32 MraidType: MRAID
Do renderowania reklama wymaga interfejsu MRAID API.
Dodatkowo obsługiwane są poniższe atrybuty, ale ich deklaracja to nie są wymagane, ponieważ Authorized Buyers automatycznie je wykrywa i blokuje (lub na podstawie wykrytych wartości, a nie Twojej deklaracji. Zobacz Interfejs Creative API , gdzie znajdziesz wyjaśnienie, jak uzyskać opinię na temat wykrytych właściwości za pomocą kreacji.
34 RichMediaCapabilityType: RichMediaCapabilityFlash
Reklama wymaga obsługi Flasha.50 RichMediaCapabilityType: RichMediaCapabilityNonFlash
Reklama nie wymaga Flasha.47 RichMediaCapabilityType: RichMediaCapabilitySSL
Reklama może być renderowana na stronie z protokołem SSL. Pamiętaj, że Authorized Buyers traktuje kreacje z różnymi zadeklarowanymi wartościami tego atrybutu jako odmiennymi (zostaną one sprawdzone oddzielnie i mają różny stan zatwierdzenia). Dlatego, jeśli stosujesz zarówno protokoły SSL, jak i innej kreacji niż SSL, musisz odpowiednio zadeklarować ten atrybut. by w AdX odzwierciedlić to rozróżnienie.
Pola Otwartego ustalania stawek
Odpowiedzi na stawkę wysyłane przez licytujących z giełd i sieci uczestniczących w otwarciu Określanie stawek jest podobne do tych w Authorized Buyers, którzy uczestniczą w standardowym określania stawek w czasie rzeczywistym. Klienci korzystający z Otwartego ustalania stawek mogą określić niewielką liczbę dodatkowych pól, a kilka z istniejących pól może mieć alternatywne zastosowania. Te należy uwzględnić następujące elementy:
OpenRTB | Authorized Buyers. | Szczegóły |
---|---|---|
BidResponse.imp[].pmp.deals[].id |
BidResponse.ad[].adslot[].exchange_deal_id |
Identyfikator umowy z przestrzeni nazw giełdy powiązanej z tym i raportowana wydawcom. |
BidResponse.seatbid[].bid[].ext.exchange_deal_type |
BidResponse.ad[].adslot[].exchange_deal_type |
typ umowy zgłaszanej wydawcom, który ma wpływ na sposób realizacji umowy; traktowanych w aukcji. |
BidResponse.seatbid[].bid[].ext.third_party_buyer_token |
BidResponse.ad[].adslot[].third_party_buyer_token |
Token używany do identyfikowania informacji o kupującym zewnętrznym, jeśli jest giełdą pośredniczącą w uczestnictwie w Otwartym ustalaniu stawek. Dane te uzyskuje się z zewnętrznego kupującego i musi zostać przekazany do Google bez zmian w stawce . |
Rekomendacje
- Włącz stałe połączenia HTTPS (zwane też „utrzymaniem aktywności” lub „ponowne użycie połączenia”) na Twoich serwerach. Ustaw limit czasu na 10 sekund w – wyższe wartości są w wielu przypadkach korzystne. Google weryfikuje podczas wstępnych testów czasu oczekiwania aplikacji, ponieważ Usługa Authorized Buyers często wysyła żądania i musi unikać narzut czasu oczekiwania związanego z nawiązaniem oddzielnego połączenia TCP dla każdego użytkownika.
Dołącz opcjonalny link monitorujący wyświetlenia, aby śledzić, kiedy tag a nie w chwili wygranej przez licytującego. Z powodu porzuceń między wygranymi a renderowaniem, zapewnia to dokładniejsze śledzenie statystyk.
- Pamiętaj, że kod licytującego nie musi być zależny od wycofanych pól. co może spowodować błędy w ustalaniu stawek.
- Uwzględnij
BidResponse.Ad.width
iBidResponse.Ad.height
na liście:BidResponse
. OBidResponse
w żądaniu dotyczącym wielu rozmiarów reklam musi zawierać wartościwidth
iheight
, w przeciwnym razie zostanie on zostały usunięte z aukcji. - Ogranicz rozmiar odpowiedzi do mniej niż 8K. Bardzo duże odpowiedzi mogą zwiększyć i powodują przekroczenie czasu oczekiwania.
- Przestrzegaj wytycznych dotyczących stawki za zasoby reklamowe na iOS, które wymagają atrybucji SKAdNetwork.
Przykładowa odpowiedź na pytanie o stawkę
Poniższe przykłady przedstawiają czytelne dla człowieka próbki Protobuf i Żądania JSON.
Plik JSON OpenRTB
Bufor protokołu OpenRTB
Ważne: wiadomości Protobuf przedstawione w próbki są przedstawione tutaj jako tekst zrozumiały dla człowieka. Nie jest to jednak wiadomości są wysyłane przewodowo. Korzystanie z protokołu Google lub OpenRTB , akceptujemy tylko zserializowane wiadomości na temat odpowiedzi na stawkę.
Możesz utworzyć i zserializować wiadomość BidResponse
za pomocą polecenia
ten kod w 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śl kreację
Odpowiedź na stawkę określa kreację, która zostanie wyświetlona, gdy Twoja stawka wygra. Twoja stawka
musi zawierać jeden z obsługiwanych formatów reklam (AMP, wideo, natywne). W tym
podajemy kreację w polu html_snippet
.
Możesz też określić kreację za pomocą jednej z metod następujące pola, w zależności od formatu reklamy:
- Reklama renderowana przez pakiet SDK
BidResponse.Ad.sdk_rendered_ad
- AMP
BidResponse.Ad.amp_ad_url
- Filmu
BidResponse.Ad.video_url
lubBidResponse.Ad.video_vast_xml
- Reklama natywna
BidResponse.Ad.native_ad
Określ reklamę, która jest hostowana na Twoich serwerach, za pomocą fragmentu kodu HTML w
w polu html_snippet
tabeli BidResponse
.
jest umieszczony w elemencie iframe wstawionym na stronę, w wyniku czego reklama
pobierania i renderowania podczas wczytywania strony. Musisz stworzyć kod HTML
by reklama (baner lub reklama pełnoekranowa) wyświetlała się prawidłowo wewnątrz
iframe i odpowiednim rozmiarze dla boksu reklamowego, dla którego określasz stawkę.
Dodatkowo rozmiar reklamy zadeklarowany w odpowiedzi na stawkę musi odpowiadać dokładnie 1 kombinacji rozmiarów w pytaniu o stawkę, gdy:
- Reklama to zwykły baner (nie wideo, natywna ani pełnoekranowa).
- Licytujący zadeklarował rozmiar w odpowiedzi na stawkę. Obecna deklaracja rozmiaru wymagane, jeśli w żądaniu występuje więcej niż jeden rozmiar.
- Wyjątkiem są reklamy pełnoekranowe. Szerokość reklamy pełnoekranowej musi wynosić co najmniej 50% szerokości ekranu i wysokości co najmniej 40% wysokość ekranu.
Pole html_snippet
obsługuje dowolny prawidłowy kod HTML, który
renderuje się poprawnie, ale należy pamiętać o ograniczeniach
buyer_creative_id
w sekcji Utwórz wiadomość z odpowiedzią na stawkę. Jeden
można wykorzystać dodatkowe informacje w argumentach adresów URL, które są
pobierane z serwerów w ramach renderowania reklamy. Dzięki temu możesz
dowolne dane o wyświetleniu z powrotem na Twoje serwery.
Większość zasad dotyczących fragmentów kodu HTML zwracanych w odpowiedziach na pytania o stawkę jest taka sama jak dla reklam innych firm. Zobacz Authorized Buyers Wytyczne programu, Wymagania dla firm zewnętrznych wyświetlanie reklam i Zadeklaruj, docelowych adresów URL w reklamach.
Określ makra
Fragment kodu HTML definiujący kreację może zawierać co najmniej jeden element specjalny
konstrukcje nazywane makrami. W momencie wyświetlenia reklamy wartości są zastępowane prefiksami
. Na przykład aplikacja do określania stawek klienta może używać
WINNING_PRICE
, aby określić, ile zapłacił za reklamę,
jeśli wygra aukcję. Aby przeanalizować to makro, musisz zaimplementować parametr
która odszyfrowuje potwierdzenia cen. Zapoznaj się z ceną odszyfrowywania
z potwierdzeniami, aby dowiedzieć się więcej.
Określ makro jako część fragmentu kodu HTML w formacie
%%MACRO%%
, gdzie MACRO
to jedna z obsługiwanych
wymienionych w tabeli poniżej.
Google wymaga używania atrybutu CLICK_URL_UNESC
lub
CLICK_URL_ESC
w kreacji wyświetlanej przez firmę zewnętrzną
reklama. Google używa makr CLICK_URL
do śledzenia kliknięć.
Aby użyć makra, umieść je w reklamie, tak by adres URL był pobierany podczas
ktoś ją kliknie. Wartość zwrócona przez pobranie jest przekierowaniem do innego,
URL dołączany do CLICK_URL
.
Makro | Opis |
---|---|
ADVERTISING_IDENTIFIER |
Umożliwia kupującym otrzymanie identyfikatora IDFA na iOS lub identyfikatora wyświetlania reklam na Androidzie podczas renderowania. Przeczytaj sekcję Odszyfrowywanie identyfikatorów reklamodawcy. . |
CACHEBUSTER |
Ciąg znaków reprezentujący losową, nieoznaczoną, 4-bajtową liczbę całkowitą. |
CLICK_URL_UNESC |
URL kliknięcia reklamy bez zmiany znaczenia. We fragmencie kodu znajduje się klikany URL firmy zewnętrznej powinien bezpośrednio występować po makrze. Jeśli na przykład 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 rozwijamy się do postaci: <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 następnie przekierowuje użytkownika do klikanego adresu URL firmy zewnętrznej. |
CLICK_URL_ESC |
URL kliknięcia reklamy ze zmianą znaczenia. Użyj tego zamiast
We fragmencie HTML można na przykład wykorzystać ten kod: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a> W momencie wyświetlania reklamy rozwijamy się do postaci: <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> Spowoduje to zarejestrowanie kliknięcia przez operatora Możesz dołączyć adres URL z podwójną zmianą znaczenia po
|
CLICK_URL_ESC_ESC |
Adres URL reklamy z podwójną zmianą znaczenia. Użyj tego zamiast
We fragmencie HTML można na przykład wykorzystać ten kod: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a> W momencie wyświetlania reklamy rozwijamy się do postaci: <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ęta do http: , jeśli pytanie o stawkę nie wymaga SSL lub
https: , jeśli pytanie o stawkę wymaga protokołu SSL. |
SITE |
Domena ze zmianą znaczenia w adresie URL adresu URL treści lub anonimowy identyfikator w przypadku anonimowych zasobów reklamowych. |
SITE_URL |
Rola wycofana. Zastąpione makrem SITE, które działa identycznie. |
TZ_OFFSET |
Przesunięcie strefy czasowej. |
VERIFICATION |
Różne wartości na potrzeby produkcji i skanowania kreacji podczas weryfikacji
potoku. Format to: %%?VERIFICATION:true-val:false-val%% , gdzie dowolny
wartości oprócz makr można używać w parametrach true-val i false-val ,
także puste ciągi. W przypadku Otwartego ustalania stawek zalecamy korzystanie z tego makra:
Gdy to zrobią, platformy DSP nie będą musiały wprowadzać zmian.Jeśli na przykład kreacja ma zawierać tag %%?VERIFICATION:-1:5000%%
wtedy zastąpieniem tekstu będzie to 5000 przy wyświetlaniu, a -1 w
procesu weryfikacji. Ma to pomóc rozróżnić te dwa zestawy pingów. |
WINNING_PRICE |
Zakodowany koszt wyświetlenia (czyli CPI, a nie CPM) w
w walucie konta. Przykład: zwycięski CPM wynosi 5 zł.
odpowiada CPM na poziomie 5 000 000 mikro, czyli 5000 mikro, czyli CPI. Zdekodowany
wartość WINNING_PRICE w tym przypadku wyniesie 5000.
Zwycięska cena jest podana w CPI.
|
WINNING_PRICE_ESC |
WINNING_PRICE ze zmianą znaczenia w adresie URL. |
Zmiana znaczenia adresu URL w makrach korzysta z tego schematu:
- Spacja jest zastąpiona znakiem plusa (
+
). - Znaki alfanumeryczne (0–9, a–z, A–Z) oraz znaki z zestawu !()*,-./:_~ pozostają niezmienione.
- Pozostałe znaki są zastępowane przez
%XX
, gdzieXX
to szesnastkowy system liczbowy. liczba reprezentująca znak.
Ograniczenia dotyczące wydawców
Wydawcy używają BidRequest
, aby kontrolować, jakie reklamy mogą się wyświetlać
na dane mobilne. Musisz egzekwować ograniczenia w tych polach:
allowed_vendor_type
excluded_attribute
excluded_sensitive_category
Jedno pole określa dozwolone cechy reklamy, a drugie
niedozwolone funkcje. Nigdy nie zwracaj reklam z niedozwoloną funkcją. Dozwolone
takich jak typ dostawcy, zwraca reklamę tylko wtedy, gdy jego typ dostawcy to
Lista allowed_vendor_type
w: BidRequest
. Zobacz
komentarze do tych pól w buforze protokołu BidRequest
.
Jeśli fragment kodu HTML zostanie zwrócony w języku BidResponse
,
wymagane do dokładnego ustawiania parametrów attribute
, category
,
i click_through_url
w polu BidResponse
.
Jeśli reklama ma wiele wartości w tych polach, musisz
uwzględnianie wszystkich wartości. Wyświetl komentarze do tych pól w sekcji
Definicja bufora protokołu BidResponse
, aby uzyskać więcej informacji.
Odpowiedzi, w przypadku których nie ustawiono tych pól, są odrzucane.
Możliwe wartości parametru BidRequest.excluded_attribute
to
(patrz publisher-excludable-creative-attributes.txt):
7 Tagging: IsTagged
Reklamy są niedozwolone, jeśli zawierają piksel lub obraz typu beacon dla tworzenia listy identyfikatorów plików cookie do późniejszego ponownego marketingu.8 CookieTargeting: IsCookieTargeted
Reklamy są niedozwolone, jeśli są kierowane na klientów w oparciu o ich identyfikator pliku cookie, gdzie znajduje się lista identyfikatorów plików cookie grupa klientów, którzy wcześniej weszli w interakcję z witryną należącą do kupującego lub przez niego reprezentowaną.9 UserInterestTargeting: IsUserInterestTargeted
Reklamy są niedozwolone, jeśli są kierowane na klientów w oparciu o ich identyfikator pliku cookie, gdzie znajduje się lista identyfikatorów plików cookie zbiór konsumentów zdefiniowanych przez kupującego jako grupa o wspólnym zainteresowaniach.21 CreativeType: Html
html_snippet
isnippet_template
nie mogą być używane w reklamach polu wBidResponse.Ad
.22 CreativeType: VastVideo
Reklamy nie mogą używać polavideo_url
wBidResponse.Ad
.30 InstreamVastVideoType: Vpaid
Reklamy nie mogą wymagać obsługi VPAID do renderowania.32 MraidType: MRAID
Reklamy nie mogą wymagać interfejsu MRAID API do renderowania.34 RichMediaCapabilityType: RichMediaCapabilityFlash
Reklamy nie mogą wymagać obsługi formatu Flash.39 RichMediaCapabilityType: RichMediaCapabilityHTML5
Reklamy nie mogą wymagać funkcji HTML5 do renderowania.48 RichMediaCapabilityType: RichMediaCapabilityNonSSL
Reklamy nie mogą wysyłać żądań bez protokołu SSL.
Dlatego, jeśli pole excluded_attribute
zawiera wartość
7, nie zwracaj reklam, w których jest używany piksel lub obraz typu beacon
podczas tworzenia listy. W takiej sytuacji reklama musi ustawić wartość 7 w argumencie
polu atrybutu BidResponse
.
I podobnie, jeśli pole excluded_attribute
zawiera wartość 48,
zwracaj tylko reklamy, które można wyświetlić na stronie SSL (a odpowiednio
zadeklarować atrybut 47 RichMediaCapabilityType: RichMediaCapabilitySSL).
Również pole excluded_sensitive_category
w tabeli
BidRequest
używa kodów z
ad-sensitive-categories.txt
dostępny na stronie dane referencyjne. Oto rozszerzone
opisy niektórych z tych kodów:
3 Politics
obejmuje politykę lub kontrowersyjne tematy społeczne; nie obejmuje reklam organizacji medialnych, które nie prezentują stronniczych poglądów.4 Dating
Obejmuje usługi i portale randkowe.5 Religion
obejmuje reklamy religijne propagujące określone poglądy religijne lub nawołujące przeciw nim; nie obejmuje astrologii ani duchowości niewyznaniowej.7 Video Games (Casual & Online)
Obejmuje gry wideo, gry online i gry do pobrania. Nie obejmuje konsol do gier wideo.8 Ringtones & Downloadables
Dodatki do telefonów komórkowych, w tym dzwonki i inne gadżety do pobrania, takie jak wygaszacze ekranu i tapety na komputery oraz układy profilu i grafiki do sieci społecznościowych.10 Get Rich Quick
Plany obiecujące szybkie zarobki.18 Weight Loss
Obejmuje odchudzanie, diety oraz powiązane produkty i programy; nie obejmuje zdrowego żywienia ani ogólnych reklam dotyczących kondycji fizycznej.19 Cosmetic Procedures & Body Modification
Zabiegi liftingu, sukcji, laserowe, usuwanie i przywracanie włosów, tatuaże i modyfikacje ciała.23 Drugs & Supplements:
Zakaz obejmuje farmaceutyki, witaminy, suplementy oraz sprzedawców oferujących te produkty. nie obejmuje źródeł informacji o lekach.24 Sexual & Reproductive Health
Obejmuje reklamy produktów i usług związanych z seksualnością i płodnością; nie obejmuje zwykłych materiałów związanych z ciążą.35 Social Casino Games
Obejmuje symulacje gier hazardowych (takich jak poker, jednoręki bandyta, bingo, loterie, zakłady sportowe, obstawianie gonitw, a także inne gry karciane i kasynowe), w których nie można wygrać niczego, co ma jakąkolwiek wartość (tj. pieniędzy ani nagród).36 Significant Skin Exposure
Obrazy w reklamach pokazujące ciało ludzkie, które od wysokości mostka do połowy uda nie jest niczym okryte. ciało jest ubrane w bieliznę, stroje kąpielowe, bieliznę lub inną przezroczystą odzież albo jest ubrane w inne przedmioty, takie jak ręcznik lub pościel.37 Sensationalism
Reklamy, które zachęcają użytkowników do kliknięcia, odwołując się do ich ciekawości. Często wykorzystują prowokacyjny przekaz wyrażony w przesadnym stylu lub z przesadną grafiką. Obejmuje reklamy, których głównym tematem jest sensacja (np. aresztowania, śmierć czy rozwody celebrytów) lub które mają szokować odbiorców.
Open Measurement
Open Measurement pozwala wskazać dostawców zewnętrznych, którzy świadczą niezależne usługi pomiarowe i usług weryfikacyjnych w przypadku reklam wyświetlanych w środowiskach aplikacji mobilnych.Obsługiwane formaty reklam obecnie obejmują reklamy wideo, banery i reklamy pełnoekranowe. Więcej informacji na temat konfiguracji informacje o używaniu Open Measurement w odpowiedziach na stawkę z tymi formatami znajdziesz w Centrum pomocy SDK Open Measurement SDK. .
Przykładowe odpowiedzi na stawkę
W sekcjach poniżej znajdziesz przykładowe odpowiedzi na pytania o stawkę w przypadku różnych typów reklam.