Reklamy z pakietu SDK kupującego korzystają z kreacji renderowanych przez Twój pakiet SDK.
Zasoby reklamowe aplikacji mobilnych wydawców, którzy zintegrują z aplikacją Twój adapter do określania stawek, mogą akceptować stawki w formacie reklamy renderowanej przez pakiet SDK kupującego. Sposób ich renderowania zależy od implementacji pakietu SDK i SDKRenderedAd, które przesyłasz w odpowiedzi na pytanie o stawkę.
Możesz przesłać stawkę zawierającą reklamę renderowaną przez pakiet SDK kupującego lub dowolny inny format reklamy obsługiwany przez pakiet SDK do reklam mobilnych Google, ale wszystkie stawki zawierające oba te elementy są odfiltrowywane.
Wymagania
Reklamy z pakietu SDK kupującego są dostępne dla zatwierdzonych kupujących. Możesz bezpośrednio zintegrować Authorized Buyers z pakietem SDK do reklam mobilnych Google, w tym z mediacją, adapterami do licytujących i bezpiecznymi sygnałami. Wydawca musi zintegrować Twój pakiet SDK i adapter z aplikacjami mobilnymi.
Aby uzyskać więcej informacji o tych punktach integracji lub omówić inne integracje sygnałów lub przetwarzania na urządzeniu z pakietem SDK do reklam mobilnych Google w celu zwiększenia trafności reklam lub dokładności pomiarów, skontaktuj się z technicznym menedżerem konta.
Zanim uwzględnisz kreacje w odpowiedzi na pytanie o stawkę, zalecamy przesłanie ich do sprawdzenia.
Jeśli pytanie o stawkę obsługuje ten format reklamy, możesz określić reklamę, która będzie się wyświetlać za pomocą Twojego pakietu SDK, ustawiając pole sdk_rendered_ad w odpowiedzi na pytanie o stawkę.
Pytanie o stawkę
Żądania stawek dotyczące zasobów reklamowych aplikacji mobilnych zawierają szczegółowe informacje o zestawach SDK i adapterach w aplikacji wydawcy, których możesz używać do renderowania w tych polach:
- Identyfikator pakietu SDK
W żądaniu stawki możesz znaleźć identyfikator pakietu SDK, który musisz podać w odpowiedzi na pytanie o stawkę w polu
BidRequest.app.ext.installed_sdk.id.Więcej informacji na ten temat znajdziesz w
InstalledSdkdokumentacji.- Mapowanie jednostki reklamowej
Za pomocą pytania o stawkę możesz znaleźć mapowania jednostek reklamowych, które pasują do miejsca na reklamę w pytaniu o stawkę, korzystając z pola
BidRequest.imp.ext.ad_unit_mapping.Więcej informacji na ten temat znajdziesz w
AdUnitMappingdokumentacji.- Bezpieczne sygnały
Wydawcy mogą udostępniać licytującym bezpieczne sygnały. Znajdziesz je w
BidRequest.imp.ext.buyer_generated_request_data.data.Więcej informacji o tym, jak bezpieczne sygnały są reprezentowane w
BuyerGeneratedRequestDatadokumentacji.- Żądania testowe
Za pomocą pola
BidRequest.testmożesz sprawdzić, czy pytanie o stawkę jest testowe.Więcej informacji o tym polu znajdziesz w
BidRequestdokumentacji 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 pytanie o stawkę
W odpowiedzi na pytanie o stawkę wymagane są te pola:
BidResponse.seatbid.bid.adomainBidResponse.seatbid.bid.ext.billing_idBidResponse.seatbid.bid.cridBidResponse.seatbid.bid.wBidResponse.seatbid.bid.h
Dodatkowo w odpowiedzi na pytanie o stawkę musisz wypełnić
BidResponse.seatbid.bid.ext.sdk_rendered_ad
te informacje:
- Identyfikator pakietu SDK
W polu
idpodaj identyfikator, który umożliwi pakietowi SDK renderowanie reklamy.Identyfikator znajdziesz w
BidRequest.app.ext.installed_sdk.- Zadeklarowana reklama
Użyj
BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad, aby podać kreację, która spełnia wymagania określone wBidRequest.imp.ext.creative_enforcement_settingsi odzwierciedla dane renderowania reklamy. Należy wypełnić tylko jeden z tych atrybutów:html_snippet,video_url,video_vast_xmllubnative_response.Jeśli nie wypełnisz pola
declared_ad, nie będziemy mogli sprawdzić kreacji, a wszystkie stawki za tę kreację zostaną odfiltrowane z aukcji.Więcej informacji o zadeklarowanej reklamie znajdziesz w
DeclaredAddokumentacji.- Renderowanie danych
Użyj pola
BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data, aby podać dane, które pakiet SDK kupującego może wykorzystać do renderowania reklamy.Stawki za umieszczenie reklamy z pakietu SDK kupującego muszą określać kreację w polu
declared_ad. 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 używanie interfejsu API określania stawek w czasie rzeczywistym do przesyłania kreacji 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 stawki w przypadku poszczególnych formatów reklam:
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:
- Real-time Bidding API (zalecany)
Aby przesłać kreacje do sprawdzenia, możesz użyć metody
buyers.creatives.createinterfejsu API określania stawek w czasie rzeczywistym.Interfejs API wymaga tylko 1 zgłoszenia na kreację i umożliwia sprawdzenie stanu weryfikacji kreacji.
- Odpowiedź na pytanie o stawkę
Nowe kreacje możesz przesyłać bezpośrednio w odpowiedzi na pytanie o stawkę.
Aby przesłać do sprawdzenia odpowiedź na zapytanie o stawkę z kreacją pakietu SDK kupującego, musisz użyć pola
declared_adw obiekcieSdkRenderedAd.Kreacje przesłane w odpowiedzi na pytanie o stawkę są sprawdzane dopiero po wielu pytaniach o stawkę. Wszystkie stawki złożone przed zakończeniem weryfikacji są odfiltrowywane z aukcji. Aby sprawdzić stan kreacji po rozpoczęciu sprawdzania, możesz użyć interfejsu określania stawek w czasie rzeczywistym lub interfejsu API określania stawek w czasie rzeczywistym.
Więcej informacji znajdziesz w przewodniku po kreacjach.