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

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

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

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

Требования

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

Для получения дополнительной информации об этих точках интеграции или для обсуждения других вариантов интеграции сигналов или обработки данных на устройстве с Google Mobile Ads 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 Real-time Bidding.

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

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

Новые рекламные материалы можно отправлять непосредственно в ответе на заявку .

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

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

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