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

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

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

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

Требования

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

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

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

Запрос предложения

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

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

Вы можете использовать запрос заявки, чтобы найти идентификатор SDK, который необходимо предоставить в ответе на заявку с помощью поля BidRequest.app.ext.installed_sdk.id .

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

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

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

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

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

Издатели могут обмениваться защищёнными сигналами с участниками торгов. Их можно найти в BidRequest.imp.ext.buyer_generated_request_data.data .

Дополнительную информацию о представлении защищенных сигналов можно найти в справочной документации BuyerGeneratedRequestData .

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

Поле BidRequest.test можно использовать для проверки того, является ли запрос на ставку тестовым.

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

Образец запроса предложения

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

Кроме того, ваш ответ на заявку должен содержать BidResponse.seatbid.bid.ext.sdk_rendered_ad со следующими данными:

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

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

Идентификатор можно найти в BidRequest.app.ext.installed_sdk .

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

Используйте BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad , чтобы предоставить креатив, соответствующий требованиям BidRequest.imp.ext.creative_enforcement_settings и репрезентативный для данных рендеринга объявления. Необходимо заполнить только один из следующих параметров: html_snippet , video_url , video_vast_xml или native_response .

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

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

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

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

В заявках на размещение рекламы 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 см. в руководстве 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 .

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

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