Os anúncios do SDK do comprador usam criativos renderizados pelo seu próprio SDK.
O inventário de apps para dispositivos móveis de editores que integram seu adaptador
de lances ao app pode aceitar lances
com o formato de anúncio renderizado do SDK do comprador. A renderização é baseada na sua
implementação do SDK e no SDKRenderedAd
que você envia na
resposta do lance.
É possível fazer um lance que inclua um anúncio renderizado do SDK do comprador ou qualquer outro formato de anúncio com suporte do SDK dos anúncios para dispositivos móveis do Google, mas os lances que contêm ambos são filtrados.
Requisitos
Os anúncios do SDK do comprador estão disponíveis para compradores aprovados. Esse formato exige um esforço extra de você e do editor. Entre em contato com o gerente técnico da sua conta para configurar a conta para anúncios do SDK do comprador. Em seguida, implemente um adaptador de lances que permita que seu SDK se comunique com o SDK dos anúncios para dispositivos móveis do Google. O editor precisa integrar seu SDK e adaptador aos apps para dispositivos móveis.
Recomendamos que você envie os criativos para análise antes de incluí-los em uma resposta de lance. Entre em contato com seu gerente técnico de contas se você não souber o tipo de criativo no momento do lance.
Se uma solicitação de lance oferecer suporte a esse formato, você poderá especificar um anúncio que renderiza
com seu SDK definindo o campo sdk_rendered_ad
na resposta
de lance.
Solicitação de lance
As solicitações de lance para o inventário de apps para dispositivos móveis incluem detalhes sobre os SDKs e adaptadores no app do editor que podem ser usados para renderização nos seguintes campos:
- ID do SDK
Use a solicitação de lance para encontrar o ID do SDK que você precisa fornecer na resposta de lance com o campo
BidRequest.app.ext.installed_sdk.id
.Saiba mais sobre isso na documentação de referência do
InstalledSdk
.- Mapeamento de blocos de anúncios
É possível usar a solicitação de lance para encontrar os mapeamentos de blocos de anúncios que correspondem ao slot de lance com o campo
BidRequest.imp.ext.ad_unit_mapping
.Saiba mais sobre isso na documentação de referência do
AdUnitMapping
.- Indicadores seguros
Os editores podem compartilhar indicadores seguros com os bidders. Eles estão disponíveis em
BidRequest.imp.ext.buyer_generated_request_data.data
.Saiba mais sobre como os indicadores seguros são representados na documentação de referência do
BuyerGeneratedRequestData
.- Solicitações de teste
Use o campo
BidRequest.test
para verificar se a solicitação de lance é um teste.Saiba mais sobre esse campo na documentação de referência do
BidRequest
.
Exemplo de solicitação de lance
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>"
...
}
Resposta de lance
Os campos a seguir são obrigatórios na resposta do lance:
BidResponse.seatbid.bid.adomain
BidResponse.seatbid.bid.ext.billing_id
BidResponse.seatbid.bid.crid
BidResponse.seatbid.bid.w
BidResponse.seatbid.bid.h
Além disso, a resposta do lance precisa preencher
BidResponse.seatbid.bid.ext.sdk_rendered_ad
com o seguinte:
- ID do SDK
Use o campo
id
para fornecer o ID ao SDK para renderizar o anúncio.O ID pode ser encontrado em
BidRequest.app.ext.installed_sdk
.- Anúncio declarado
Use
BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad
para fornecer um conceito que atenda aos requisitos encontrados emBidRequest.imp.ext.creative_enforcement_settings
e seja representativo dos dados de renderização do anúncio. Apenas um dehtml_snippet
,video_url
,video_vast_xml
ounative_response
pode ser preenchido.Se você não preencher
declared_ad
, não será possível analisar o criativo, e todos os lances com o criativo serão filtrados do leilão.Saiba mais sobre o anúncio declarado na documentação de referência do
DeclaredAd
.- Renderização de dados
Use o campo
BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data
para fornecer os dados que o SDK do comprador vai usar para renderizar seu anúncio.Os lances para veicular um anúncio do SDK do comprador precisam especificar um criativo no campo
declared_ad
. O anúncio declarado precisa representar com precisão orendering_data
.Confira um exemplo de objeto
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>", } }
Recomendamos usar a API Real-time Bidding para enviar criativos para revisão antes de incluí-los em uma resposta de lance.
Consulte o
guia do OpenRTB para mais
detalhes sobre os campos SdkRenderedAd
.
Exemplo de resposta do lance
Confira exemplos de respostas de lance para cada formato de anúncio:
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"
Intersticial
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"
Vídeo premiado
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"
Revisão do criativo
Os criativos são analisados antes de serem veiculados para garantir que atendam às nossas políticas e às configurações do editor.
Há duas maneiras de enviar criativos para revisão:
- API Real-time Bidding (recomendada)
É possível usar o método
buyers.creatives.create
da API Real-time Bidding para enviar criativos para revisão.A API exige apenas um envio por criativo e permite verificar o status da análise do criativo.
- Resposta de lance
É possível enviar novos criativos diretamente na resposta ao lance.
Use o campo
declared_ad
do objetoSdkRenderedAd
para enviar uma resposta de lance com um criativo do SDK do comprador para análise.Os criativos enviados na resposta do lance só são analisados depois de muitos lances. Todos os lances feitos antes da conclusão da análise são filtrados do leilão. É possível usar a interface de lances em tempo real ou a API de lances em tempo real para verificar o status de um criativo após o início da análise.
Consulte o guia de criativos para mais detalhes.