Reklamy w pakiecie SDK kupującego korzystają z kreacji renderowanych przez Twój własny pakiet SDK.
Zasoby reklamowe aplikacji mobilnych od wydawców, którzy zintegrowali w swojej aplikacji adapter ustalania stawek, mogą akceptować stawki z formatem reklamy renderowanej przez pakiet SDK kupującego. Sposób ich renderowania zależy od implementacji pakietu SDK i SDKRenderedAd
przesłanych w odpowiedzi na zapytanie o kwotę stawki.
Możesz ustawić stawkę, która obejmuje reklamę renderowaną przez pakiet SDK kupującego lub inny format reklamy obsługiwany przez pakiet SDK do reklam mobilnych Google, ale stawki zawierające oba te elementy są filtrowane.
Wymagania
Reklamy w pakiecie SDK dla kupujących są dostępne dla zatwierdzonych kupujących. Ten format wymaga dodatkowych działań od Ciebie i wydawcy. Aby skonfigurować konto na potrzeby reklam z pakietu SDK dla kupujących, skontaktuj się z menedżerem ds. technicznych kont. Następnie możesz zaimplementować adapter ustalania stawek, który umożliwi Twojemu pakietowi SDK komunikowanie się z pakietem SDK do reklam mobilnych Google. Wydawca musi zintegrować pakiet SDK i adapter z aplikacjami mobilnymi.
Zalecamy przesłanie kreacji do sprawdzenia, zanim uwzględnisz je w odpowiedzi na pytanie o stawkę. Jeśli nie wiesz, jaki typ kreacji chcesz użyć, skontaktuj się z menedżerem technicznym konta.
Jeśli żądanie stawki obsługuje ten format reklamy, możesz określić reklamę, która będzie renderowana za pomocą pakietu SDK. W tym celu ustaw pole sdk_rendered_ad
w odpowiedzi na żądanie stawki.
Pytanie o stawkę
Żądania o stawkę dotyczące zasobów reklamowych aplikacji mobilnych zawierają szczegółowe informacje o pakietach SDK i adapterach w aplikacji wydawcy, których możesz używać do renderowania w tych polach:
- Identyfikator pakietu SDK
Na podstawie żądania stawki możesz znaleźć identyfikator pakietu SDK, który musisz podać w odpowiedzi na stawkę w polu
BidRequest.app.ext.installed_sdk.id
.Więcej informacji znajdziesz w dokumentacji referencyjnej
InstalledSdk
.- Mapowanie jednostek reklamowych
Za pomocą żądania stawki możesz znaleźć mapowania jednostek reklamowych, które pasują do slotu stawki z polem
BidRequest.imp.ext.ad_unit_mapping
.Więcej informacji znajdziesz w dokumentacji referencyjnej
AdUnitMapping
.- Bezpieczne sygnały
Wydawcy mogą udostępniać licytującym bezpieczne sygnały. Znajdziesz je w sekcji
BidRequest.imp.ext.buyer_generated_request_data.data
.Więcej informacji o sposobie przedstawiania bezpiecznych sygnałów znajdziesz w dokumentacji referencyjnej
BuyerGeneratedRequestData
.- Prośby o testy
Aby sprawdzić, czy żądanie stawki jest testem, możesz użyć pola
BidRequest.test
.Więcej informacji o tym polu znajdziesz w
BidRequest
dokumentacji referencyjnej.
Przykładowe pytanie o stawkę
id: "<bid_request_id>"
imp {
id: "1"
banner {
w: 320
h: 50
...
}
...
adx_ext {
...
ad_unit_mapping {
keyvals {
key: "key_1"
value: "value_1"
}
keyvals {
key: "key_2"
value: "value_2"
}
...
format: FORMAT_BANNER
}
}
}
app {
...
adx_ext {
installed_sdk {
id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
sdk_version {
major: 1
minor: 2
micro: 30
}
adapter_version {
major: 1
minor: 2
micro: 3000
}
}
installed_sdk {
...
}
...
}
}
device {
...
}
user {
...
}
adx_ext {
eids {
source: "com.google.ads.mediation.partner.PartnerMediationAdapter"
uids {
id: "<partner_signal_string>"
}
}
}
}
at: 1
tmax: 1000
cur: "USD"
test: 1
...
adx_ext {
google_query_id: "<query_string>"
...
}
Odpowiedź na stawkę
W odpowiedzi na stawkę wymagane są te pola:
BidResponse.seatbid.bid.adomain
BidResponse.seatbid.bid.ext.billing_id
BidResponse.seatbid.bid.crid
BidResponse.seatbid.bid.w
BidResponse.seatbid.bid.h
Dodatkowo odpowiedź na zapytanie o stawkę musi zawierać te informacje:
BidResponse.seatbid.bid.ext.sdk_rendered_ad
- Identyfikator pakietu SDK
W polu
id
podaj identyfikator pakietu SDK, aby renderować reklamę.Identyfikator znajdziesz w
BidRequest.app.ext.installed_sdk
.- Zadeklarowana reklama
Użyj
BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad
, aby przesłać kreację, która spełnia wymagania podane wBidRequest.imp.ext.creative_enforcement_settings
i reprezentuje dane renderowania reklamy. Wypełnij tylko jedną z tych właściwości:html_snippet
,video_url
,video_vast_xml
lubnative_response
.Jeśli nie wypełnisz pola
declared_ad
, nie będziemy mogli sprawdzić kreacji, a wszystkie stawki z tą kreacją zostaną odfiltrowane z aukcji.Więcej informacji o deklarowanej reklamie znajdziesz w dokumentacji
DeclaredAd
.- Renderowanie danych
Użyj pola
BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data
, aby podać dane, których pakiet SDK kupującego będzie używać do renderowania reklamy.Stawki na potrzeby umieszczania reklamy z pakietu SDK kupującego muszą zawierać w polu
declared_ad
kreację. Zadeklarowana reklama musi dokładnie odzwierciedlaćrendering_data
.Oto przykładowy obiekt
SdkRenderedAd
:{ "id": "1234567", "rendering_data": "\xd58...,\xd4\x89\xd\xf9", "declared_ad": { "html_snippet": "<iframe src=\"https://example.com/ads?id=123& curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>", } }
Zalecamy korzystanie z interfejsu API określania stawek w czasie rzeczywistym, aby przesyłać kreacje do sprawdzenia, zanim uwzględnisz je w odpowiedzi na pytanie o stawkę.
Więcej informacji o polach SdkRenderedAd
znajdziesz w przewodniku OpenRTB.
Przykładowa odpowiedź na pytanie o stawkę
Oto przykładowe odpowiedzi na oferty dla każdego formatu reklamy:
Baner
id: "<bid_request_id>"
seatbid {
bid {
id: "<bidder_generated_response_id>"
impid: "1"
price: 99
adomain: "https://play.google.com/store/apps/details?id=com.test.app"
cid: "<billing_id>"
crid: "<creative_id>"
w: 320
h: 50
burl: "https://abc.com/billing?td=fn&win_price=${AUCTION_PRICE}"
adx_ext {
sdk_rendered_ad {
id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
rendering_data: "<rendering_data_string>"
declared_ad {
click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
html_snippet: "<!doctype html> <html> ... </html>"
}
}
event_notification_token {
payload: "<payload_string>"
}
billing_id: 141763360450
}
}
}
bidid: "<bidder_generated_response_id>"
cur: "USD"
Pełnoekranowa
id: "<bid_request_id>"
seatbid {
bid {
id: "<bidder_generated_response_id>"
impid: "1"
price: 400
adomain: "https://play.google.com/store/apps/details?id=com.test.app"
cid: "<billing_id>"
crid: "<creative_id>"
w: 412
h: 775
adx_ext {
sdk_rendered_ad {
id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
rendering_data: "<rendering_data_string>"
declared_ad {
click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
video_vast_xml: "<VAST version=\"2.0\"><Ad>...</Ad></VAST>"
}
}
event_notification_token {
payload: "<payload_string>"
}
}
}
}
bidid: "<bidder_generated_response_id>"
cur: "USD"
Wideo z nagrodą
id: "<bid_request_id>"
seatbid {
bid {
id: "<bidder_generated_response_id>"
impid: "1"
price: 400
adomain: "https://play.google.com/store/apps/details?id=com.test.app"
cid: "<billing_id>"
crid: "<creative_id>"
w: 412
h: 775
adx_ext {
sdk_rendered_ad {
id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
rendering_data: "<rendering_data_string>"
declared_ad {
click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
video_vast_xml: "<VAST version=\"2.0\"><Ad>...</Ad></VAST>"
}
}
event_notification_token {
payload: "<payload_string>"
}
}
}
}
bidid: "<bidder_generated_response_id>"
cur: "USD"
Natywna
id: "<bid_request_id>"
seatbid {
bid {
id: "<bidder_generated_response_id>"
impid: "1"
price: 400
adomain: "https://play.google.com/store/apps/details?id=com.test.app"
cid: "<billing_id>"
crid: "<creative_id>"
w: 1200
h: 627
adx_ext {
sdk_rendered_ad {
id: "com.google.ads.mediation.partner.PartnerMediationAdapter"
rendering_data: "<rendering_data_string>"
declared_ad {
click_through_url: "https://play.google.com/store/apps/details?id=com.test.app"
native_response {
...
assets {
id: 1
title {
text: ""
}
}
assets {
id: 2
data {
value: "<some_string>"
}
}
assets {
id: 3
data {
value: "View now"
}
}
assets {
id: 4
img {
url: "<valid_image_url>"
w: 1200
h: 627
type: 3
}
}
assets {
id: 5
img {
url: "<valid_image_url>"
w: 100
h: 100
type: 1
}
}
assets {
id: 6
data {
value: ""
}
}
assets {
id: 7
data {
value: "<some_string>"
}
}
link {
url: "<destination_link>"
}
}
}
}
event_notification_token {
payload: "<payload_string>"
}
}
}
}
bidid: "<bidder_generated_response_id>"
cur: "USD"
Sprawdzanie kreacji
Zanim kreacje zaczną się wyświetlać, sprawdzamy je pod kątem zgodności z naszymi zasadami i ustawieniami wydawcy.
Kreacje możesz przesłać do sprawdzenia na 2 sposoby:
- Interfejs Real-time Bidding API (zalecany)
Aby przesłać kreacje do weryfikacji, możesz użyć metody
buyers.creatives.create
interfejsu API określania stawek w czasie rzeczywistym.Interfejs API wymaga tylko 1 przesłania na kreację i pozwala sprawdzić stan sprawdzania kreacji.
- Odpowiedź na stawkę
Nowe kreacje możesz przesyłać bezpośrednio w odpowiedzi na stawkę.
Aby przesłać odpowiedź na zapytanie o stawkę z kreacją z pakietu SDK kupującego do sprawdzenia, musisz użyć pola
declared_ad
obiektuSdkRenderedAd
.Kreacje przesłane w odpowiedzi na pytanie o stawkę są sprawdzane dopiero po wielu stawkach. Wszystkie stawki podane przed zakończeniem weryfikacji są odfiltrowywane z aukcji. Aby sprawdzić stan kreacji po rozpoczęciu sprawdzania, możesz użyć interfejsu ustalania stawek w czasie rzeczywistym lub interfejsu API ustalania stawek w czasie rzeczywistym.
Więcej informacji znajdziesz w przewodniku po kreacjach.