公开竞价网络集成
ORTB 请求/响应
Yandex 服务器间集成端点将由经理提供。
Yandex 支持 OpenRTB API 规范 2.5。
竞价请求结构
Bid Request
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
竞价请求的唯一 ID,由交易提供 |
|
|
是 |
表示提供的展示次数的 |
|
|
是 |
通过 |
|
|
是 |
通过 |
|
|
是 |
通过 |
|
整数 |
是 |
交易允许接收竞价的最长时间(毫秒),包含网络延迟以避免超时 |
|
字符串数组 |
是 |
由此竞价请求的竞价所允许的货币构成的数组,用 |
|
整数 |
否 |
测试模式标识,测试模式下竞拍不计费, |
|
整数 |
否 |
竞拍类型, |
|
字符串数组 |
否 |
使用 IAB 内容类别的被封锁广告主类别 |
|
|
否 |
用于指定此次请求适用的行业、法律或政府监管要求的 |
App
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
平台特定的每个应用程序的唯一标识符,并且与交易无关 |
|
字符串 |
否 |
特定于交易的应用 ID |
|
字符串 |
否 |
应用版本 |
|
字符串数组 |
否 |
应用的 IAB 内容类别的数组 |
|
字符串 |
否 |
应用程序版本 |
|
|
否 |
应用发布者的相关详细信息 |
|
字符串 |
否 |
应用相关的关键字列表,以逗号分隔 |
Publisher
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
否 |
特定于交易的发布者 ID |
|
字符串 |
否 |
发布者名称 |
|
字符串数组 |
否 |
描述发布者的 IAB 内容类别的数组 |
|
字符串 |
否 |
发布者的顶级域名 |
Device
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
浏览器用户代理字符串 |
|
字符串 |
是 |
最接近设备的 IPv4 地址 |
|
geo 对象 |
否 |
设备的位置,假定为用户当前所在位置,由 Geo 对象定义(见 Geo 对象) |
|
整数 |
否 |
浏览器通过标头信息设置的标准 |
|
整数 |
否 |
商业认可的 |
|
字符串 |
否 |
最接近设备的 IPv6 地址 |
|
字符串 |
否 |
设备操作系统 |
|
字符串 |
否 |
设备操作系统版本 |
|
整数 |
否 |
屏幕物理高度(以像素为单位) |
|
整数 |
否 |
屏幕物理宽度(以像素为单位) |
|
字符串 |
否 |
浏览器语言,使用 |
|
整数 |
否 |
网络连接类型 |
|
字符串 |
否 |
广告商获准可用的明文 ID |
Geo
对象
属性 |
类型 |
必需 |
说明 |
|
浮点数 |
否 |
纬度,范围为 -90.0 到 +90.0,负数表示南半球 |
|
浮点数 |
否 |
经度,范围为 -180.0 到 +180.0,负数表示西半球 |
|
字符串 |
否 |
国家/地区代码,使用 |
|
字符串 |
否 |
地区代码,使用 |
|
字符串 |
否 |
城市,使用联合国贸易和运输地点代码 |
Imp
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
此展示的唯一标识符,位于竞价请求的上下文中 |
|
字符串 |
是 |
Yandex Ads 广告单元 ID |
|
字符串 |
是 |
广告的类型。值: |
|
banner 对象 |
否 |
一个 Banner 对象 |
|
video 对象 |
否 |
一个 Video 对象 |
|
native 对象 |
否 |
一个 Native 对象 |
|
整数 |
否 |
|
|
整数 |
否 |
表示用户是否因观看广告而获得奖励, |
Banner
对象
属性 |
类型 |
必需 |
说明 |
|
整数 |
否 |
精确宽度,以设备无关像素 (DIPS) 为单位 |
|
整数 |
否 |
精确高度,以设备无关像素 (DIPS) 为单位 |
|
format 对象数组 |
否 |
|
Format
对象
属性 |
类型 |
必需 |
说明 |
|
整数 |
否 |
宽度,以设备无关像素 (DIPS) 为单位 |
|
整数 |
否 |
高度,以设备无关像素 (DIPS) 为单位 |
|
整数 |
否 |
以比例表示尺寸时的相对宽度 |
|
整数 |
否 |
以比例表示尺寸时的相对高度 |
|
整数 |
否 |
以比例表示尺寸时广告的最小显示宽度,以设备无关像素 (DIPS) 为单位 |
Video
对象
属性 |
类型 |
必需 |
说明 |
|
字符串数组 |
否 |
精确宽度,以设备无关像素 (DIPS) 为单位 |
|
整数 |
否 |
视频播放器的宽度,以设备无关像素 (DIPS) 为单位 |
|
整数 |
否 |
视频播放器的高度,以设备无关像素 (DIPS) 为单位 |
Native
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
否 |
符合原生广告规范的请求负载 |
|
整数 |
否 |
请求所遵循的动态原生广告 API 的版本 |
User
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
从 Yandex Mobile Ads SDK 获取的竞价者令牌 |
|
字符串 |
否 |
用户的特定于交易的 ID |
|
字符串 |
否 |
以逗号分隔的关键词、兴趣或意图列表 |
Regs
对象
属性 |
类型 |
必需 |
说明 |
|
整数 |
否 |
表示此请求是否受 |
|
整数 |
否 |
表示此请求是否受 |
|
整数 |
否 |
表示用户是否已同意授权, |
|
字符串 |
否 |
TCF 同意字符串,采用 URL 安全的 base64 字符串。Yandex AC Vendor ID 为 |
建议在竞价请求中使用的标头
我们建议添加带有国家/地区代码值的标头 X-Country-Code
。
竞价请求示例
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-banner-yandex",
"rwdd": 0,
"banner": {
"w": 320,
"h": 50
},
"ext": {
"ad_type": "banner"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 1,
"tagid": "demo-interstitial-yandex",
"rwdd": 0,
"ext": {
"ad_type": "interstitial"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-rewarded-yandex",
"rwdd": 1,
"ext": {
"ad_type": "rewarded"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-native-content-yandex",
"rwdd": 0,
"ext": {
"ad_type": "native"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
{
"id": "00000000000000000000000",
"at": 1,
"tmax": 3000,
"cur": [
"USD"
],
"app": {
"name": "Test app",
"bundle": "test.bundle",
"cat": [
"IAB9-30"
],
"publisher": {
"name": "Demo studio games",
"domain": "test.domain"
}
},
"device": {
"ifa": "52fc72ad-dfa3-4ccb-a614-d60c3a9ec905",
"ip": "000.000.000.000",
"language": "en",
"connectiontype": 6,
"h": 1650,
"w": 720,
"geo": {
"lat": 1.0,
"lon": 1.0,
"city": "Demo city"
},
"osv": "12.0.0",
"os": "android",
"ua": "demo user agent",
},
"imp": [
{
"id": "1",
"instl": 0,
"tagid": "demo-appopenad-yandex",
"rwdd": 0,
"ext": {
"ad_type": "appopenad"
}
}
],
"user": {
"data": [
{
"segment": [
{
"signal": "AAAAAZCN7oq0h2hscaYv9Toq9PQ5a/rlD2WTApTYPSXW0vYlQDYoLruywTekZYfFo6XhydKev15guctnw3WsQhhZ5bX19b59Ro00fVQqJ5k8uKbITKkDS/c/VDymvomUxg/B9yAfVm4BUDkzknfplXBlKXOwPCTbN7PXZ307OFEjvUhexcTkue4bK6sD/mGvOFZv6ZrT12zsJyfDVFdLJxbdPzsQM0Wg1/jgyDF+oO0zRLOCwbX2UNPW7DRJtsKvArZhqrY9tUTaSFaWFpimGKMkC6PXV9Q9BH5uw5qIptis8PCwrT5T/z9cKdQ+bb0DiQklyn9UZuldGGyJBYdzbEyaQ3hKDyjQqZMAM4EX19hrM/T0/4v8Xt63mgPVLNjQECQPpf9lErm0YQvlMsmF3iy5LbdNO3fUeFj8JK3P0QYpsylMBMm2JKnRW0pJGXuJpz8NjHjVvz/wFcj+KrYcsEYgq+rysEh/e1jTTMLntAnOyaCA/Hr53UKq1nzTgh3ovDksMm6V5RUPJzTrWSey1zPdqujrh8mKJNq1bi0Eq45waVkBJ011JFcQo0Hn9Gei6rOvvr8H98rC4PTufWsgmCxjxNeNTfeQQTMZGvWAmq02gsCSfp8reAzSWdRWEwJFxtgSVa45G01Q/aQuH4FRI5B/FOoIqqIP/J/lTo74PtSpuSU/WU0xXZaxDUdDkc26yEpv0KDU/7uQH4Ffjj8L3T/S93SKAuQVxhHqRGBr7xS2jHIsAXwcllV+L1HiUcgM4nBbXTUg6r0UB6U817hbRd+u5/9S6wXX6SqrUWBG/ACbSKpi5urQz1ZmKAUGzj098rKXonrrRGEMGOFnMA3mSAqKNOUfx+BVs7Je75IitJzhiyETzRjKodFRWWeavF69wxs/8roFqoUySSbipX9maEzKy3Uaevryx4k+QramYCNDNjjzimMyjlWnwI5bdcHuPP1iaM5X/gAfSwEQdWVkcU1VVhNJ6xV35wUmoqOQbVnvHSQIZPhaAT3ooZnK/UrIZ3EW3uVODfl/dnYmE5Pe+KoUg/qxoLpfPhxqiUJpQHkI697FT82JeG85hFmuldqbInKXVvoCWSvXvQIIBGNMtfHZFCtpiCFgGxLhQRVkSKyprYc/uCbmYaH38WruoFVvTx43M2rhMz1TKQODKRfrim6v4IEm1eSe76AC0/4fumZkcc3dVDV6BtItAtS58yeGb8UTRYdUHpTXvCqp5LsHUNow4yOxmzXeTFHHAZ3kv95IqlujanO7d+XnWLTTe8j0wcq+h559tK74UCoGgiWNKH84D7ePUuTzybY0Gr2LZYLbWIZBBIzsQQbZfjG3bTYIS8ePdUVQJGuoTl4R377zm/qBcKhMJlkrp/sCCj40xun5w/YRJ1NPoHMBoM9SCWGgUny51FIJI9TP4tRMBl3LhqwQPqYTDQz1qGF4oN74+EazQIskye33PPCay02uu8uVUg2OJA=="
}
]
}
]
}
}
测试竞价响应
若要获取测试响应,请将 oRTB 请求中的 test
字段的值指定为 1
。
竞价响应结构
Bid Response
对象
属性 |
类型 |
说明 |
|
字符串 |
此响应对应的竞价请求的 ID |
|
字符串 |
竞价货币,使用 |
|
|
包含 1 个 Seatbid 对象 的数组 |
Seatbid
对象
属性 |
类型 |
说明 |
|
|
包含 1 个 Bid 对象 的数组 |
Bid
对象
属性 |
类型 |
说明 |
|
字符串 |
竞价者生成的竞价 ID,用于辅助记录/跟踪 |
|
字符串 |
相关竞价请求中的 |
|
浮点数 |
以 CPM 表示的竞价价格,即使实际交易仅针对单次展示 |
|
字符串 |
所选广告的相关信息。必须在客户端请求期间传输 |
|
字符串 |
竞价获胜时由交易调用的获胜通知 URL(不一定表示广告已被投放、被查看或可计费);可作为投放广告素材的可选方式 |
|
字符串 |
当获胜的出价根据交易所特定的业务政策变为可计费时,由交易调用的计费通知 URL |
|
字符串 |
确认竞价失败后,由交易调用的失败通知 URL |
支持的宏
宏 |
位置 |
说明 |
|
nurl、burl、lurl |
使用与竞价相同的货币和单位的结算价格 |
|
lurl |
失败原因代码 |
|
lurl、nurl |
赢得交易的竞拍的所需的最低竞价,使用与竞价相同的货币和单位 |
竞价响应示例
{
"cur": "USD",
"seatbid": [{
"bid": [{
"price": 8.2869000000,
"id": "7149643471343346645",
"ext": {
"signaldata": "{\"cache_id\":\"openbidding_7149643471343346645\"}"
},
"impid": "1",
"lurl": "https://yandex.ru/an/ssp_notifications/1Mldfsfadffasdfasdv618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=2&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-auction-loss=${AUCTION_LOSS}&ssp-auction-min-bid-to-win=${AUCTION_MIN_TO_WIN}&ssp-cur-price=${AUCTION_PRICE}",
"nurl": "https://yandex.ru/an/ssp_notifications/1fsdafasdDEYKsGv618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=1&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-cur-price=${AUCTION_PRICE}&ssp-auction-min-bid-to-win=${AUCTION_MIN_TO_WIN}",
"burl": "https://yandex.ru/an/ssp_notifications/1Ml0nI5N0QS10000000dsfasdfasd618PGIAPrvDZl02YPUA0NcrLu74LA2u0yDCnWP52P1EXeMC2mu8WLah6GChEC6ilOoz7TKCHy7ygumWW-uoCiWmCFnbdCN4m32N2IIobEaNa5pBP0GappBz1uAdJ8dVLh2-OXBWQoYfkfhCm72mSCPfyKki37-PM86AMfcPWMGlc9pA339YBdC4o5fc9WQ51WO11eQhOD6xOF8diuCJFzWnArWQ3YTiOFaF0umxaDW7aDWtMS3g6JxOFsJHZEa_z5NZWVrR5f0VVh7m1kdwwfeQ6vXRcEWQ6JMnIkOa9kcbbURbLIOM51H3MCdvEVb5nITP-LlOmEPyPGKPku1jzwQ7RxfUVFgpdd4b6ypSHsoyKQvcLcMEnNaMOQvXvY_PO7R_XBC0WRgD-m00?ssp-notification-type=3&ssp-request-id=acbce306085481e0a42156b00d8a19523c2813a9&ssp-cur-price=${AUCTION_PRICE}"
}]
}],
"id": "acbce306085481e0a42156b00d8a19523c2813a9"
}
Android 客户端侧设置
设置隐私设置
MobileAds.setUserConsent(hasUserConsent)
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser)
MobileAds.setLocationConsent(hasLocationConsent)
MobileAds.setUserConsent(hasUserConsent);
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser);
MobileAds.setLocationConsent(hasLocationConsent);
在 Android 客户端中生成竞价者令牌
在客户端侧,我们需要收集竞拍请求所需的参数,并将其发送到竞拍服务器。以下是用于获取竞价者令牌的代码示例。
-
通过传递所请求广告的格式来创建一个
BidderTokenRequestConfiguration
。KotlinJavaval requestBuilder = BidderTokenRequestConfiguration.Builder(adType)
final BidderTokenRequestConfiguration.Builder requestBuilder = new BidderTokenRequestConfiguration.Builder(adType);
-
如果请求的是横幅广告,设置横幅的尺寸。
KotlinJavaval bannerAdSize = BannerAdSize.fixedSize(context, width, height) requestBuilder.setBannerAdSize(size)
final BannerAdSize bannerAdSize = new BannerAdSize.fixedSize(context, width, height); requestBuilder.setBannerAdSize(bannerAdSize);
-
添加适配器的相关信息。
KotlinJavaval requestParameters = mutableMapOf<String, String>() requestParameters["adapter_version"] = "ADAPTER_VERSION" requestParameters["adapter_network_name"] = "MEDIATION_NETWORK_NAME" requestParameters["adapter_network_sdk_version"] = "MEDIATION_SDK_VERSION" requestBuilder.setParameters(requestParameters)
final Map<String, String> requestParameters = new HashMap<>(); requestParameters.put("adapter_version", "ADAPTER_VERSION"); requestParameters.put("adapter_network_name", "MEDIATION_NETWORK_NAME"); requestParameters.put("adapter_network_sdk_version", "MEDIATION_SDK_VERSION"); requestBuilder.setParameters(requestParameters);
-
加载竞价者令牌。
KotlinJavaval requestConfiguration = requestBuilder.build() BidderTokenLoader.loadBidderToken(context, requestConfiguration, object: BidderTokenLoadListener() { override fun onBidderTokenLoaded(bidderToken: String) { // 获取生成的令牌 } override fun onBidderTokenFailedToLoad(failureReason: String) { // 获取失败原因 } })
final BidderTokenRequestConfiguration requestConfiguration = requestBuilder.build(); BidderTokenLoader.loadBidderToken(context, requestConfiguration, new BidderTokenLoadListener() { @Override public void onBidderTokenLoaded(@NonNull final String bidderToken) { // 获取生成的令牌 } @Override public void onBidderTokenFailedToLoad(@NonNull final String failureReason) { // 获取失败原因 } });
在 Android 客户端上从竞价响应加载广告
Yandex 竞价在竞拍中获胜后,下一步是使用竞价数据加载广告。
开屏广告
val adUnitId = "Yandex ad_unit_id" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
val bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse 中的 ext.signaldata 字段
val appOpenAdLoader = AppOpenAdLoader(activity)
appOpenAdLoader.setAdLoadListener(object: AppOpenAdLoadListener {
override fun onAdLoaded(appOpenAd: AppOpenAd) {
// 显示广告
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 日志错误
}
})
val adRequest = AdRequest.Builder().setBiddingData(bidResponse).build()
appOpenAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
final String bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse 中的 ext.signaldata 字段
final AppOpenAdLoader appOpenAdLoader = new AppOpenAdLoader(activity);
appOpenAdLoader.setAdLoadListener(new AppOpenAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final AppOpenAd appOpenAd) {
// 显示广告
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// 日志错误
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
appOpenAdLoader.loadAd(adRequest);
点击此处可查看开屏广告集成的详细指南。
插屏广告
val adUnitId = "Yandex ad_unit_id" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
val bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse 中的 ext.signaldata 字段
val interstitialAdLoader = InterstitialAdLoader(activity)
interstitialAdLoader.setAdLoadListener(object: InterstitialAdLoadListener {
override fun onAdLoaded(interstitialAd: InterstitialAd) {
// 显示广告
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 日志错误
}
})
val adRequest = AdRequest.Builder().setBiddingData(bidResponse).build()
interstitialAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
final String bidResponse = "{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse 中的 ext.signaldata 字段
final InterstitialAdLoader interstitialAdLoader = new InterstitialAdLoader(activity);
interstitialAdLoader.setAdLoadListener(new InterstitialAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final InterstitialAd interstitialAd) {
// 显示广告
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// 日志错误
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
interstitialAdLoader.loadAd(adRequest);
点击此处可查看插屏广告的详细指南。
激励广告
val adUnitId = "Yandex ad_unit_id" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
val bidResponse = "{\"cache_id\":\"openbidding_714953452343346645\"}" // bidResponse 中的 ext.signaldata 字段
val rewardedAdLoader = new RewardedAdLoader(activity)
rewardedAdLoader.setAdLoadListener(object: RewardedAdLoadListener {
override fun onAdLoaded(rewardedAd: RewardedAd) {
// 显示广告
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 日志错误
}
})
val adRequest = AdRequest.Builder()
.setBiddingData(bidResponse).build()
rewardedAdLoader.loadAd(adRequest)
final String adUnitId = "Yandex ad_unit_id"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
final String bidResponse = "{\"cache_id\":\"openbidding_714953452343346645\"}"; // bidResponse 中的 ext.signaldata 字段
final RewardedAdLoader rewardedAdLoader = new RewardedAdLoader(activity);
rewardedAdLoader.setAdLoadListener(new RewardedAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final RewardedAd rewardedAd) {
// 显示广告
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// 日志错误
}
});
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
rewardedAdLoader.loadAd(adRequest);
点击此处可查看激励广告集成的详细指南。
横幅广告
val adUnitId = "Yandex adUnitId" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
val bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}" // bidResponse 中的 ext.signaldata 字段
val bannerAdView = BannerAdView(activity)
bannerAdView.setBlockId(adUnitId)
bannerAdView.setAdSize(adSize)
val adRequest = AdRequest.Builder().setBiddingData(bidResponse).build()
bannerAdView.loadAd(adRequest)
final String adUnitId = "Yandex adUnitId"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
final String bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}"; // bidResponse 中的 ext.signaldata 字段
final BannerAdView bannerAdView = new BannerAdView(activity);
bannerAdView.setBlockId(adUnitId);
bannerAdView.setAdSize(adSize);
final AdRequest adRequest = new AdRequest.Builder().setBiddingData(bidResponse).build();
bannerAdView.loadAd(adRequest);
原生广告
val adUnitId = "Yandex adUnitId" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
val bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}" // bidResponse 中的 ext.signaldata 字段
val nativeAdLoader = new NativeAdLoader(this)
nativeAdLoader.setNativeAdLoadListener(object: NativeAdLoadListener {
override fun onAdLoaded(nativAd: NativeAd) {
// 绑定 nativeAd
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 日志错误
}
})
val nativeAdRequestConfiguration = NativeAdRequestConfiguration.Builder(adUnitId)
.setBiddingData(bidResponse).build()
nativeAdLoader.loadAd(nativeAdRequestConfiguration)
final String adUnitId = "Yandex adUnitId"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
final String bidResponse = "{\"cache_id\":\"openbidding_71494532453346645\"}"; // bidResponse 中的 ext.signaldata 字段
final NativeAdLoader nativeAdLoader = new NativeAdLoader(this);
nativeAdLoader.setNativeAdLoadListener(new NativeAdLoadListener() {
@Override
public void onAdLoaded(@NonNull final NativeAd nativeAd) {
// 绑定 nativeAd
}
@Override
public void onAdFailedToLoad(@NonNull final AdRequestError error) {
// 日志错误
}
});
final NativeAdRequestConfiguration nativeAdRequestConfiguration = new NativeAdRequestConfiguration.Builder(adUnitId)
.setBiddingData(bidResponse).build();
nativeAdLoader.loadAd(nativeAdRequestConfiguration);
原生格式包含必需和可选的资产。提供自定义素资产以进行绑定的方式在很大程度上取决于你的广告 SDK 的 API。模板展示了在广告请求期间,如何通过在发布者端提供一个从字符串标识符到资产视图标识符的映射来将这些资产传递给适配器。
点击此处可查看详细的原生广告文档。
示例
点击此处可查看适配器示例。