您的应用在处理完来自 Google 的出价请求后,必须构建
并发送响应本指南介绍了如何编写应用代码以构建
响应。
注意 :Google RTB 协议已废弃。本指南中的示例
将使用 Google 的 OpenRTB Protobuf 实现,除非另有说明。
创建协议缓冲区 BidResponse 消息
Authorized Buyers 将 BidRequest
作为
HTTP POST
。如果您的出价端点配置为使用 protobuf 格式,您的应用必须发送一个响应,其中 Content-Type
标头设置为 application/octet-stream
,并且消息正文由序列化的协议缓冲区组成。协议缓冲区是 openrtb.proto
中定义的 BidResponse
消息。您的应用必须返回一个可解析对象
BidResponse
,响应每个BidRequest
。超时次数
和无法解析的响应会被视为错误,Google 会限制
错误率较高的出价方。
如果您不想对某个展示机会出价,可以将
BidResponse.ext.processing_time_ms
字段,保留所有
其他字段留空。您可以从以下位置获取 openrtb.proto
:
参考数据 页面。
广告素材 ID
您的 BidResponse
通过 BidResponse.seatbid.bid.crid
字段(限制为 64 字节)指定广告素材。即使是类似的广告素材,如果在任何显著特征(包括但不限于尺寸、声明的网址、广告素材属性和供应商类型)方面存在差异,也必须为此字段提供不同的值。换言之,您必须提供不同的
广告素材 ID 与符合以下条件的任意两个广告相关联:
外观或行为方式有所不同。
渲染到不同的图片。
以不同的方式呈现(例如,一个广告由图片组成,另一个广告则是视频)。
在设计应用时,您应确定一种系统的标识符生成方法,该方法应适用于您计划提交的广告素材类型。
广告属性
Google 建议您声明广告素材属性,以便使用 BidResponse.seatbid.bid.apis
和 BidResponse.seatbid.bid.attr
的组合或 BidResponse.seatbid.bid.ext.attribute
扩展来描述广告的特性和定位条件。以下内容介绍了如何声明属性:
VPAID
将 BidResponse.seatbid.bid.apis
设置为 VPAID_1
,
或 VPAID_2
。对于 JSON 格式,可以将其设置为
1
或 2
。
MRAID
将 BidResponse.seatbid.bid.apis
设置为 MRAID_1
,或将其设置为 3
(对于 JSON 格式)。
SIZELESS
将BidResponse.seatbid.bid.attr
设为
RESPONSIVE
,或 18
(对于 JSON)
格式。
PLAYABLE
这通过将 BidResponse.seatbid.bid.attr
设置为 USER_INTERACTIVE
或 13
(对于 JSON 格式)来指明。
如需了解如何获取有关广告素材检测到的属性的反馈,请参阅 Creatives 资源 。
公开出价字段
参与公开出价的广告交易平台和广告联盟出价方发送的出价响应与参与标准实时出价的 Authorized Buyers 买方发送的出价响应类似。公开出价客户可以指定少量
一些现有字段可能有其他用途。其中包括:
OpenRTB
Authorized Buyers
详细信息
BidResponse.imp[].pmp.deals[].id
BidResponse.ad[].adslot[].exchange_deal_id
与此交易相关联的广告交易平台命名空间中的交易 ID
出价并报告给发布商
BidResponse.seatbid[].bid[].ext.exchange_deal_type
BidResponse.ad[].adslot[].exchange_deal_type
向发布商报告的交易类型,会影响交易在竞价中的处理方式。
BidResponse.seatbid[].bid[].ext.third_party_buyer_token
BidResponse.ad[].adslot[].third_party_buyer_token
如果作为公开出价方参与竞价的广告交易平台充当中介,则此令牌用于识别最终第三方买方信息。此 ID 从
第三方买方,且必须在出价中原封不动地传递给 Google
响应。
建议
出价响应示例
以下示例展示了 Protobuf 和 JSON 请求的人类可读示例。
OpenRTB Protobuf
显示示例
id: "q745y3S4jz5Qg43A6izy2V"
seatbid {
bid {
id: "Fi366E0I1RN4Ofm8Ug5"
impid: "1"
price: 0.02
adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
adomain: "google.com"
cid: "51570472186"
crid: "test_creative_id_520474"
w: 468
h: 60
[com.google.doubleclick.bid] {
impression_tracking_url: "https://test.com/impression?id=123456"
impression_tracking_url: "https://test.com/impression?id=123456"
event_notification_token {
payload: "token"
}
billing_id: 51570472186
}
}
seat: "1608:1311:489067"
}
bidid: "6930l9D4-1A9090lR-451S-01g3xTZv8382"
[com.google.doubleclick.bid_response] {
processing_time_ms: 100
}
OpenRTB JSON
显示示例
{
"id": "sW2R7543D2w77f0542uu0F",
"seatbid": [
{
"bid": [
{
"id": "U4495qveIO2A83s1iOs",
"impid": "1",
"price": 0.10701,
"adid": "test_creative_id_323125",
"adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
"adomain": [
"google.com"
],
"cid": "54460865479",
"crid": "test_creative_id_323125",
"w": 300,
"h": 250,
"ext": {
"app_promotion_type": "INSTALLS",
"impression_tracking_url": [
"https://test.com/impression?id=123456",
"https://test.com/impression?id=123456"
]
}
}
],
"seat": "1506:2993:976791"
}
],
"bidid": "WN7415ff-hN7R6080-3txk-r0J45ckY5970"
}
Google
显示示例
ad {
html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
adslot {
id: 1
max_cpm_micros: 10100
billing_id: 30279159795
}
click_through_url: "google.com"
attribute: 47
buyer_creative_id: "test_creative_id_766108"
advertiser_name: "Google"
width: 320
height: 50
impression_tracking_url: "https://test.com/imp?id=123456"
event_notification_token: "token"
}
processing_time_ms: 8
重要提示 :示例中所述的 Protobuf 消息在此处以人类可读的文本表示。然而,这并不是
这些消息通过网络发送使用 Google 或 OpenRTB 协议缓冲区时
格式,系统就只会接受序列化的 BidResponse 消息。
您可以使用以下 C++ 代码创建和序列化 BidResponse
消息:
BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
// respond to the POST with post_response as the content
} else {
// return an error to the POST
}
指定广告素材
您的出价响应会指定在出价胜出后要投放的广告素材。您的出价必须包含一种受支持的广告格式(AMP、视频、原生)。在本课中,
我们使用 html_snippet
字段指定广告素材。
或者,您也可以根据广告格式,使用以下一个 字段指定广告素材:
SDK 呈现的广告
<ph type="x-smartling-placeholder"></ph>BidResponse.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
视频
BidResponse.seatbid.bid.adm
原生广告
BidResponse.seatbid.bid.adm_native
使用
BidResponse.seatbid.bid.adm
字段中的值。代码段包含在
在网页上插入 iFrame,以便系统检索广告
在页面加载时呈现。您必须精心制作 HTML 代码段,以便广告(横幅广告或插页式广告)在 iFrame 中正确呈现,并且尺寸与您要出价的广告位相称。
此外,出价响应中声明的广告尺寸必须与一个尺寸完全匹配
下列哪种尺寸组合?
广告是常规横幅广告(而非视频广告、原生广告或插页式广告)。
出价方已在出价响应中声明了该尺寸。每当请求中存在多个尺寸时,都必须声明尺寸。
插页式广告属于例外情况。对于插页式广告,宽度
必须至少为屏幕宽度的 50%,且高度必须至少为屏幕的 40%
屏幕高度
您可以指定 HTML 代码段广告素材,方法是使用
但要注意指定
crid
字段(在
Create BidResponse message 部分。
此功能的一个用途是将额外的信息添加到
作为呈现广告的一部分从您的服务器中提取。这样,您就可以通过
有关展示的任意数据传回您自己的服务器。
出价响应中返回的 HTML 代码段的大多数政策都与
。请参阅 Authorized Buyers
计划指南 、对第三方的要求
广告投放 和声明
广告的点击后到达网址 。
指定宏
宏是嵌入到某些出价响应字段中的格式化文本,这些字段包含网址,这些网址会在广告投放时替换为相关值。例如:
如果胜出的出价的 HTML 中包含 AUCTION_PRICE
宏,则会发生此错误
代码段广告素材,该宏将被替换为
值,以确定您为每次展示机会支付的金额
与竞价相关的费用。
您可以在以下字段中添加宏:
BidResponse.seatbid.bid.adm
HTML 代码段、原生广告、视频网址和视频 VAST 均支持宏
XML 格式。
BidResponse.seatbid.bid.adm_native.eventtrackers.url
BidResponse.seatbid.bid.adm_native.imptrackers
BidResponse.seatbid.bid.ext.amp_ad_url
只有 Google 专用的 WINNING_PRICE
和
AMP 广告素材支持 WINNING_PRICE_ESC
宏。
BidResponse.seatbid.bid.burl
BidResponse.seatbid.bid.ext.impression_tracking_url
在以下情况下,请使用此字符串而不是 BidResponse.seatbid.bid.burl
需要多个结算网址。
例如,您可以在 HTML 代码段中加入宏,方法是
将 ${MACRO}
嵌入用于提取广告素材的网址内,
其中 MACRO
是受支持的宏之一,具体请参阅
OpenRTB 规范 。
Google RTB 宏
除了 OpenRTB 中的宏之外,Google 还支持其他宏
规范它们的格式有所不同,并显示为
如果嵌入到网址中,则为 %%MACRO%%
。下表介绍了
这些宏:
宏
说明
ADVERTISING_IDENTIFIER
允许买方在 Google Cloud 上接收 iOS IDFA 或 Android 广告 ID
展示呈现。
如需了解详情,请参阅解密广告主标识符 。
CACHEBUSTER
一个无符号的四字节随机整数字符串表示。
CLICK_URL_UNESC
广告的不转义点击后到达网址。在代码段中,第三方点击跟踪网址的转义版本应直接跟在宏后面。
例如,如果第三方点击跟踪网址为 http://my.adserver.com/some/path/handleclick?click=clk
,则可以在宏调用后将以下代码与第三方点击跟踪网址的单重转义版本搭配使用:
<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
在投放广告时,上述代码将会扩展为:
<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
该网址会先向 Google 注册该点击,然后再重定向
第三方点击跟踪网址。
CLICK_URL_ESC
广告的转义点击跟踪网址。如果您需要先将值传递到另一个随后会返回重定向的服务器,请使用此宏而非 CLICK_URL_UNESC
。
例如,可以在 HTML 代码段中使用以下代码:
<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>
在广告投放时,此字段会展开为:
<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>
这会向 my.adserver.com
注册点击,然后 my.adserver.com
将负责重定向到 google_click_url
参数中传递的网址。这假定 my.adserver.com
会对 google_click_url
参数进行转义。
您可以将一个两次转义网址附加到
%%CLICK_URL_ESC%%
。取消转义后
my.adserver.com
,这会留下
附加到 google_click_url
的网址。提取 google_click_url
后,它会再次转义,然后重定向。
CLICK_URL_ESC_ESC
广告的两次转义网址。如果您需要先将值传递到另一个随后会返回重定向的服务器,请使用此宏而非 CLICK_URL_UNESC
。
例如,可以在 HTML 代码段中使用以下代码:
<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>
在投放广告时,上述代码将会扩展为:
<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a>
SCHEME
如果出价请求不需要 SSL,则扩展为 http:
;如果出价请求需要 SSL,则扩展为 https:
。
SITE
内容网址的域名,经过了网址转义;对于匿名广告资源,则为匿名 ID。
SITE_URL
已弃用。已被提供相同功能的 SITE 宏替换。
TZ_OFFSET
时区偏移量。
VERIFICATION
在生产环境中和在验证流水线中扫描广告素材时,值不同。格式为:
%%?VERIFICATION:true-val:false-val%%
,其中任何值
但宏可用于 true-val
和
false-val
,包括空字符串。对于公开出价,我们建议广告交易平台使用此宏;广告交易平台使用此宏后,需求方平台无需进行任何更改。
例如,如果广告素材包含
%%?VERIFICATION:-1:5000%%
,然后进行文本替换
会5000
投放,-1
验证流水线。这有助于区分这两组 ping。
WINNING_PRICE
编码格式的展示费用(即 CPI,而不是每千次展示费用),以账号币种的百万分之一表示。例如,胜出的每千次展示费用为 5 美元
相当于 5,000,000 微单位的每千次展示费用,或 5,000 个微单位的每次安装费用。在这种情况下,WINNING_PRICE
的解码值将为 5,000。胜出价格是以 CPI 指定的。
要解析此宏,您需要实现一个
解密价格确认。如需了解详情,请参阅解密价格确认 页面。
WINNING_PRICE_ESC
经过网址转义的 WINNING_PRICE
。
Google 要求您在第三方投放的广告的广告素材中使用 CLICK_URL_UNESC
或 CLICK_URL_ESC
宏。Google 使用 CLICK_URL
宏进行点击跟踪。
宏中的网址转义使用以下架构:
系统会用加号 (+
) 代替空格字符。
字母数字字符(0-9、a-z、A-Z)和 !()*、-./:_~ 集中的字符会保持不变。
所有其他字符都会替换为 %XX
,其中 XX
为十六进制字符
代表字符的数字。
发布商限制和要求
出价请求包含有关发布商在竞价中对广告素材施加的限制和要求的类型的信息。
BidRequest.bcat
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
在实践中,此值始终会设为 true
,因为 Google 要求所有广告素材都支持 SSL。
BidRequest.imp.{audio/banner/native/video}
BidRequest.imp.{audio/banner/native/video}.api
BidRequest.imp.{audio/banner/native/video}.battr
BidRequest.imp.{audio/banner/video}.mimes
切勿针对包含受限功能的广告出价。对于允许的功能(例如供应商类型),仅当广告的供应商类型在 BidRequest
中的 allowed_vendor_type
列表中时,才返回相应广告。仅限广告
通过填充
BidRequest.imp.banner
应包含在您的出价中。如需了解详情,请参阅 BidRequest
协议缓冲区定义中对这些字段的注释。
如果在 BidResponse
中返回广告,您需要
准确设置BidResponse.seatbid.bid.attr
,
BidResponse.seatbid.bid.cat
,以及
BidResponse.seatbid.bid.adomain
或
BidResponse.seatbid.bid.adm_native.link.url
字段
BidResponse
。如果一个广告针对这些值有多个适用的值
字段,则必须包含所有值。如需了解详情,请参阅 BidResponse
协议缓冲区定义中对这些字段的注释。系统会舍弃未设置这些字段的响应。
Open Measurement
借助 Open Measurement,您可以指定为投放到移动应用环境的广告提供独立衡量和验证服务的第三方供应商。
支持的广告格式包括视频广告、横幅广告和插页式广告。如需详细了解如何在包含这些格式的出价响应中使用 Open Measurement,请参阅 Open Measurement SDK 帮助中心文章。
出价响应示例
以下部分显示了不同广告类型的出价响应示例。
应用横幅广告
OpenRTB Protobuf
显示示例
id: "m7T91l3qg177P4b39N26W1"
seatbid {
bid {
id: "5viGQ43x3HI44d22DW3"
impid: "1"
price: 0.040404
adid: "test_creative_id_566440"
adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
adomain: "google.com"
cid: "67427969102"
crid: "test_creative_id_566440"
cat: "IAB3"
cat: "IAB13"
w: 320
h: 50
burl: "https://test.com/imp?id=123456"
[com.google.doubleclick.bid] {
billing_id: 67427969102
}
}
seat: "1912:1424:626226"
group: false
}
bidid: "38508qU5-957YGflD-M2rg-7B19HjXU00n2"
cur: "USD"
OpenRTB JSON
显示示例
{
"id": "SwkWZ9w3I3gJ803j84253U",
"seatbid": [
{
"bid": [
{
"id": "ro22H780p349mF6oe0h",
"impid": "1",
"price": 0.04001,
"adid": "test_creative_id_978541",
"adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
"adomain": [
"google.com"
],
"cid": "82346236545",
"crid": "test_creative_id_978541",
"w": 390,
"h": 61,
"ext": {
"skadn": {
"version": "3.0",
"network": "5c39728P",
"campaign": "10199716",
"itunesitem": "640052147",
"sourceapp": "com.google.testapp",
"fidelities": [
{
"fidelity": 1,
"nonce": "9b05b355-a526-4f7c-9925-ab5c91b9dbef",
"signature": "0HY71438fqxkY2tqD14kV9DY1q3Fi77sc99e0D97Qo833M266T75c28Y5NM23wiL61WyNCe0277ER5eM32UxaKGf99GUM1jI",
"timestamp": "1714079463090"
},
{
"fidelity": 0,
"nonce": "9b05b355-a526-4f7c-9925-ab5c91b9dbef",
"signature": "J6RVg1KI31q1lB68f6F16fA07kY93DAYU2IL5ETDuvczR48oMr3S3X9tIohWi4L2VcE0w4mi42o0Mqa174U7o65951z44ru4",
"timestamp": "1714079463090"
}
]
},
"app_promotion_type": "INSTALLS",
"impression_tracking_url": [
"https://test.com/impression?id=123456",
"https://test.com/impression?id=123456"
]
}
}
],
"seat": "4372:2283:725828"
}
],
"bidid": "Z8aZJEk4-r2e3z85n-je52-q0E586r76K4T"
}
Google
显示示例
ad {
html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
adslot {
id: 1
max_cpm_micros: 31014
billing_id: 16751333146
}
click_through_url: "google.com"
attribute: 47
attribute: 50
category: 0
buyer_creative_id: "test_creative_id_173035"
advertiser_name: "Google"
width: 300
height: 250
impression_tracking_url: "https://test.com/imp?id=123456"
event_notification_token: "token"
advertised_app_id: "APP_ID_OMITTED"
app_promotion_type: INSTALLS
}
processing_time_ms: 10
应用插页式广告
OpenRTB 协议缓冲区
显示示例
id: "wqZn032336g5U2Saroj8Lc"
seatbid {
bid {
id: "mTD7EYxAyF6n763v7pJ"
impid: "1"
price: 0.033932000398635864
adid: "test_creative_id_237493"
adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
adomain: "google.com"
adomain: "google.com"
cid: "42834631855"
crid: "test_creative_id_237493"
cat: "IAB2-18"
cat: "IAB20"
w: 360
h: 711
burl: "https://test.com/imp?id=123456"
[com.google.doubleclick.bid] {
impression_tracking_url: "https://test.com/impression?id=123456"
attribute: 8
event_notification_token {
payload: "token"
}
billing_id: 42834631855
}
}
}
bidid: "62i6224k-ada8764U-y4Fi-2z760VkR3s35"
cur: "USD"
OpenRTB JSON
显示示例
{
"id": "BQig8glrLj2K7p818w3s0S",
"seatbid": [
{
"bid": [
{
"id": "v0x1j4q0B388Z5lv600",
"impid": "1",
"price": 0.25109,
"adid": "test_creative_id_654733",
"adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
"adomain": [
"google.com"
],
"cid": "73848702501",
"crid": "test_creative_id_654733",
"w": 428,
"h": 846,
"ext": {
"skadn": {
"version": "4.0",
"network": "43D4r5x9",
"sourceidentifier": "6217",
"itunesitem": "950280085",
"sourceapp": "com.google.testapp",
"fidelities": [
{
"fidelity": 0,
"nonce": "0d223af6-1847-43aa-9f4f-963de4468b68",
"signature": "8fZn83e3d0742gU7E8Ra7Vif4v1vK61X899f7G7q9Dl998035Gq81Zd4r3032814bQ03HP49709yf38n6U35YY29D0w2Ac5B",
"timestamp": "1714058970102"
},
{
"fidelity": 1,
"nonce": "0d223af6-1847-43aa-9f4f-963de4468b68",
"signature": "zs0k0e335UoH9M6mp1V228I8JAl2526LCKF0dc2l8x7o4270lsQ37B12Cf91a770RcNqSG7Kl667xsw97Eo4nA23o41h3c0H",
"timestamp": "1714058970102"
}
]
},
"app_promotion_type": "INSTALLS",
"impression_tracking_url": [
"https://test.com/impression?id=123456",
"https://test.com/impression?id=123456"
]
}
}
],
"seat": "9150:1636:894279"
}
],
"bidid": "taiup4HY-42ggR62I-120u-3kyZ4831M9Yt"
}
Google
显示示例
ad {
html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
adslot {
id: 1
max_cpm_micros: 1079285
billing_id: 37034094959
currency: "TWD"
}
click_through_url: "google.com"
attribute: 105
attribute: 47
category: 7
buyer_creative_id: "test_creative_id_903208"
advertiser_name: "Google"
width: 398
height: 744
impression_tracking_url: "https://test.com/imp?id=123456"
impression_tracking_url: "https://test.com/imp?id=123456"
event_notification_token: "token"
skadn {
version: "4.0"
network: "41dEOEaD"
itunesitem: "151251861"
sourceapp: "500811620"
fidelities {
fidelity_type: VIEW_THROUGH_ADS
nonce: "0c9020f9-14c4-4dcd-8944-23ab140556a8"
timestamp: 1714094838257
signature: "p1f6bi578Q0jX163o5ws6n630p142H1v75rziXPtoak952g0Be18230732OkYu7epL9elCJ25078L09G5Mi6u7s7MyO2j5sI"
}
fidelities {
fidelity_type: STOREKIT_RENDERED_ADS
nonce: "0c9020f9-14c4-4dcd-8944-23ab140556a8"
timestamp: 1714094838257
signature: "JFtn495ab0EX97ci69Ru9c39ot9TWn5T0052F4439Y2a9u7zN2do7Q9AH4N584irpJmS8K877980K14iQgO74I33vgx231Cf"
}
skadn_options {
always_open_appstore: true
}
source_identifier: 72
}
}
processing_time_ms: 70
应用插页式视频广告
OpenRTB 协议缓冲区
显示示例
id: "cRPF1960K8WH788KM8ZT5k"
seatbid {
bid {
id: "99862J52T2r9f8n6hzY"
impid: "1"
price: 0.2873480215418293
adid: "test_creative_id_958969"
adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
adomain: "google.com"
cid: "80831705186"
crid: "test_creative_id_958969"
w: 480
h: 854
}
seat: "5731:4728:218110"
}
bidid: "dR2wx766-444e907U-Xpv0-634m58Wa5V73"
cur: "USD"
Google
显示示例
ad {
adslot {
id: 1
max_cpm_micros: 5037989
billing_id: 82632801525
currency: "TWD"
}
click_through_url: "google.com"
attribute: 47
category: 7
buyer_creative_id: "test_creative_id_497252"
advertiser_name: "Google"
width: 720
height: 1280
video_vast_xml: "OMITTED_VAST_XML"
event_notification_token: "token"
advertised_app_id: "APP_ID_OMITTED"
app_promotion_type: INSTALLS
}
processing_time_ms: 70
应用原生
OpenRTB 协议缓冲区
显示示例
id: "P3mh232944yQx803R73ayZ"
seatbid {
bid {
id: "79B1S3h454910R471JL"
impid: "1"
price: 0.044748470187187195
adomain: "google.com"
cid: "52078759229"
crid: "test_creative_id_537521"
cat: "IAB20"
burl: "https://test.com/imp?id=123456"
adm_native {
ver: "1.2"
assets {
id: 1
required: true
title {
text: "Luxury Mars Cruises"
}
}
assets {
id: 5
required: true
img {
url: "https://native.test.com/image?id=123456"
w: 1200
h: 627
type: MAIN
}
}
assets {
id: 6
required: false
img {
url: "https://native.test.com/logo?id=123456"
w: 100
h: 100
type: LOGO
}
}
assets {
id: 2
required: true
data {
value: "Visit the planet in a luxury spaceship."
type: DESC
}
}
assets {
id: 3
required: false
data {
value: "Book today"
type: CTATEXT
}
}
assets {
id: 4
required: true
data {
value: "Galactic Luxury Cruises"
type: SPONSORED
}
}
link {
url: "https://www.google.com"
clicktrackers: "https://native.test.com/click?id=123456"
}
eventtrackers {
event: IMPRESSION
method: IMG
url: "https://test.com/event?id=123456"
}
}
[com.google.doubleclick.bid] {
event_notification_token {
payload: "token"
}
billing_id: 52078759229
}
}
seat: "2237:7356:617887"
}
cur: "USD"
OpenRTB JSON
显示示例
{
"id": "3u95d40fy46B0y3CEL73uy",
"seatbid": [
{
"bid": [
{
"id": "d501820Aa099K69Ia64",
"impid": "1",
"price": 1.63,
"burl": "https://test.com/imp?id=123456",
"adm": "{\"assets\": [{\"id\": 1, \"required\": 1, \"title\": {\"text\": \"Luxury Mars Cruises\"}}, {\"id\": 2, \"required\": 1, \"data\": {\"value\": \"Visit the planet in a luxury spaceship.\", \"label\": \"\"}}, {\"id\": 3, \"data\": {\"value\": \"Book today\", \"label\": \"\"}}, {\"id\": 4, \"required\": 1, \"data\": {\"value\": \"Galactic Luxury Cruises\", \"label\": \"\"}}, {\"id\": 5, \"required\": 1, \"img\": {\"url\": \"https://native.test.com/image?id=123456\", \"h\": 628, \"w\": 1200}}, {\"id\": 6, \"img\": {\"url\": \"https://native.test.com/logo?id=123456\", \"h\": 640, \"w\": 640}}], \"link\": {\"url\": \"https://www.google.com\", \"clicktrackers\": [\"https://native.test.com/click?id=123456\"]}, \"imptrackers\": [\"https://test.com/impression?id=123456&amt=${AUCTION_PRICE}\"], \"privacy\": \"\"}",
"adid": "test_creative_id_237765",
"adomain": [
"google.com"
],
"cid": "30567639040",
"crid": "test_creative_id_237765",
"cat": [
"IAB8"
],
"ext": {
"skadn": {
"version": "3.0",
"network": "345vh5bv",
"campaign": "62744790",
"itunesitem": "608550422",
"sourceapp": "com.google.testapp",
"fidelities": [
{
"fidelity": 0,
"nonce": "88db095e-1022-48bb-ad38-54a1075886aa",
"timestamp": "1714430552729",
"signature": "4063Vhn5W7oGEcJ202oj6k990Y3H7f9sJ6luK3O65RbQ3S9kp45VK84le4a424c6SU79384DTdXS1cHWcxl9SB98563Y38K9"
},
{
"fidelity": 1,
"nonce": "88db095e-1022-48bb-ad38-54a1075886aa",
"timestamp": "1714430552729",
"signature": "r1852LY7j0f25q2s868j1Ub7r07S16e607BC5909O272F8i528732r22W7D138t3706205Ez139N73Iho3vJKp257Pp4vmet"
}
]
},
"app_promotion_type": 1,
"event_notification_token": {
"payload": "token"
}
}
}
],
"seat": "3512:7802:295531"
}
],
"cur": "USD"
}
Google
显示示例
ad {
adslot {
id: 1
max_cpm_micros: 1581987
billing_id: 32132054378
}
click_through_url: "google.com"
attribute: 47
attribute: 8
buyer_creative_id: "test_creative_id_285893"
advertiser_name: "Google"
native_ad {
headline: "Luxury Mars Cruises"
body: "Visit the planet in a luxury spaceship."
call_to_action: "Book today"
advertiser: "Galactic Luxury Cruises"
image {
url: "https://native.test.com/image?id=123456"
width: 800
height: 800
}
logo {
url: "https://native.test.com/logo?id=123456"
width: 200
height: 200
}
price: "\342\202\254106.40"
click_link_url: "https://www.google.com"
}
impression_tracking_url: "https://test.com/imp?id=123456"
impression_tracking_url: "https://test.com/imp?id=123456"
ad_choices_destination_url: "https://test.com/preferences"
event_notification_token: "token"
}
processing_time_ms: 20
网络视频
Google
显示示例
ad {
adslot {
id: 1
max_cpm_micros: 16000000
billing_id: 34223090460
deal_id: 17775265
}
click_through_url: "google.com"
attribute: 47
attribute: 8
video_url: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
buyer_creative_id: "test_creative_id_551392"
advertiser_name: "Google"
event_notification_token: "token"
}
processing_time_ms: 7
面向广告交易平台出价方的移动网站横幅广告
OpenRTB Protobuf
显示示例
id: "878w58e050dSf05LS9l424"
seatbid {
bid {
id: "478u6K990C990n7FPTX"
impid: "1"
price: 0.03
adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
adomain: "google.com"
cid: "46483683815"
crid: "test_creative_id_527097"
w: 320
h: 50
[com.google.doubleclick.bid] {
impression_tracking_url: "https://test.com/impression?id=123456"
impression_tracking_url: "https://test.com/impression?id=123456"
event_notification_token {
payload: "token"
}
billing_id: 46483683815
}
}
seat: "6954:3639:781296"
}
bidid: "7a2CAWgt-IKR8mp06-0E3d-TPNq4zO9l767"
[com.google.doubleclick.bid_response] {
processing_time_ms: 120
}