买方 SDK 广告使用由您自己的 SDK 呈现的广告素材。
如果发布商将您的出价适配器集成到其应用中,那么来自发布商的移动应用广告资源便可接受使用买方 SDK 呈现的广告格式的出价。广告的呈现方式取决于您的 SDK 实现方式以及您在出价响应中提交的 SDKRenderedAd
。
您可以采用包含买方 SDK 呈现的广告或 Google 移动广告 SDK 支持的任何其他广告格式进行出价,但包含这两者的所有出价都会被滤除。
要求
买方 SDK 广告适用于已获批准的买方。这种格式需要您和发布商执行额外的工作。如需为买方 SDK 广告配置您的帐号,请与您的技术支持客户经理联系。然后,您可以实现出价适配器,以便您的 SDK 能够与 Google 移动广告 SDK 进行通信。发布商需要将您的 SDK 和适配器集成到其移动应用中。
我们建议您先提交广告素材以供审核,然后再将其包含在出价响应中。如果您在出价时不知道广告素材类型,请与您的技术支持客户经理联系。
如果出价请求支持此广告格式,您可以通过设置出价响应中的 sdk_rendered_ad
字段来指定使用 SDK 呈现的广告。
出价请求
针对移动应用内广告资源的出价请求中包含有关发布商应用中的 SDK 和适配器的详细信息,您可以利用这些 SDK 和适配器在以下字段中进行呈现:
- SDK ID
您可以使用出价请求来查找您必须在买方 SDK 呈现的广告的出价响应中提供的
id
。请参阅以下字段:
- Authorized Buyers:
BidRequest.mobile.installed_sdk
- OpenRTB:
BidRequest.app.ext.installed_sdk
- Authorized Buyers:
- 广告单元映射
您可以使用出价请求来读取与出价位置匹配的广告单元映射。
请参阅以下字段:
- Authorized Buyers:
BidRequest.AdSlot.ad_unit_mapping
- OpenRTB:
BidRequest.imp.ext.ad_unit_mapping
- Authorized Buyers:
- 安全信号
您应该读取 Extended Id 对象,该对象是用于传递发布商选择的安全信号的标准扩展程序。
请参阅以下字段:
- Authorized Buyers:
BidRequest.AdSlot.SecureSignal.data
- OpenRTB:
BidRequest.user.ext.eids.uids.id
- Authorized Buyers:
- 测试请求
您可以查看“测试请求”字段,了解出价请求是否为测试。
请参阅以下字段:
- Authorized Buyers:
BidRequest.is_test
- OpenRTB:
BidRequest.test
- Authorized Buyers:
出价请求示例
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
对象中必须包含以下字段: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
出价响应必须包含包含以下内容的 SdkRenderedAd
:
- SDK ID
使用
id
字段为 SDK 提供 ID 以呈现广告。您可在出价请求中找到该 ID,其中包含以下字段:
- Authorized Buyers:
BidRequest.mobile.installed_sdk
- OpenRTB:
BidRequest.app.ext.installed_sdk
- Authorized Buyers:
- 声明的广告
使用
declared_ad
字段提供符合出价请求的CreativeEnforcementSettings
要求且能代表广告呈现数据的广告素材。对于非原生广告格式,只能呈现html_snippet
、video_url
或video_vast_xml
中的一个。对于原生广告格式,应仅显示native_response
。- Authorized Buyers:
BidResponse.ad.sdk_rendered_ad.declared_ad
- OpenRTB:
BidResponse.seatbid.bid.ext.sdk_rendered_ad.declared_ad
如果您不填充
declared_ad
,我们将无法审核该广告素材,而且该广告素材的所有出价都会被滤除而无法参与竞价。- Authorized Buyers:
- 呈现数据
使用
rendering_data
字段提供数据,以供买方 SDK 用于呈现您的广告。- Authorized Buyers:
BidResponse.ad.sdk_rendered_ad.rendering_data
- OpenRTB:
BidResponse.seatbid.bid.ext.sdk_rendered_ad.rendering_data
- Authorized Buyers:
为投放买方 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>", } }
我们建议您使用 Real-time Bidding 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"
广告素材审核
广告素材在投放之前会接受审核,以确保符合我们的政策和发布商设置。
您可以通过以下两种方式提交广告素材以供审核:
- Real-time Bidding API(推荐)
您可以使用 Real-time Bidding API 的
buyers.creatives.create
方法提交广告素材以供审核。使用此 API 只需提交每个广告素材一次,让您可以查看广告素材的审核状态。
- 出价响应
您可以直接在出价响应中提交新的广告素材。
您必须使用
SdkRenderedAd
对象的declared_ad
字段来提交包含买方 SDK 广告素材的出价响应以供审核。在出价响应中提交的广告素材只有在多次出价后才会接受审核。 在审核完成之前提交的所有出价都会被滤除而无法参与竞价。 在审核开始后,您可以使用实时出价界面或 Real-time Bidding API 查看广告素材的状态。
如需了解详情,请参阅广告素材指南。