公开竞价网络集成
ORTB 请求/响应
Yandex 服务器间集成端点将由经理提供。
Yandex 支持 OpenRTB API 规范 2.5。
竞价请求结构
Bid Request
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
竞价请求的唯一 ID,由交易提供 |
|
|
是 |
表示提供的展示次数的 |
|
|
是 |
通过 |
device |
|
是 |
通过 |
|
|
是 |
通过 |
|
整数 |
是 |
交易允许接收竞价的最长时间(毫秒),包含网络延迟以避免超时 |
|
字符串数组 |
是 |
由此竞价请求的竞价所允许的货币构成的数组,用 |
|
整数 |
否 |
测试模式标识,测试模式下竞拍不计费, |
|
整数 |
否 |
竞拍类型, |
|
字符串数组 |
否 |
使用 IAB 内容类别的被封锁广告主类别 |
|
|
否 |
用于指定此次请求适用的行业、法律或政府监管要求的 |
App
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
平台特定的每个应用程序的唯一标识符,并且与交易无关 |
|
字符串 |
否 |
特定于交易的应用 ID |
|
字符串 |
否 |
应用版本 |
|
字符串数组 |
否 |
应用的 IAB 内容类别的数组 |
|
字符串 |
否 |
应用程序版本 |
|
publisher 对象 |
否 |
应用发布者的相关详细信息 |
|
字符串 |
否 |
应用相关的关键字列表,以逗号分隔 |
Publisher
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
否 |
特定于交易的发布者 ID |
|
字符串 |
否 |
发布者名称 |
|
字符串数组 |
否 |
描述发布者的 IAB 内容类别的数组 |
|
字符串 |
否 |
发布者的顶级域名 |
Device
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
浏览器用户代理字符串 |
|
字符串 |
是 |
最接近设备的 IPv4 地址 |
|
|
否 |
设备的位置,假定为用户当前所在位置,由 Geo 对象定义(见 Geo 对象) |
|
整数 |
否 |
浏览器通过标头信息设置的标准 |
|
整数 |
否 |
商业认可的 |
|
字符串 |
否 |
最接近设备的 IPv6 地址 |
|
字符串 |
否 |
设备操作系统 |
|
字符串 |
否 |
设备操作系统版本 |
|
整数 |
否 |
屏幕物理高度(以像素为单位) |
|
整数 |
否 |
屏幕物理宽度(以像素为单位) |
|
字符串 |
否 |
浏览器语言,使用 |
|
整数 |
否 |
网络连接类型 |
|
字符串 |
否 |
广告商获准可用的明文 ID |
Geo
对象
属性 |
类型 |
必需 |
说明 |
|
浮点数 |
否 |
纬度,范围为 -90.0 到 +90.0,负数表示南半球 |
|
浮点数 |
否 |
经度,范围为 -180.0 到 +180.0,负数表示西半球 |
|
字符串 |
否 |
国家/地区代码,使用 |
|
字符串 |
否 |
地区代码,使用 |
|
字符串 |
否 |
城市,使用联合国贸易和运输地点代码 |
Imp
对象
属性 |
类型 |
必需 |
说明 |
|
字符串 |
是 |
此展示的唯一标识符,位于竞价请求的上下文中 |
|
字符串 |
是 |
Yandex Ads 广告单元 ID |
|
字符串 |
是 |
广告的类型。值: |
|
|
否 |
一个 Banner 对象 |
|
|
否 |
一个 Video 对象 |
|
|
否 |
一个 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"
}
iOS 客户端设置
见 iOS SDK 集成指南。
设置隐私设置
MobileAds.setUserConsent(userConsent)
MobileAds.setLocationTrackingEnabled(locationTrackingEnabled)
[YMAMobileAds setUserConsent: userConsent];
[YMAMobileAds setLocationTrackingEnabled: locationTrackingEnabled];
在 iOS 客户端中生成竞价者令牌
在客户端侧,我们需要收集竞拍请求所需的参数,并将其发送到竞拍服务器。以下是用于获取竞价者令牌的代码示例。
-
创建一个
BidderTokenLoader
对象并将其设为类字段。SwiftObjective-cprivate let bidderTokenLoader = BidderTokenLoader(mediationNetworkName: "MEDIATION_NETWORK_NAME")
@property (nonatomic, strong) YMABidderTokenLoader *bidderTokenLoader; self.bidderTokenLoader = [[YMABidderTokenLoader alloc] initWithMediationNetworkName: @"MEDIATION_NETWORK_NAME"];
-
通过传递所请求广告的格式来创建一个
BidderTokenRequestConfiguration
。SwiftObjective-clet requestConfiguration = BidderTokenRequestConfiguration(adType: adType)
YMABidderTokenRequestConfiguration *requestConfiguration = [[YMABidderTokenRequestConfiguration alloc] initWithAdType:adType];
-
如果请求的是横幅广告,设置横幅的尺寸。
SwiftObjective-crequestConfiguration.bannerAdSize = BannerAdSize.fixedSize(withWidth: width, height: height)
requestConfiguration.bannerAdSize = [YMABannerAdSize fixedSizeWithWidth:width height:height];
-
添加适配器的相关信息。
SwiftObjective-crequestConfiguration.parameters = [ "adapter_version": "ADAPTER_VERSION", "adapter_network_sdk_version": "MEDIATION_SDK_VERSION" ]
requestConfiguration.parameters = @{ @"adapter_version": @"ADAPTER_VERSION", @"adapter_network_sdk_version": @"MEDIATION_SDK_VERSION" };
-
加载竞价者令牌。
SwiftObjective-cbidderTokenLoader.loadBidderToken(requestConfiguration: requestConfiguration) { bidderToken in // 获取生成的令牌 }
[self.bidderTokenLoader loadBidderTokenWithRequestConfiguration:requestConfiguration completionHandler:^(NSString *bidderToken) { // 获取生成的令牌 }];
在 iOS 客户端上从竞价响应加载广告
Yandex 竞价在竞拍中获胜后,下一步是使用竞价数据加载广告。
开屏广告
// 创建一个加载器 adLoader = AppOpenAdLoader()
adLoader.delegate = self;
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse 中的 ext.signaldata 字段
let adUnitId = "Yandex adUnitId" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建请求配置
let requestConfiguration = MutableAdRequestConfiguration(adUnitID: adUnitId)
requestConfiguration.biddingData = biddingData
// 正在将请求配置传递给加载程序
adLoader.loadAd(with: requestConfiguration)
// 创建一个加载器 self.adLoader = [[YMAAppOpenAdLoader alloc] init];
self.adLoader.delegate = self;
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse 中的 ext.signaldata 字段
NSString *adUnitId = @"Yandex adUnitId"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建请求配置
YMAMutableAdRequestConfiguration *requestConfiguration = [[YMAMutableAdRequestConfiguration alloc] initWithAdUnitID:adUnitId];
requestConfiguration.biddingData = biddingData;
// 正在将请求配置传递给加载程序
[self.adLoader loadAdWith:requestConfiguration];
点击此处可查看开屏广告集成的详细指南。
插屏广告
// 创建一个加载器 adLoader = InterstitialAdLoader()
adLoader.delegate = self;
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse 中的 ext.signaldata 字段
let adUnitId = "Yandex adUnitId" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建请求配置
let requestConfiguration = MutableAdRequestConfiguration(adUnitID: adUnitId)
requestConfiguration.biddingData = biddingData
// 正在将请求配置传递给加载程序
adLoader.loadAd(with: requestConfiguration)
// 创建一个加载器 self.adLoader = [[YMAInterstitialAdLoader alloc] init];
self.adLoader.delegate = self;
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse 中的 ext.signaldata 字段
NSString *adUnitId = @"Yandex adUnitId"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建请求配置
YMAMutableAdRequestConfiguration *requestConfiguration = [[YMAMutableAdRequestConfiguration alloc] initWithAdUnitID:adUnitId];
requestConfiguration.biddingData = biddingData;
// 正在将请求配置传递给加载程序
[self.adLoader loadAdWith:requestConfiguration];
点击此处可查看插屏广告的详细指南。
激励广告
// 创建一个加载器 adLoader = RewardedAdLoader()
adLoader.delegate = self;
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse 中的 ext.signaldata 字段
let adUnitId = "Yandex adUnitId" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建请求配置
let requestConfiguration = MutableAdRequestConfiguration(adUnitID: adUnitId)
requestConfiguration.biddingData = biddingData
// 正在将请求配置传递给加载程序
adLoader.loadAd(with: requestConfiguration)
// 创建一个加载器 self.adLoader = [[YMARewardedAdLoader alloc] init];
self.adLoader.delegate = self;
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse 中的 ext.signaldata 字段
NSString *adUnitId = @"Yandex adUnitId"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建请求配置
YMAMutableAdRequestConfiguration *requestConfiguration = [[YMAMutableAdRequestConfiguration alloc] initWithAdUnitID:adUnitId];
requestConfiguration.biddingData = biddingData;
// 正在将请求配置传递给加载程序
[self.adLoader loadAdWith:requestConfiguration];
点击此处可查看激励广告集成的详细指南。
横幅广告
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse 中的 ext.signaldata 字段
let adUnitId = "Yandex adUnitId" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建一个 adView adView = AdView(adUnitID: adUnitId, adSize: adSize)
adView.delegate = self
// 创建请求配置
let adRequest = MutableAdRequest()
adRequest.biddingData = biddingData
// 正在将请求配置传递给加载程序
adView.loadAd(with: adRequest)
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse 中的 ext.signaldata 字段
NSString *adUnitId = @"Yandex adUnitId"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建一个 adView self.adView = [[YMAAdView alloc] initWithAdUnitID:adUnitId adSize:adSize];
self.adView.delegate = self
// 创建请求配置
YMAMutableAdRequest *adRequest = [[YMAMutableAdRequest alloc] init];
adRequest.biddingData = biddingData;
// 正在将请求配置传递给加载程序
[self.adView loadAdWithRequest:adRequest];
原生广告
// 创建一个加载器 adLoader = NativeAdLoader()
adLoader.delegate = self;
let biddingData = "{\"cache_id\":\"openbidding_714964347453245346645\"}" // bidResponse 中的 ext.signaldata 字段
let adUnitId = "Yandex adUnitId" // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建请求配置
let requestConfiguration = MutableNativeAdRequestConfiguration(adUnitID: adUnitId)
requestConfiguration.biddingData = biddingData
// 正在将请求配置传递给加载程序
adLoader.loadAd(with: requestConfiguration)
// 创建一个加载器 self.adLoader = [[YMANativeAdLoader alloc] init];
self.adLoader.delegate = self;
NSString *biddingData = @"{\"cache_id\":\"openbidding_714964347453245346645\"}"; // bidResponse 中的 ext.signaldata 字段
NSString *adUnitId = @"Yandex adUnitId"; // 发布者在聚合控制台中设置的 Yandex 广告单元 ID
// 创建请求配置
YMAMutableNativeAdRequestConfiguration *requestConfiguration =
[[YMAMutableNativeAdRequestConfiguration alloc] initWithAdUnitID:adUnitId];
requestConfiguration.biddingData = biddingData;
// 正在将请求配置传递给加载程序
[self.adLoader loadAdWithRequestConfiguration:requestConfiguration];
原生格式包含必需和可选的资产。提供自定义素资产以进行绑定的方式在很大程度上取决于你的广告 SDK 的 API。
点击此处可查看详细的原生广告文档。
示例
点击此处可查看适配器示例。