Gli annunci SDK dell'acquirente utilizzano le creatività visualizzate dal tuo SDK.
L'inventario per app mobile dei publisher che integrano il tuo adattatore per le offerte nella propria app può accettare le offerte con il formato dell'annuncio visualizzato dall'SDK dell'acquirente. Il modo in cui vengono visualizzati si basa sull'implementazione dell'SDK e sul valore SDKRenderedAd
inviato nella risposta all'offerta.
Puoi fare un'offerta che includa un annuncio visualizzato dall'SDK di un acquirente o qualsiasi altro formato supportato dall'SDK Google Mobile Ads, ma tutte le offerte che contengono entrambi gli elementi vengono filtrate.
Requisiti
Gli annunci SDK acquirente sono disponibili per gli acquirenti approvati. Questo formato richiede un impegno aggiuntivo da parte tua e dell'editore. Contatta il tuo Technical Account Manager per configurare il tuo account per gli annunci SDK dell'acquirente. Puoi quindi implementare un adattatore Bidding che consenta al tuo SDK di comunicare con l'SDK Google Mobile Ads. Il publisher deve integrare il tuo SDK e il tuo adattatore nelle proprie app mobile.
Ti consigliamo di inviare le creatività per la revisione prima di includerle in una risposta all'offerta. Contatta il tuo Technical Account Manager se non conosci il tipo di creatività al momento dell'offerta.
Se una richiesta di offerta supporta questo formato dell'annuncio, puoi specificare un annuncio che viene visualizzato con il tuo SDK impostando il campo sdk_rendered_ad
nella risposta all'offerta.
Richiesta di offerta
Le richieste di offerta per l'inventario per app mobile includono dettagli sugli SDK e sugli adattatori nell'app del publisher che puoi utilizzare per il rendering nei seguenti campi:
- ID SDK
Puoi utilizzare la richiesta di offerta per trovare l'ID SDK che devi fornire nella risposta all'offerta con il campo
BidRequest.app.ext.installed_sdk.id
.Per scoprire di più, consulta la documentazione di riferimento di
InstalledSdk
.- Mappatura delle unità pubblicitarie
Puoi utilizzare la richiesta di offerta per trovare le mappature delle unità pubblicitarie corrispondenti allo slot di offerta con il campo
BidRequest.imp.ext.ad_unit_mapping
.Per scoprire di più, consulta la documentazione di riferimento di
AdUnitMapping
.- Indicatori sicuri
I publisher possono condividere indicatori sicuri con gli offerenti. Puoi trovarli in
BidRequest.imp.ext.buyer_generated_request_data.data
.Per scoprire di più su come vengono rappresentati gli indicatori sicuri, consulta la documentazione di riferimento di
BuyerGeneratedRequestData
.- Richieste di test
Puoi utilizzare il campo
BidRequest.test
per verificare se la richiesta di offerta è un test.Per scoprire di più su questo campo, consulta la documentazione di riferimento di
BidRequest
.
Esempio di richiesta di offerta
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>"
...
}
Risposta all'offerta
I seguenti campi sono obbligatori nella risposta all'offerta:
BidResponse.seatbid.bid.adomain
BidResponse.seatbid.bid.ext.billing_id
BidResponse.seatbid.bid.crid
BidResponse.seatbid.bid.w
BidResponse.seatbid.bid.h
Inoltre, la risposta all'offerta deve compilare
BidResponse.seatbid.bid.ext.sdk_rendered_ad
con quanto segue:
- ID SDK
Utilizza il campo
id
per fornire l'ID necessario all'SDK per visualizzare l'annuncio.Puoi trovare l'ID in
BidRequest.app.ext.installed_sdk
.- Annuncio dichiarato
Utilizza
BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad
per fornire una creatività che soddisfi i requisiti riportati inBidRequest.imp.ext.creative_enforcement_settings
e che sia rappresentativa dei dati di rendering dell'annuncio. Deve essere compilato solo uno trahtml_snippet
,video_url
,video_vast_xml
onative_response
.Se non completi
declared_ad
, non possiamo esaminare la creatività e tutte le offerte con la creatività vengono filtrate dall'asta.Per scoprire di più sull'annuncio dichiarato, consulta la documentazione di riferimento di
DeclaredAd
.- Rendering dei dati
Utilizza il campo
BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data
per fornire i dati da utilizzare dall'SDK dell'acquirente per visualizzare il tuo annuncio.Le offerte per pubblicare un annuncio SDK dell'acquirente devono specificare una creatività nel campo
declared_ad
. L'annuncio dichiarato deve rappresentare con precisione ilrendering_data
.Ecco un oggetto
SdkRenderedAd
di esempio:{ "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>", } }
Ti consigliamo di utilizzare l'API Real-time Bidding per inviare le creatività per la revisione prima di includerle in una risposta all'offerta.
Per ulteriori dettagli sui campi SdkRenderedAd
, consulta la guida OpenRTB.
Esempio di risposta all'offerta
Di seguito sono riportate risposte di offerta di esempio per ogni formato dell'annuncio:
Banner
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"
Interstitial
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"
Video con premio
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"
Nativo
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"
Revisione delle creatività
Le creatività vengono esaminate prima di poter essere pubblicate per verificare che rispettino le nostre norme e le impostazioni del publisher.
Ecco due modi per inviare le creatività per la revisione:
- API Real-time Bidding (consigliata)
Puoi utilizzare il metodo
buyers.creatives.create
dell'API Real-time Bidding per inviare le creatività per la revisione.L'API richiede un solo invio per creatività e ti consente di controllare lo stato della revisione della creatività.
- Risposta all'offerta
Puoi inviare nuove creatività direttamente nella risposta all'offerta.
Devi utilizzare il campo
declared_ad
dell'oggettoSdkRenderedAd
per inviare una risposta all'offerta con una creatività SDK dell'acquirente da esaminare.Le creatività inviate nella risposta all'offerta vengono esaminate solo dopo molte offerte. Tutte le offerte effettuate prima del completamento della revisione vengono filtrate dall'asta. Puoi utilizzare l'interfaccia Real-time Bidding o l'API Real-time Bidding per controllare lo stato di una creatività dopo l'inizio della revisione.
Per maggiori dettagli, consulta la guida alle creatività.