Formato de anúncio do SDK do comprador

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 publishers 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 depende da implementação do SDK e do SDKRenderedAd enviado na resposta do lance.

Você pode fazer um lance incluindo um anúncio renderizado pelo SDK de um comprador ou qualquer outro formato de anúncio compatível com o SDK dos anúncios para dispositivos móveis do Google, mas os lances que contêm os dois são filtrados.

Requisitos

Os anúncios do SDK do comprador estão disponíveis para compradores aprovados. Você pode integrar diretamente o Authorized Buyers ao SDK dos anúncios para dispositivos móveis do Google, incluindo mediação, adaptadores de bidder e indicadores seguros. O publisher precisa integrar seu SDK e adaptador aos apps para dispositivos móveis.

Para mais informações sobre esses pontos de integração ou para discutir outras integrações de processamento ou de sinal no dispositivo com o SDK dos anúncios para dispositivos móveis do Google para melhorar a relevância ou a medição de anúncios, entre em contato com seu gerente técnico de contas.

Recomendamos que você envie os criativos para análise antes de incluí-los em uma resposta de bid.

Se uma solicitação de lance for compatível com esse formato de anúncio, você poderá especificar um anúncio que seja renderizado com seu SDK definindo o campo sdk_rendered_ad na resposta do lance.

Solicitação de lance

As solicitações de lances para 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

Use a solicitação de lance para encontrar os mapeamentos de blocos de anúncios que correspondem ao espaço 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 publishers podem compartilhar indicadores seguros com os bidders. Você pode encontrá-los 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 do 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 para o SDK renderizar o anúncio.

Você pode encontrar o ID em BidRequest.app.ext.installed_sdk.

Anúncio declarado

Use BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad para fornecer um criativo que atenda aos requisitos encontrados em BidRequest.imp.ext.creative_enforcement_settings e seja representativo dos dados de renderização do anúncio. Apenas um de html_snippet, video_url, video_vast_xml ou native_response precisa ser preenchido.

Se você não preencher declared_ad, não será possível analisar o criativo, e todos os lances com ele 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 o rendering_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 análise antes de incluí-los em uma resposta de bid.

Consulte o guia do OpenRTB para mais detalhes sobre os campos SdkRenderedAd.

Exemplo de resposta do lance

Confira exemplos de respostas de lances para cada formato de anúncio:

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 revisados antes da veiculação para garantir que atendam às nossas políticas e às configurações do editor.

Confira 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 do lance

É possível enviar novos criativos diretamente na resposta do lance.

Use o campo declared_ad do objeto SdkRenderedAd para enviar uma resposta de lance com um criativo de SDK do comprador para revisão.

Os criativos enviados na resposta do lance só são revisados depois de muitos lances. Todos os lances feitos antes da conclusão da análise são filtrados do leilão. Use 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 revisão.

Consulte o guia de criativos para mais detalhes.