Una vez que su aplicación procese la solicitud de oferta de Google, debe crear y envía una respuesta. En esta guía, se explica cómo programar tu aplicación para compilarla la respuesta.
Crear mensaje BidResponse
Authorized Buyers envía el elemento BidRequest
como el cuerpo del mensaje de
un POST
HTTP. La respuesta que envía tu aplicación debe tener
el encabezado Content-Type
se estableció en application/octet-stream
y un cuerpo de mensaje que consta de un búfer de protocolo serializado. El protocolo
búfer es un mensaje BidResponse
, como se define en
realtime-bidding.proto
Tu aplicación debe mostrar un código
BidResponse
en respuesta a cada BidRequest
. Suspensión temporal
y las respuestas que no pueden analizarse se consideran errores, y Google regula
a los ofertantes con tasas de error altas.
Si no desea realizar una oferta para una impresión, puede configurar
processing_time_ms
solo y dejar todos los demás campos
vacío. Puedes obtener realtime-bidding.proto
de la
datos de referencia.
ID de la creatividad
Tu BidResponse
especifica una creatividad mediante el elemento
Campo buyer_creative_id
(límite de 64 bytes). Incluso las creatividades similares
debe tener valores únicos para buyer_creative_id
si difieren en
características notables, incluidas, sin limitaciones, el tamaño, la URL declarada,
atributos de creatividades
y tipos de proveedores. En otras palabras, debes asignar
ID de creatividad de dos anuncios cualquiera que:
- Verse o comportarse de manera diferente.
- Renderiza en diferentes imágenes.
- Renderice de forma diferente (por ejemplo, un anuncio consta de una imagen, mientras que la otra contiene Flash).
A medida que diseñas tu aplicación, debes elegir una forma sistemática de de generar identificadores que tengan sentido para los tipos de creatividades que planeas para enviar.
Atributos del anuncio
Debe declarar los atributos de la creatividad que describen plenamente los atributos
características y su segmentación en BidResponse.Ad.attribute
. El
que se deben declarar son (consulta también la lista completa de atributos
en
buyer-declarable-creative-attributes.txt):
7 Tagging: IsTagged
El anuncio contiene un píxel o una baliza web para crear una lista de los ID de las cookies para su posterior remarketing.8 Remarketing: IsRemarketing
El anuncio se orienta a los consumidores según su ID de cookie o ID de dispositivo, donde la lista de IDs de cookies o IDs de dispositivos representa un conjunto de consumidores que interactuaron previamente con un sitio que pertenece al comprador o que está representado por este.9 UserInterestTargeting: IsUserInterestTargeted
El anuncio se orienta a los consumidores según su ID de cookie o ID de dispositivo, donde La lista de IDs de cookies o de ID de dispositivo representa a un conjunto de consumidores que el comprador se define como un grupo de interés común.30 InstreamVastVideoType: Vpaid
El anuncio requiere compatibilidad con VPAID para su renderización.32 MraidType: MRAID
El anuncio requiere que se renderice la API de MRAID.
Además, se admiten los siguientes atributos, pero su declaración no es necesario, ya que Authorized Buyers los detecta automáticamente y los bloqueará (o (permitir) tus creatividades en función de los valores detectados, en lugar de tu declaración. Consulta API de Creatives para ver una explicación sobre cómo obtener comentarios acerca de las propiedades detectadas de tu creatividades.
34 RichMediaCapabilityType: RichMediaCapabilityFlash
El anuncio requiere compatibilidad con Flash para su renderización.50 RichMediaCapabilityType: RichMediaCapabilityNonFlash
El anuncio no requiere Flash para su renderización.47 RichMediaCapabilityType: RichMediaCapabilitySSL
El anuncio se puede renderizar en una página SSL. Ten en cuenta que Authorized Buyers trata las creatividades con diferentes valores declarados de este atributo como distintos (se revisarán por separado y tienen distintos estados de aprobación). Por lo tanto, si oferta con SSL y versiones de la misma creatividad que no sean SSL, debe declarar este atributo según corresponda. de modo que esta distinción se refleje correctamente en AdX.
Campos de Open Bidding
Respuestas a ofertas enviadas por los ofertantes de intercambio y red que participan en Open Bidding Las ofertas son similares a las de los compradores de Authorized Buyers que participan en el con las ofertas en tiempo real. Los clientes de Open Bidding pueden especificar una pequeña cantidad de campos adicionales, y algunos campos existentes pueden tener usos alternativos. Estos incluyen lo siguiente:
OpenRTB | Authorized Buyers | Detalles |
---|---|---|
BidResponse.imp[].pmp.deals[].id |
BidResponse.ad[].adslot[].exchange_deal_id |
El ID del acuerdo del espacio de nombres del intercambio asociado y se informan a los publicadores. |
BidResponse.seatbid[].bid[].ext.exchange_deal_type |
BidResponse.ad[].adslot[].exchange_deal_type |
El tipo de acuerdo que se informa a los publicadores y que afecta su funcionamiento que se trataron en la subasta. |
BidResponse.seatbid[].bid[].ext.third_party_buyer_token |
BidResponse.ad[].adslot[].third_party_buyer_token |
El token que se utiliza para identificar la información del comprador externo si el Exchange como ofertante de Open Bidding es intermediario. Esto se obtiene de la comprador externo y se debe enviar a Google sin alteraciones en la oferta respuesta. |
Recomendaciones
- Habilitar conexiones HTTPS persistentes (también conocidas como “keep-alive” o “reutilización de la conexión”) en tus servidores. Establece el tiempo de espera en 10 segundos a las mínimo, ya que los valores más altos son beneficiosos en muchos casos. Google verifica durante las pruebas de latencia iniciales de tu aplicación, ya que Authorized Buyers envía solicitudes con una frecuencia elevada y necesita evitar las de latencia adicional del establecimiento de una conexión TCP separada para cada para cada solicitud.
Incluye la URL de seguimiento de impresiones opcional para hacer un seguimiento cuando la de impresiones, en lugar de cuando gana el ofertante. Debido al destino entre victorias y renderizaciones, esto proporciona un seguimiento más preciso estadísticas.
- Mantén tu código de ofertante libre de dependencias en campos obsoletos. lo que puede provocar errores en tus ofertas.
- Incluye
BidResponse.Ad.width
yBidResponse.Ad.height
en tuBidResponse
. RBidResponse
a una solicitud que incluye varios tamaños de anuncios debe incluyas los valoreswidth
yheight
, o será de la subasta. - Limita el tamaño de las respuestas a menos de 8 KB. Las respuestas muy grandes pueden aumentar la latencia de la red y provocar tiempos de espera.
- Sigue las pautas para en el inventario de iOS que requieren una atribución de SKAdNetwork.
Ejemplo de respuesta a la oferta
Los siguientes ejemplos representan muestras legibles de Protobuf y Solicitudes JSON.
JSON de OpenRTB
Protocolo de OpenRTB
Importante: Los mensajes de Protobuf que se muestran en el las muestras se representan aquí como texto legible por humanos. Sin embargo, no es así los mensajes se envían por cable. Cuando usa el protocolo de OpenRTB o Google , solo se aceptarán mensajes serializados de BidResponse.
Puedes crear y serializar un mensaje BidResponse
con el
siguiente código 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 }
Especificar creatividad
Tu respuesta a la oferta especifica la creatividad que se publicará si gana tu oferta. Su oferta
Debe incluir uno de los formatos del anuncio admitidos (AMP, video o nativo). En este
Por ejemplo, especificamos la creatividad con el campo html_snippet
.
También puedes especificar tu creatividad usando uno de los los siguientes campos, según el formato del anuncio:
- Anuncio renderizado por SDK
BidResponse.Ad.sdk_rendered_ad
- AMP
BidResponse.Ad.amp_ad_url
- Video
BidResponse.Ad.video_url
oBidResponse.Ad.video_vast_xml
- Nativo
BidResponse.Ad.native_ad
Especifique un anuncio alojado en su(s) propio(s) servidor(es) mediante un fragmento de HTML en
el campo html_snippet
de BidResponse
. El
se encierra en un iframe insertado en la página web, lo que genera el anuncio
que se recupera y renderiza cuando se carga la página. Debes crear el archivo HTML
para que el anuncio (banner o anuncio intersticial) se dibuje correctamente en una
y en un tamaño adecuado para el espacio publicitario en el que realizas ofertas.
Además, el tamaño del anuncio declarado en la respuesta a la oferta debe coincidir exactamente con uno de las combinaciones de tamaños en la solicitud de oferta cuando:
- Un anuncio es un banner común (no de video, nativo ni intersticial).
- El ofertante declaró el tamaño en la respuesta a la oferta. La declaración de tamaño es se requiere cuando hay más de un tamaño en la solicitud.
- Se hace una excepción para los anuncios intersticiales. En el caso de los anuncios intersticiales, el ancho debe ser de al menos el 50% del ancho de la pantalla y el alto de, al menos, el 40% de el alto de la pantalla.
El campo html_snippet
admite cualquier código HTML válido que
se renderiza correctamente, pero debes tener en cuenta las restricciones para especificar la
Campo buyer_creative_id
de la sección Crear mensaje de respuesta a la oferta Uno
para esto es colocar información extra en los argumentos de las URLs que se
recuperados de tus servidores como parte de la renderización del anuncio. Esto te permite pasar
datos arbitrarios sobre la impresión a sus propios servidores.
La mayoría de las políticas para los fragmentos HTML que se muestran en las respuestas de oferta son las mismas que para anuncios de terceros. Consulte Authorized Buyers Lineamientos del Programa, Requisitos para Terceros publicación de anuncios y declarar las URLs de clic en los anuncios para obtener más información.
Cómo especificar macros
El fragmento HTML que define una creatividad puede incluir una o más
construcciones llamadas macros. En el momento de la publicación de anuncios, se sustituyen los valores por
o usar las macros. Por ejemplo, tu aplicación de licitación cliente podría usar el
WINNING_PRICE
para determinar cuánto pagó por el anuncio
si gana la subasta. Para analizar esta macro, debes implementar un
que desencripta las confirmaciones de precios. Consulta Cómo desencriptar el precio
Confirmaciones para obtener más información.
Especifica una macro como parte de un fragmento HTML en el formato
%%MACRO%%
, donde MACRO
es uno de los formatos admitidos
que se muestran en la tabla a continuación.
Google requiere que uses CLICK_URL_UNESC
o
Macro CLICK_URL_ESC
en la creatividad de la plataforma publicada por terceros
anuncio. Google usa las macros de CLICK_URL
para el seguimiento de clics.
Para usar una macro, inclúyela en el anuncio para que se recupere la URL cuando
si alguien hace clic en él. El valor que se muestra de la recuperación es un redireccionamiento a otro
URL que agregas a CLICK_URL
.
Macro | Descripción |
---|---|
ADVERTISING_IDENTIFIER |
Permite que los compradores reciban el IDFA de iOS o el ID de publicidad de Android en la renderización de impresiones. Consulta Cómo desencriptar identificadores de anunciantes. para conocer los detalles. |
CACHEBUSTER |
Es una representación de cadena de un número entero aleatorio de cuatro bytes sin firma. |
CLICK_URL_UNESC |
La URL de clic sin escape del anuncio. En el fragmento, una versión de escape del elemento la URL de clic de terceros debe seguir directamente la macro. Por ejemplo, si la URL de clic de terceros es
<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> En el momento de la publicación de anuncios, esto se expande a: <a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> La URL primero registrará el clic con Google y, luego, redireccionará a la URL de clic de terceros. |
CLICK_URL_ESC |
La URL de clic con escape para el anuncio. Usa esto en lugar de
Por ejemplo, el siguiente código podría usarse en un fragmento de HTML: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a> En el momento de la publicación de anuncios, esto se expande a: <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> Esto registrará el clic con Puedes agregar una URL con escape doble después
|
CLICK_URL_ESC_ESC |
La URL con escape doble para el anuncio. Usa esto en lugar de
Por ejemplo, el siguiente código podría usarse en un fragmento de HTML: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a> En el momento de la publicación de anuncios, esto se expande a: <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 |
Se expande a http: si la solicitud de oferta no requiere SSL o para
Es https: si la solicitud de oferta requiere SSL. |
SITE |
El dominio con escape de URL de la URL de contenido o el ID anónimo para el inventario anónimo. |
SITE_URL |
Obsoleta. Se reemplazó por la macro SITE que proporciona una funcionalidad idéntica. |
TZ_OFFSET |
Desplazamiento de la zona horaria. |
VERIFICATION |
Los diferentes valores para la producción y cuándo se analiza la creatividad en el proceso de verificación
en una canalización de integración continua. El formato es: %%?VERIFICATION:true-val:false-val%% , donde cualquier
de salida, excepto que las macros se pueden usar para true-val y false-val ,
incluidas las cadenas vacías. Para Open Bidding, recomendamos que los socios de intercambio usen esta macro.
una vez que lo hacen, las plataformas orientadas a la demanda no necesitan hacer cambios.Por ejemplo, si una creatividad incluyera %%?VERIFICATION:-1:5000%%
entonces el reemplazo del texto sería 5000 en la publicación y -1 en la
de verificación de identidad. Esto es para ayudar a diferenciar entre estos dos conjuntos de pings. |
WINNING_PRICE |
El costo de las impresiones codificadas (es decir, CPI en lugar de CPM) en
micros de la moneda de la cuenta. Por ejemplo, un CPM ganador de USD 5
corresponde a un CPM de 5,000,000 micros o un CPI de 5,000 micros. La arquitectura
el valor de WINNING_PRICE en este caso sería 5,000.
El precio ganador se especifica en CPI.
|
WINNING_PRICE_ESC |
WINNING_PRICE con escape de URL. |
El escape de URL en macros usa el siguiente esquema:
- El carácter de espacio se reemplaza por un signo más (
+
). - Los caracteres alfanuméricos (0-9, a-z, A-Z) y los caracteres del conjunto !()*,-./:_~ no se modifican.
- Todos los demás caracteres se reemplazan por
%XX
, dondeXX
es el valor hexadecimal el número que representa el carácter.
Restricciones para publicadores
Los publicadores usan la BidRequest
para pasar restricciones sobre qué anuncios
que permitirán. Debes aplicar las restricciones en estos campos:
allowed_vendor_type
excluded_attribute
excluded_sensitive_category
Un campo especifica las funciones permitidas del anuncio y, el otro,
atributos no permitidos. Nunca muestres un anuncio con una función no permitida. Permitidas
funciones como el tipo de proveedor, muestran un anuncio solo si su tipo de proveedor se encuentra en
allowed_vendor_type
en la lista BidRequest
. Consulta la
comentarios para estos campos en el búfer de protocolo BidRequest
definición para obtener más detalles.
Si se muestra un fragmento HTML en BidResponse
, sucede lo siguiente:
necesarios para establecer con precisión attribute
, category
y
y click_through_url
en el BidResponse
.
Si un anuncio tiene múltiples valores aplicables para estos campos, entonces debes
incluir todos los valores. Consulta los comentarios de estos campos en la
Definición del búfer de protocolo BidResponse
para obtener más detalles.
Se descartan las respuestas que no tienen estos campos configurados.
Los valores posibles de BidRequest.excluded_attribute
son los siguientes:
(consulta publisher-excludable-creative-attributes.txt):
7 Tagging: IsTagged
No se permiten los anuncios si contienen un píxel o una baliza web con el objetivo de crear una lista de los ID de las cookies para su posterior remarketing.8 CookieTargeting: IsCookieTargeted
No se permiten los anuncios si se segmentan para los consumidores en función de su ID de cookie donde la lista de IDs de cookies representa un conjunto de consumidores que interactuaron anteriormente con un sitio que es propiedad del comprador o que este representa.9 UserInterestTargeting: IsUserInterestTargeted
No se permiten los anuncios si se segmentan para los consumidores en función de su ID de cookie donde la lista de IDs de cookies representa un conjunto de consumidores que el comprador definió como grupo de interés común.21 CreativeType: Html
Los anuncios no pueden usarhtml_snippet
nisnippet_template
enBidResponse.Ad
.22 CreativeType: VastVideo
Los anuncios no pueden usar el campovideo_url
enBidResponse.Ad
.30 InstreamVastVideoType: Vpaid
No se permite que los anuncios requieran compatibilidad con VPAID para su renderización.32 MraidType: MRAID
No se permite que los anuncios requieran que la API de MRAID se renderice.34 RichMediaCapabilityType: RichMediaCapabilityFlash
No se permite que los anuncios requieran compatibilidad con Flash para su renderización.39 RichMediaCapabilityType: RichMediaCapabilityHTML5
No se permite que los anuncios requieran funciones HTML5 para su renderización.48 RichMediaCapabilityType: RichMediaCapabilityNonSSL
Los anuncios no pueden realizar solicitudes que no sean SSL.
Por lo tanto, si el campo excluded_attribute
contiene el valor
7, no debería mostrar un anuncio que use un píxel o una baliza web para
creando una lista. Ten en cuenta que si un anuncio hace esto, debe establecer el valor 7 en
el campo de atributo de BidResponse
De manera similar, si el campo excluded_attribute
contiene el valor 48,
solo debería mostrar anuncios que puedan renderizarse en una página SSL (y, en consecuencia,
declarar el atributo 47 RichMediaCapabilityType: RichMediaCapabilitySSL).
También el campo excluded_sensitive_category
en la
BidRequest
usa códigos de la
Archivo ad-sensitive-categories.txt
disponible en la página de datos de referencia. Aquí tienes
descripciones de algunos de estos códigos:
3 Politics
Incluye cuestiones políticas o cuestiones sociales polémicas. no incluye los anuncios de organizaciones de noticias que no suelen tener un punto de vista partidario sobre ciertos temas.4 Dating
Incluye servicios de citas y comunidades de citas en línea.5 Religion
Incluye anuncios religiosos y anuncios que abogan a favor o en contra de opiniones religiosas. no incluye la astrología ni espiritualidad no confesional.7 Video Games (Casual & Online)
Incluye videojuegos, juegos en línea y juegos descargables. no incluye consolas de juegos.8 Ringtones & Downloadables
Complementos para dispositivos móviles, incluidos tonos y otras funciones descargables, como protectores y fondos de pantalla para PCs de escritorio, así como diseños de perfil y elementos gráficos para redes sociales10 Get Rich Quick
Esquemas que prometen ingresos rápidos18 Weight Loss
Incluye programas y productos relacionados con la pérdida de peso y las dietas. No incluye anuncios sobre nutrición saludable ni ejercicio físico general.19 Cosmetic Procedures & Body Modification
Incluye liftings, liposucciones, tratamientos con láser, depilación, implantes capilares, tatuajes y modificaciones corporales.23 Drugs & Supplements:
Incluye productos farmacéuticos, vitaminas, suplementos y minoristas relacionados. no incluye los recursos que proporcionan información sobre drogas.24 Sexual & Reproductive Health
Incluye anuncios sobre fertilidad y función sexual. no incluye recursos sobre el embarazo normal.35 Social Casino Games
Incluye juegos de apuestas simuladas (incluidos, sin limitarse a ello, póquer, tragamonedas, bingo, loterías, apuestas deportivas, apuestas en carreras y otros juegos de cartas y casino) en los que no hay oportunidad de ganar ningún artículo de valor (como dinero o premios).36 Significant Skin Exposure
Imágenes de anuncios en las que no está vestida ninguna parte del cuerpo humano, desde el esternón hasta la mitad del muslo o vestido con ropa interior, trajes de baño, lencería o cualquier otra ropa transparente o prendas que no sean ropa, como una toalla o sábana37 Sensationalism
Anuncios que tienen como objetivo inducir a los usuarios a hacer clic en ellos apelando a su curiosidad, a menudo a través de un mensaje de avance con texto o imágenes hiperbólicos. Incluye anuncios que se centran en temas sensacionalistas (como muertes, divorcios o detenciones de celebridades) o que pretenden causar un impacto.
Open Measurement
Open Measurement te permite especificar proveedores externos que ofrecen mediciones y servicios de verificación para anuncios publicados en entornos de apps para dispositivos móviles.Actualmente, los formatos de anuncios admitidos incluyen anuncios de video, intersticiales y de banner. Más información Para obtener información sobre cómo usar Open Measurement en una respuesta de oferta que contiene estos formatos, consulte el Centro de ayuda del SDK de Open Measurement .
Ejemplo de respuestas de oferta
En las siguientes secciones, se muestran ejemplos de respuestas de oferta para diferentes tipos de anuncios.