Formato del anuncio del SDK del comprador

Los anuncios con el SDK del comprador usan creatividades renderizadas por tu propio SDK.

El inventario de apps para dispositivos móviles de los publicadores que integran tu adaptador de ofertas en su app puede aceptar ofertas con el formato de anuncio renderizado del SDK del comprador. La forma en que se renderizan se basa en la implementación del SDK y el SDKRenderedAd que envíes en la respuesta a la oferta.

Puedes realizar una oferta que incluya un anuncio renderizado en el SDK del comprador o cualquier otro formato de anuncio compatible con el SDK de anuncios de Google para dispositivos móviles, pero se filtrarán las ofertas que contengan ambos.

Requisitos

Los anuncios del SDK del comprador están disponibles para los compradores aprobados. Este formato requiere un esfuerzo adicional de tu parte y del editor. Comunícate con tu administrador técnico de cuentas a fin de configurar tu cuenta para los anuncios del SDK del comprador. Luego, puedes implementar un adaptador de ofertas que permita que el SDK se comunique con el SDK de anuncios de Google para dispositivos móviles. El editor debe integrar tu SDK y el adaptador en sus apps para dispositivos móviles.

Recomendamos que envíes las creatividades para su revisión antes de incluirlas en una respuesta a la oferta. Comunícate con tu administrador técnico de cuentas si no conoces el tipo de creatividad al momento de la oferta.

Si una solicitud de oferta admite este formato del anuncio, puedes especificar un anuncio que se renderice con el SDK. Para ello, configura el campo sdk_rendered_ad en la respuesta a la oferta.

Solicitud de oferta

Las solicitudes de oferta de inventario de aplicaciones para dispositivos móviles incluyen detalles sobre los SDK y los adaptadores de la app del publicador que puedes usar para la renderización en los siguientes campos:

ID de SDK

Puedes usar la solicitud de oferta para encontrar el id que debes proporcionar en la respuesta a la oferta para un anuncio renderizado por el SDK del comprador.

Consulta los siguientes campos:

  • Authorized Buyers: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

Puedes obtener más información sobre el mensaje InstalledSdk en las guías de los protocolos de Google y OpenRTB.

Asignación de unidades de anuncios

Puedes usar la solicitud de oferta para leer las asignaciones de unidades de anuncios que coinciden con el espacio de oferta.

Consulta los siguientes campos:

  • Authorized Buyers: BidRequest.AdSlot.ad_unit_mapping
  • OpenRTB: BidRequest.imp.ext.ad_unit_mapping

Puedes obtener más información sobre el objeto AdUnitMapping en las guías de los protocolos de Google y OpenRTB.

Indicadores seguros

Debes leer el objeto de ID extendido, que es la extensión estándar que se usa para pasar indicadores seguros que elige el publicador.

Consulta los siguientes campos:

  • Authorized Buyers: BidRequest.AdSlot.SecureSignal.data
  • OpenRTB: BidRequest.user.ext.eids.uids.id

Puedes obtener más información sobre el objeto Extended Id en las guías de los protocolos de Google y OpenRTB.

Solicitudes de prueba

Puedes leer el campo Solicitud de prueba para comprender si la solicitud de oferta es de prueba.

Consulta los siguientes campos:

  • Authorized Buyers: BidRequest.is_test
  • OpenRTB: BidRequest.test

Puedes obtener más información sobre el campo Test en las guías de los protocolos de Google y OpenRTB.

Solicitud de oferta de muestra

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>"
  ...
}

Respuesta a la oferta

Oferta de licencia

Los siguientes campos son obligatorios en el objeto BidResponse.seatbid.bid:

  • Authorized Buyers:

    • BidResponse.Ad.click_through_url
    • BidResponse.Ad.AdSlot.billing_id
    • BidResponse.Ad.buyer_creative_id
    • BidResponse.Ad.width
    • BidResponse.Ad.height
  • OpenRTB:

    • BidResponse.seatbid.bid.adomain
    • BidResponse.seatbid.bid.cid
    • BidResponse.seatbid.bid.crid
    • BidResponse.seatbid.bid.w
    • BidResponse.seatbid.bid.h

Puedes obtener más información sobre el mensaje SeatBid en las guías de los protocolos de Google y OpenRTB.

Tu respuesta a la oferta debe incluir un SdkRenderedAd con lo siguiente:

ID de SDK

Usa el campo id para proporcionar el ID a fin de que el SDK renderice el anuncio.

Puedes encontrar el ID en la solicitud de oferta con los siguientes campos:

  • Authorized Buyers: BidRequest.mobile.installed_sdk
  • OpenRTB: BidRequest.app.ext.installed_sdk

Puedes obtener más información sobre el mensaje InstalledSdk en las guías de los protocolos de Google y OpenRTB.

Anuncio declarado

Usa un campo declared_ad para proporcionar una creatividad que cumpla con los requisitos CreativeEnforcementSettings de la solicitud de oferta y que represente los datos de renderización del anuncio. En el caso de los formatos de anuncios no nativos, solo se debe presentar html_snippet, video_url o video_vast_xml. Para el formato del anuncio nativo, solo se debe presentar native_response.

Si no propagas declared_ad, no podremos revisar la creatividad y todas las ofertas con esta se filtrarán de la subasta.

Renderización de datos

Usa el campo rendering_data para proporcionar los datos que usará el SDK del comprador para renderizar tu anuncio.

  • Authorized Buyers: BidResponse.ad.sdk_rendered_ad.rendering_data
  • OpenRTB: BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data

Las ofertas para colocar un anuncio del SDK del comprador deben especificar una creatividad en el campo declared_ad. El anuncio declarado debe representar el rendering_data de forma precisa.

Este es un objeto SdkRenderedAd de muestra:

{
  "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 la API de Ofertas en tiempo real para enviar creatividades para su revisión antes de incluirlas en una respuesta a la oferta.

Consulta las guías de los protocolos de Google y OpenRTB para obtener más detalles sobre los campos SdkRenderedAd.

Ejemplo de respuesta a la oferta

A continuación, presentamos ejemplos de respuestas a ofertas para cada formato de anuncio:

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"

Video recompensado

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"

Revisión de creatividades

Las creatividades se revisan antes de su publicación para garantizar que cumplan con nuestras políticas y la configuración del publicador.

Existen dos maneras de enviar creatividades para su revisión:

API de Real-time Bidding (recomendado)

Puedes usar el método buyers.creatives.create de la API de Ofertas en tiempo real para enviar creatividades para su revisión.

La API requiere solo un envío por creatividad y te permite verificar el estado de revisión de tu creatividad.

Respuesta a la oferta

Puedes enviar creatividades nuevas directamente en la respuesta a la oferta.

Debes usar el campo declared_ad del objeto SdkRenderedAd para enviar a revisión una respuesta a la oferta con una creatividad de SDK del comprador.

Las creatividades enviadas en la respuesta a la oferta solo se revisan después de muchas ofertas. Todas las ofertas que se realizan antes de que se complete la revisión se filtran de la subasta. Puedes usar la interfaz de Ofertas en tiempo real o la API de Ofertas en tiempo real para verificar el estado de una creatividad después de que comience la revisión.

Consulta la guía de creatividades para obtener más detalles.