Formato de anúncio do SDK do comprador

Os anúncios do SDK do comprador usam criativos renderizados pelo seu próprio SDK.

Inventário de aplicativos para dispositivos móveis de editores que integram seus lances adaptador ao app pode aceitar lances com o formato de anúncio renderizado do SDK do comprador. A forma como eles são renderizados é baseada nas suas A implementação do SDK e o SDKRenderedAd enviado na resposta do lance.

É possível dar um lance incluindo um anúncio renderizado pelo SDK do comprador ou qualquer outro anúncio formato compatíveis com o SDK dos anúncios para dispositivos móveis do Google, mas lances que contenham ambos serão filtrados.

Requisitos

Os anúncios do SDK do comprador estão disponíveis para compradores aprovados. Esse formato requer um esforço de você e do editor. Entre em contato com o Gerente técnico de contas para configure sua conta para anúncios SDK do comprador. Depois, é possível implementar uma estratégia adaptador que permite ao SDK se comunicam com o SDK dos anúncios para dispositivos móveis do Google. O editor precisa se integrar seu SDK e o adaptador aos apps para dispositivos móveis.

Recomendamos que você envie criativos para avaliação antes de incluí-los em uma resposta de lance. Entre em contato com seu gerente técnico de contas caso não saiba o tipo de criativo no momento do lance.

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

Solicitação de lance

As solicitações de lance para inventário de apps para dispositivos móveis incluem detalhes sobre os SDKs e no aplicativo do editor que podem ser usados para renderizar nos seguintes :

ID do SDK

Use a solicitação de lance para encontrar o id que você precisa fornecer no lance. para um anúncio renderizado do SDK do comprador.

Consulte os seguintes campos:

  • OpenRTB: BidRequest.app.ext.installed_sdk
  • Protocolo RTB do Google (descontinuado): BidRequest.mobile.installed_sdk

Saiba mais sobre a mensagem InstalledSdk na OpenRTB e o Google guias de protocolos.

Mapeamento de bloco de anúncios

Você pode usar a solicitação de lance para ler mapeamentos de blocos de anúncios que correspondem ao espaço de lance.

Consulte os seguintes campos:

  • OpenRTB: BidRequest.imp.ext.ad_unit_mapping
  • Protocolo RTB do Google (descontinuado): BidRequest.AdSlot.ad_unit_mapping

Saiba mais sobre o objeto AdUnitMapping na OpenRTB e Google guias de protocolos.

Indicadores seguros

Os editores podem compartilhar indicadores seguros com bidders. Você pode ler essas informações O objeto BuyerGeneratedRequestData do OpenRTB ou o modelo descontinuado do Google objeto SecureSignal do protocolo RTB.

Consulte os seguintes campos:

  • OpenRTB: BidRequest.imp.ext.buyer_generated_request_data.data
  • Protocolo RTB do Google (descontinuado): BidRequest.AdSlot.SecureSignal.data

Saiba mais sobre como os indicadores seguros são representados OpenRTB e Google guias de protocolos.

Solicitações de teste

Leia o campo "Solicitação de teste" para entender se a solicitação de lance é teste.

Consulte os seguintes campos:

  • OpenRTB: BidRequest.test
  • Protocolo RTB do Google (descontinuado): BidRequest.is_test

Saiba mais sobre o campo Test na OpenRTB e Google guias de protocolos.

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:

  • OpenRTB:
    • BidResponse.seatbid.bid.adomain
    • BidResponse.seatbid.bid.ext.billing_id
    • BidResponse.seatbid.bid.crid
    • BidResponse.seatbid.bid.w
    • BidResponse.seatbid.bid.h
  • Protocolo RTB do Google (descontinuado):
    • BidResponse.Ad.click_through_url
    • BidResponse.Ad.AdSlot.billing_id
    • BidResponse.Ad.buyer_creative_id
    • BidResponse.Ad.width
    • BidResponse.Ad.height

Além disso, a resposta do lance precisa incluir um SdkRenderedAd com o seguintes:

ID do SDK

Use o campo id para informar o ID do SDK para renderizar o anúncio.

Encontre o ID na solicitação de lance com os seguintes campos:

  • OpenRTB: BidRequest.app.ext.installed_sdk
  • Protocolo RTB do Google (descontinuado): BidRequest.mobile.installed_sdk

Saiba mais sobre a mensagem InstalledSdk na OpenRTB e Google guias de protocolos.

Anúncio declarado

Use um campo declared_ad para fornecer um criativo que atenda à solicitação de lance CreativeEnforcementSettings requisitos e representa e processamento de dados. Apenas uma destas opções: html_snippet, video_url, video_vast_xml ou native_response deve ser preenchido.

Se você não preencher declared_ad, não será possível revisar o criativo. todos os lances com o criativo são filtrados do leilão.

Dados de renderização

Use o campo rendering_data para fornecer os dados ao SDK do comprador para que usará para renderizar seu anúncio.

  • OpenRTB: BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data
  • Protocolo RTB do Google (descontinuado): BidResponse.ad.sdk_rendered_ad.rendering_data

Os lances para inserir um anúncio do SDK do comprador precisam especificar um criativo na declared_ad . O anúncio declarado precisa representar com precisão a 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 avaliação antes de incluí-los em uma resposta de lance.

Consulte a Google e Guias do protocolo OpenRTB para mais detalhes sobre os campos SdkRenderedAd.

Exemplo de resposta do lance

Veja alguns exemplos de respostas de lance 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 de criativo

Os criativos são revisados antes de serem veiculados para garantir que atendam aos nossos políticas e o editor configurações.

Há duas maneiras de enviar criativos para revisão:

API Real-time Bidding (recomendado)

Você pode usar o buyers.creatives.create da API Real-time Bidding para enviar criativos para revisão.

A API exige apenas um envio por criativo e permite que você verifique o status da revisão 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 do SDK do comprador para revisão.

Os criativos enviados na resposta do lance são revisados somente após vários lances. Todos os lances feitos antes da conclusão da revisão são filtrados do leilão. Use a interface de lances em tempo real ou Lances em tempo real API para verificar o status de um criativo após o início da revisão.

Consulte o guia de criativos para mais detalhes.