Формат объявления SDK для покупателя

В объявлениях SDK для покупателей используются креативы, созданные с помощью вашего собственного SDK.

Инвентарь мобильных приложений от издателей, которые интегрируют ваш адаптер назначения ставок в свое приложение, может принимать ставки с форматом отображаемой рекламы SDK покупателя. То, как они отображаются, зависит от реализации вашего SDK и SDKRenderedAd который вы отправляете в ответе на заявку.

Вы можете разместить ставку, включающую либо объявление, созданное SDK покупателя, либо любой другой формат объявлений , поддерживаемый Google Mobile Ads SDK , но любые ставки, содержащие оба формата, фильтруются.

Требования

Объявления Buyer SDK доступны одобренным покупателям. Этот формат требует дополнительных усилий от вас и издателя. Свяжитесь со своим техническим менеджером по работе с клиентами, чтобы настроить свою учетную запись для рекламы SDK для покупателей. Затем вы можете внедрить адаптер назначения ставок , который позволит вашему SDK взаимодействовать с Google Mobile Ads SDK. Издателю необходимо интегрировать ваш SDK и адаптер в свои мобильные приложения.

Мы рекомендуем отправлять креативы на проверку, прежде чем включать их в ответ на запрос ставки. Если вы не знаете тип креатива на момент подачи заявки, обратитесь к своему техническому менеджеру по работе с клиентами.

Если запрос ставки поддерживает этот формат объявления, вы можете указать объявление, которое будет отображаться с помощью вашего SDK, задав поле sdk_rendered_ad в ответе на заявку .

Запрос ставки

Запросы ставок для инвентаря в мобильных приложениях включают сведения о SDK и адаптерах в приложении издателя, которые вы можете использовать для рендеринга, в следующих полях:

Идентификатор SDK

Вы можете использовать запрос ставки, чтобы найти id , который необходимо указать в ответе на заявку для объявления, отображаемого SDK покупателя.

См. следующие поля:

  • OpenRTB: BidRequest.app.ext.installed_sdk
  • Протокол Google RTB (устаревший): BidRequest.mobile.installed_sdk

Подробнее о сообщении InstalledSdk можно узнать в руководствах по протоколам OpenRTB и Google .

Сопоставление рекламных блоков

Вы можете использовать запрос ставки, чтобы прочитать сопоставления рекламных блоков, которые соответствуют рекламному месту.

См. следующие поля:

  • OpenRTB: BidRequest.imp.ext.ad_unit_mapping
  • Протокол Google RTB (устаревший): BidRequest.AdSlot.ad_unit_mapping .

Подробнее об объекте AdUnitMapping можно узнать в руководствах по протоколам OpenRTB и Google .

Безопасные сигналы

Издатели могут передавать защищенные сигналы участникам торгов. Вы можете прочитать их из объекта BuyerGeneratedRequestData OpenRTB или из объекта SecureSignal устаревшего протокола Google RTB.

См. следующие поля:

  • OpenRTB: BidRequest.imp.ext.buyer_generated_request_data.data
  • Протокол Google RTB (устаревший): BidRequest.AdSlot.SecureSignal.data

Вы можете узнать больше о том, как представлены безопасные сигналы, в руководствах по протоколам OpenRTB и Google .

Тестовые запросы

Вы можете прочитать поле «Тестовый запрос», чтобы понять, является ли запрос ставки тестовым.

См. следующие поля:

  • OpenRTB: BidRequest.test
  • Протокол Google RTB (устаревший): BidRequest.is_test

Подробнее о поле Test можно узнать в руководствах по протоколам OpenRTB и Google .

Образец запроса ставки

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

Ответ на заявку

В ответе на заявку обязательны следующие поля:

  • ОпенРТБ:
    • BidResponse.seatbid.bid.adomain
    • BidResponse.seatbid.bid.ext.billing_id
    • BidResponse.seatbid.bid.crid
    • BidResponse.seatbid.bid.w
    • BidResponse.seatbid.bid.h
  • Протокол Google RTB (устаревший):
    • BidResponse.Ad.click_through_url
    • BidResponse.Ad.AdSlot.billing_id
    • BidResponse.Ad.buyer_creative_id
    • BidResponse.Ad.width
    • BidResponse.Ad.height

Кроме того, ваш ответ на заявку должен включать SdkRenderedAd со следующим:

Идентификатор SDK

Используйте поле id , чтобы указать идентификатор SDK для отображения объявления.

Вы можете найти идентификатор в запросе ставки с помощью следующих полей:

  • OpenRTB: BidRequest.app.ext.installed_sdk
  • Протокол Google RTB (устаревший): BidRequest.mobile.installed_sdk

Подробнее о сообщении InstalledSdk можно узнать в руководствах по протоколам OpenRTB и Google .

Заявленное объявление

Используйте поле declared_ad , чтобы предоставить креатив, который соответствует требованиям CreativeEnforcementSettings запроса ставки и отражает данные рендеринга объявления. Должен быть заполнен только один из html_snippet , video_url , video_vast_xml или native_response .

Если вы не заполните declared_ad , мы не сможем просмотреть креатив, и все ставки с этим креативом будут отфильтрованы с аукциона.

Рендеринг данных

Используйте поле rendering_data , чтобы предоставить данные для SDK покупателя, которые будут использоваться для показа вашего объявления.

  • OpenRTB: BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data
  • Протокол Google RTB (устаревший): BidResponse.ad.sdk_rendered_ad.rendering_data

В ставках на размещение объявления SDK покупателя необходимо указать креатив в поле declared_ad . Заявленное объявление должно точно представлять rendering_data .

Вот пример объекта 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>",
  }
}

Мы рекомендуем использовать API назначения ставок в реальном времени, чтобы отправлять креативы на проверку, прежде чем включать их в ответ на запрос ставки.

Дополнительные сведения о полях SdkRenderedAd см. в руководствах по протоколам Google и OpenRTB .

Пример ответа на заявку

Ниже приведены примеры ответов на запросы ставок для каждого формата объявлений:

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"

Межстраничный

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"

Видео с наградой

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"

Родной

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"

Креативный обзор

Перед показом креативы проверяются на предмет соответствия нашим правилам и настройкам издателя.

Отправить креативы на проверку можно двумя способами:

API для назначения ставок в реальном времени (рекомендуется)

Чтобы отправить креативы на проверку , вы можете использовать метод buyers.creatives.create API для назначения ставок в реальном времени.

API требует только одной отправки каждого креатива и позволяет проверить статус рассмотрения вашего креатива.

Ответ на заявку

Вы можете отправлять новые объявления прямо в ответе на заявку .

Чтобы отправить на рассмотрение ответ на заявку с креативом SDK покупателя, необходимо использовать поле declared_ad объекта SdkRenderedAd .

Креативы, отправленные в ответ на заявку, рассматриваются только после множества ставок. Все ставки, сделанные до завершения проверки, отфильтровываются с аукциона. Вы можете использовать интерфейс назначения ставок в реальном времени или API назначения ставок в реальном времени , чтобы проверить статус креатива после начала проверки.

Более подробную информацию можно найти в руководстве по креативам .