Dopo aver elaborato la richiesta di offerta di Google, l'applicazione deve creare e inviare una risposta. Questa guida spiega come codificare l'applicazione per creare la risposta.
Crea messaggio di risposta all'offerta Protobuf
Authorized Buyers invia il BidRequest
come corpo del messaggio di un POST
HTTP. Se l'endpoint per le offerte è configurato per utilizzare il formato Protobuf, l'applicazione deve inviare una risposta con l'intestazione Content-Type
impostata su application/octet-stream
e un corpo del messaggio costituito da un buffer di protocollo serializzato. Il protocollo
buffer è un messaggio BidResponse
come definito in
openrtb.proto
. L'applicazione deve restituire un BidResponse
analizzabile in risposta a ogni BidRequest
. Timeout.
Le risposte che non possono essere analizzate sono considerate errori e limitazioni di Google
gli offerenti con un tasso di errore elevato.
Se non vuoi fare un'offerta per un'impressione, puoi impostare solo il campoBidResponse.ext.processing_time_ms
e lasciare vuoti tutti gli altri campi. Puoi ottenere openrtb.proto
dalla pagina
Dati di riferimento.
ID creatività
Il BidResponse
specifica una creatività tramite
Campo BidResponse.seatbid.bid.crid
(limite di 64 byte). Anche le creatività simili devono avere valori univoci per questo campo se differiscono per caratteristiche notevoli, tra cui, a titolo esemplificativo, dimensioni, URL dichiarato, attributi della creatività e tipi di fornitore. In altre parole, devi assegnare valori diversi
ID creatività a due annunci che:
- Hanno un aspetto o un comportamento diverso.
- Esegui il rendering su immagini diverse.
- Esegui il rendering con mezzi diversi (ad esempio, un annuncio è costituito da un'immagine, mentre l'altro è un video).
Durante la progettazione dell'applicazione, devi decidere un modo sistematico per generare identificatori che abbiano senso per i tipi di creatività che prevedi di inviare.
Attributi annuncio
Google consiglia di dichiarare gli attributi delle creatività per descrivere le caratteristiche
caratteristiche e il relativo targeting utilizzando una combinazione
BidResponse.seatbid.bid.apis
e
BidResponse.seatbid.bid.attr
o
BidResponse.seatbid.bid.ext.attribute
. Di seguito viene descritto come dichiarare gli attributi:
VPAID
ImpostaBidResponse.seatbid.bid.apis
suVPAID_1
, oVPAID_2
. Per il formato JSON, puoi impostarlo su1
o2
rispettivamente.MRAID
ImpostaBidResponse.seatbid.bid.apis
suMRAID_1
o3
per il formato JSON.SIZELESS
ImpostaBidResponse.seatbid.bid.attr
suRESPONSIVE
o18
per il formato JSON formato.PLAYABLE
Ciò è indicato impostandoBidResponse.seatbid.bid.attr
aUSER_INTERACTIVE
o13
per il formato JSON formato.
Consulta la risorsa sulle creatività per una spiegazione su come ricevere un feedback sulle proprietà rilevate delle tue creatività.
Campi Open Bidding
Le risposte alle offerte inviate dagli offerenti di piattaforme di scambio e reti che partecipano a Open Bidding sono simili a quelle di Authorized Buyers che partecipano alle offerte in tempo reale standard. I clienti di Open Bidding possono specificare un numero ridotto di campi aggiuntivi e alcuni campi esistenti potrebbero avere utilizzi alternativi. tra cui:
OpenRTB | Authorized Buyers | Dettagli |
---|---|---|
BidResponse.imp[].pmp.deals[].id |
BidResponse.ad[].adslot[].exchange_deal_id |
L'ID deal dello spazio dei nomi della piattaforma di scambio pubblicitario associato a questa offerta e segnalato ai publisher. |
BidResponse.seatbid[].bid[].ext.exchange_deal_type |
BidResponse.ad[].adslot[].exchange_deal_type |
Il tipo di deal segnalato ai publisher, che influisce sul modo in cui viene trattato nell'asta. |
BidResponse.seatbid[].bid[].ext.third_party_buyer_token |
BidResponse.ad[].adslot[].third_party_buyer_token |
Token utilizzato per identificare le informazioni sull'acquirente finale di terze parti se una piattaforma di scambio pubblicitario in qualità di utente Open Bidding è un intermediario. Si ottiene all'acquirente terzo e deve essere trasmessa a Google inalterata nell'offerta la risposta corretta. |
Consigli
- Abilita connessioni HTTPS permanenti (note anche come "keep-alive" o "riutilizzo della connessione") sui tuoi server. Imposta il timeout su almeno 10 secondi. In molti casi, valori più elevati sono utili. Google verifica durante i test iniziali della latenza dell'applicazione, perché Authorized Buyers invia le richieste con frequenza elevata e deve evitare di latenza creando una connessione TCP separata per ogni richiesta.
Includi l'URL di monitoraggio delle impressioni facoltativo per monitorare il momento in cui viene visualizzata l'impressione anziché quando l'offerente vince. A causa del calo tra le vittorie e i rendering, si ottengono statistiche di monitoraggio più accurate.
- Mantieni il codice dello strumento di offerta privo di dipendenze nei campi ritirati il che può causare errori nelle offerte.
- Includi
BidResponse.seatbid.bid.w
eBidResponse.seatbid.bid.h
nel tuoBidResponse
. RBidResponse
a una richiesta che include più dimensioni dell'annuncio deve includi questi campi, altrimenti verrà eliminato dall'asta. - Limita le dimensioni della risposta a meno di 8K. Le risposte molto grandi possono aumentare latenza di rete e causare timeout.
- Segui le linee guida per Offerte per l'inventario iOS che richiedono l'attribuzione SKAdNetwork.
Esempio di risposta all'offerta
I seguenti esempi rappresentano campioni leggibili di Protobuf e richieste JSON.
Protobuf OpenRTB
JSON OpenRTB
Importante: i messaggi Protobuf mostrati nei sample sono rappresentati qui come testo leggibile da una persona. Tuttavia, non è così i messaggi vengono inviati via cavo. Quando si utilizza il protocollo Google o OpenRTB Protobuf , verranno accettati solo messaggi BidResponse serializzati.
Puoi creare e serializzare un messaggio BidResponse
utilizzando il seguente codice 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 }
Specifica creatività
La risposta all'offerta specifica la creatività da pubblicare se la tua offerta è vincente. La tua offerta
Deve includere uno dei formati di annunci supportati (AMP, video, nativo). In questo
esempio, specifichiamo la creatività utilizzando il campo html_snippet
.
In alternativa, puoi specificare la creatività utilizzando uno dei seguenti campi, in base al formato dell'annuncio:
- Annuncio visualizzato dall'SDK
BidResponse.seatbid.bid.ext.sdk_rendered_ad
- AMP
BidResponse.seatbid.bid.amp_ad_url
- Video
BidResponse.seatbid.bid.adm
- Nativi
BidResponse.seatbid.bid.adm_native
Specifica un annuncio ospitato sui tuoi server utilizzando uno snippet HTML in
il campo BidResponse.seatbid.bid.adm
. Lo snippet è racchiuso in un iFrame inserito nella pagina web, in modo che l'annuncio venga recuperato e visualizzato al caricamento della pagina. Devi creare lo snippet HTML in modo che l'annuncio (banner o interstitial) venga visualizzato correttamente all'interno di un iframe e in dimensioni appropriate per lo spazio pubblicitario per cui fai offerte.
Inoltre, la dimensione dell'annuncio dichiarata nella risposta all'offerta deve corrispondere esattamente a una delle combinazioni di dimensioni nella richiesta di offerta quando:
- Un annuncio è un banner normale (non video, nativo o interstitial).
- L'offerente ha dichiarato le dimensioni nella risposta all'offerta. La dichiarazione delle dimensioni è obbligatoria ogni volta che nella richiesta è presente più di una dimensione.
- Viene fatta un'eccezione per gli annunci interstitial. Per interstitial con larghezza deve essere almeno il 50% della larghezza dello schermo e l'altezza almeno fino al 40% l'altezza dello schermo.
Puoi specificare una creatività snippet HTML utilizzando qualsiasi codice HTML valido che
il rendering sia eseguito correttamente, ma tieni presenti le restrizioni sulla specifica
Campo crid
nel
Sezione Crea messaggio di risposta all'offerta.
Un utilizzo è inserire informazioni aggiuntive negli argomenti degli URL che vengono recuperati dai tuoi server durante il rendering dell'annuncio. In questo modo puoi ritrasmettere ai tuoi server dati arbitrari sull'impressione.
La maggior parte delle norme per gli snippet HTML restituiti nelle risposte all'offerta è la stessa della per gli annunci di terze parti. Per saperne di più, consulta le linee guida del programma Authorized Buyers, i requisiti per la pubblicazione di annunci di terze parti e la sezione Dichiarare gli URL di clic negli annunci.
Specifica le macro
Le macro sono testo formattato incorporato in alcuni campi della risposta all'offerta contenenti URL che vengono sostituiti con un valore pertinente al momento della pubblicazione dell'annuncio. Ad esempio:
se l'offerta vincente includeva la macro AUCTION_PRICE
nel codice HTML
snippet di creatività incluso nell'offerta, la macro verrà sostituita
che potresti decriptare per determinare l'importo pagato per l'impressione
l'asta.
Puoi includere macro nei seguenti campi:
-
BidResponse.seatbid.bid.adm
Le macro sono supportate per i formati XML VAST, video, URL video e snippet HTML.
-
BidResponse.seatbid.bid.adm_native.eventtrackers.url
-
BidResponse.seatbid.bid.adm_native.imptrackers
-
BidResponse.seatbid.bid.ext.amp_ad_url
Per le creatività AMP sono supportate solo le macro
WINNING_PRICE
eWINNING_PRICE_ESC
specifiche di Google. -
BidResponse.seatbid.bid.burl
-
BidResponse.seatbid.bid.ext.impression_tracking_url
Usa questa opzione al posto di
BidResponse.seatbid.bid.burl
se richiedono più di un URL di fatturazione.
Ad esempio, potresti includere una macro in uno snippet HTML
incorporando ${MACRO}
nell'URL utilizzato per recuperare la creatività,
dove MACRO
è una delle macro supportate descritte in
Specifica OpenRTB.
Macro di Google RTB
Google supporta macro aggiuntive oltre a quelle presenti in OpenRTB
del modello. Sono formattati in modo diverso e vengono visualizzati come
%%MACRO%%
se incorporato in un URL. La tabella seguente descrive
queste macro:
Macro | Descrizione |
---|---|
ADVERTISING_IDENTIFIER |
Consente agli acquirenti di ricevere un IDFA per iOS o un ID pubblicità di Android su il rendering delle impressioni. Consulta Decriptare gli identificatori degli inserzionisti. per maggiori dettagli. |
CACHEBUSTER |
Una rappresentazione stringa di un numero intero a quattro byte casuale, senza segno. |
CLICK_URL_UNESC |
L'URL di clic senza caratteri di escape dell'annuncio. Nello snippet, un carattere di escape dell'URL di clic di terze parti deve seguire direttamente . Ad esempio, se l'URL di clic di terze parti è
<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> Al momento della pubblicazione degli annunci, questo viene esteso a: <a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> Innanzitutto, l'URL registra il clic con Google, quindi reindirizza all'URL di clic di terze parti. |
CLICK_URL_ESC |
L'URL di clic con caratteri di escape dell'annuncio. Da utilizzare al posto di
Ad esempio, in uno snippet HTML potrebbe essere utilizzato il seguente codice: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a> Al momento della pubblicazione degli annunci, questo viene esteso a: <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> In questo modo il clic verrà registrato con Puoi aggiungere un URL con doppio escape dopo
|
CLICK_URL_ESC_ESC |
L'URL con doppio escape dell'annuncio. Da utilizzare al posto di
Ad esempio, in uno snippet HTML potrebbe essere utilizzato il seguente codice: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a> Al momento della pubblicazione dell'annuncio, si espande nel seguente modo: <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 |
Espanso a http: se la richiesta di offerta non richiede SSL o a
https: se la richiesta di offerta richiede SSL. |
SITE |
Il dominio con caratteri di escape dell'URL di contenuti o l'ID anonimo per l'inventario anonimo. |
SITE_URL |
Deprecato. Sostituito dalla macro SITE che fornisce funzionalità identiche. |
TZ_OFFSET |
La differenza con il fuso orario. |
VERIFICATION |
I diversi valori relativi alla produzione e al momento dell'analisi della creatività
nella pipeline di verifica. Il formato è:
Ad esempio, se una creatività dovesse includere
|
WINNING_PRICE |
Il costo delle impressioni codificato (ovvero CPI anziché CPM) relativo a
micro della valuta dell'account. Ad esempio, un CPM vincente di 5 $ corrisponde a un CPM di 5.000.000 di micro, o un CPI di 5000 micro. In questo caso, il valore decodificato di Per analizzare questa macro, devi implementare un'applicazione che decripta le conferme dei prezzi. Per ulteriori informazioni, consulta la pagina Decriptare le conferme dei prezzi. |
WINNING_PRICE_ESC |
WINNING_PRICE con URL in codifica escape. |
Google richiede di utilizzare la macro CLICK_URL_UNESC
o
CLICK_URL_ESC
all'interno della creatività dell'annuncio di terze parti pubblicato. Google utilizza le macro CLICK_URL
per il monitoraggio dei clic.
L'escape degli URL nelle macro utilizza lo schema seguente:
- Il carattere di spazio viene sostituito da un segno più (
+
). - I caratteri alfanumerici (0-9, a-z, A-Z) e i caratteri dell'insieme !()*,-./:_~ rimangono invariati.
- Tutti gli altri caratteri vengono sostituiti da
%XX
, doveXX
è il numero esadecimale che rappresenta il carattere.
Limitazioni e requisiti per i publisher
La richiesta di offerta include informazioni sui tipi di limitazioni e requisiti che i publisher applicano alle creatività nell'asta.
BidRequest.bcat
- Puoi confrontare le categorie bloccate specificate da questo campo con quelle rilevate per le creatività inviate utilizzando il campo
detectedCategories
dell'API Real-time Bidding.
- Puoi confrontare le categorie bloccate specificate da questo campo con quelle rilevate per le creatività inviate utilizzando il campo
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
- In pratica, questo valore sarà sempre impostato su
true
perché Google richiede il supporto di SSL per tutte le creatività.
- In pratica, questo valore sarà sempre impostato su
BidRequest.imp.{audio/banner/native/video}
BidRequest.imp.{audio/banner/native/video}.api
BidRequest.imp.{audio/banner/native/video}.battr
BidRequest.imp.{audio/banner/video}.mimes
Non fare mai offerte con un annuncio contenente una funzionalità con limitazioni. Per le funzionalità consentite, come il tipo di fornitore, restituisci un annuncio solo se il tipo di fornitore è nell'elenco allowed_vendor_type
in BidRequest
. Solo annuncio
specificati nella richiesta di offerta compilando campi quali
BidRequest.imp.banner
deve essere incluso nell'offerta. Per ulteriori dettagli, consulta i commenti relativi a questi campi nella definizione del buffer del protocollo BidRequest
.
Se un annuncio viene restituito in BidResponse
, devi
impostare BidResponse.seatbid.bid.attr
in modo accurato,
BidResponse.seatbid.bid.cat
e
BidResponse.seatbid.bid.adomain
o
BidResponse.seatbid.bid.adm_native.link.url
campi nel
BidResponse
. Se un annuncio ha più valori applicabili per questi
devi includere ogni valore. Vedi i commenti per questi campi in
la definizione del buffer di protocollo BidResponse
per ulteriori dettagli.
Le risposte che non includono questi campi vengono ignorate.
Open Measurement
Open Measurement ti consente di specificare fornitori di terze parti che forniscono servizi di misurazione e verifica indipendenti per gli annunci pubblicati negli ambienti delle app mobile.
I formati degli annunci supportati includono annunci video, banner e interstitial. Per ulteriori informazioni su come utilizzare Open Measurement in una risposta all'offerta contenente questi formati, consulta l'articolo del Centro assistenza sull'SDK Open Measurement.
Risposte all'offerta di esempio
Le seguenti sezioni mostrano esempi di risposte alle offerte per diversi tipi di annunci.