公开竞价网络集成

ORTB 请求/响应

Yandex 服务器间集成端点将由经理提供。

Yandex 支持 OpenRTB API 规范 2.5

竞价请求结构

Bid Request对象

属性

类型

必需

说明

id

字符串

竞价请求的唯一 ID,由交易提供

imp

Imp 对象数组

表示提供的展示次数的 Imp 对象的数组(见 Imp 对象)。仅考虑第一个 imp 对象

app

App 对象

通过 App 对象传递的、发布者的应用的相关详细信息(见 App 对象

device

Device 对象

通过 Device 对象传递的、作为展示的投放位置的用户设备的相关详细信息(见 Device 对象

user

User 对象

通过 User 对象传递的、设备的人类用户的相关详细信息;广告受众(见User 对象

tmax

整数

交易允许接收竞价的最长时间(毫秒),包含网络延迟以避免超时

cur

字符串数组

由此竞价请求的竞价所允许的货币构成的数组,用 ISO-4217 字母代码表示;默认为 ["USD"]

test

整数

测试模式标识,测试模式下竞拍不计费,0 = 正式模式,1 = 测试模式;默认为 0

at

整数

竞拍类型,1 = 一价竞价,2 = 二价加价;默认为 1

bcat

字符串数组

使用 IAB 内容类别的被封锁广告主类别

regs

Regs 对象

用于指定此次请求适用的行业、法律或政府监管要求的 Regs 对象(见 Regs 对象

App对象

属性

类型

必需

说明

bundle

字符串

平台特定的每个应用程序的唯一标识符,并且与交易无关

id

字符串

特定于交易的应用 ID

name

字符串

应用版本

cat

字符串数组

应用的 IAB 内容类别的数组

ver

字符串

应用程序版本

publisher

Publisher 对象

应用发布者的相关详细信息

keywords

字符串

应用相关的关键字列表,以逗号分隔

Publisher对象

属性

类型

必需

说明

id

字符串

特定于交易的发布者 ID

name

字符串

发布者名称

cat

字符串数组

描述发布者的 IAB 内容类别的数组

domain

字符串

发布者的顶级域名

Device对象

属性

类型

必需

说明

ua

字符串

浏览器用户代理字符串

ip

字符串

最接近设备的 IPv4 地址

geo

geo 对象

设备的位置,假定为用户当前所在位置,由 Geo 对象定义(见 Geo 对象

dnt

整数

浏览器通过标头信息设置的标准 禁止跟踪 标记,0 = 不限制跟踪,1 = 禁止跟踪

lmt

整数

商业认可的 限制广告跟踪 信号,0 = 不限制跟踪,1 = 必须根据商业准则限制跟踪

ipv6

字符串

最接近设备的 IPv6 地址

os

字符串

设备操作系统

osv

字符串

设备操作系统版本

h

整数

屏幕物理高度(以像素为单位)

w

整数

屏幕物理宽度(以像素为单位)

language

字符串

浏览器语言,使用 ISO-639-1-alpha-2 标准格式

connectiontype

整数

网络连接类型

ifa

字符串

广告商获准可用的明文 ID

Geo对象

属性

类型

必需

说明

lat

浮点数

纬度,范围为 -90.0 到 +90.0,负数表示南半球

lon

浮点数

经度,范围为 -180.0 到 +180.0,负数表示西半球

country

字符串

国家/地区代码,使用 ISO-3166-1-alpha-3 标准格式

region

字符串

地区代码,使用 ISO-3166-2 标准格式;如果是美国则为 2 个字母的州代码

city

字符串

城市,使用联合国贸易和运输地点代码

Imp对象

属性

类型

必需

说明

id

字符串

此展示的唯一标识符,位于竞价请求的上下文中

tagid

字符串

Yandex Ads 广告单元 ID

ext.ad_type

字符串

广告的类型。值:bannerinterstitialrewardedappopenadnative

banner

banner 对象

一个 Banner 对象

video

video 对象

一个 Video 对象

native

native 对象

一个 Native 对象

instl

整数

1 = 广告为插屏或全屏,0 = 非插屏

rwdd

整数

表示用户是否因观看广告而获得奖励,0 = 否, 1 = 是

属性

类型

必需

说明

w

整数

精确宽度,以设备无关像素 (DIPS) 为单位

h

整数

精确高度,以设备无关像素 (DIPS) 为单位

format

format 对象数组

Format 对象的数组,表示允许的横幅尺寸(见 Format 对象

Format对象

属性

类型

必需

说明

w

整数

宽度,以设备无关像素 (DIPS) 为单位

h

整数

高度,以设备无关像素 (DIPS) 为单位

wratio

整数

以比例表示尺寸时的相对宽度

hratio

整数

以比例表示尺寸时的相对高度

wmin

整数

以比例表示尺寸时广告的最小显示宽度,以设备无关像素 (DIPS) 为单位

Video对象

属性

类型

必需

说明

mimes

字符串数组

精确宽度,以设备无关像素 (DIPS) 为单位

w

整数

视频播放器的宽度,以设备无关像素 (DIPS) 为单位

h

整数

视频播放器的高度,以设备无关像素 (DIPS) 为单位

Native对象

属性

类型

必需

说明

request

字符串

符合原生广告规范的请求负载

ver

整数

请求所遵循的动态原生广告 API 的版本

User对象

属性

类型

必需

说明

data.segment.signal

字符串

从 Yandex Mobile Ads SDK 获取的竞价者令牌

id

字符串

用户的特定于交易的 ID

keywords

字符串

以逗号分隔的关键词、兴趣或意图列表

Regs对象

属性

类型

必需

说明

coppa

整数

表示此请求是否受 COPPA 法规约束的标记,0 = 否,1 = 是

gdpr

整数

表示此请求是否受 GDPR 法规约束的标记,0 = 否,1 = 是

ext.consent

整数

表示用户是否已同意授权,0 = 否,1 = 是

ext.tcf_consent_string

字符串

TCF 同意字符串,采用 URL 安全的 base64 字符串。Yandex AC Vendor ID 为 1033

我们建议添加带有国家/地区代码值的标头 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

字符串

此响应对应的竞价请求的 ID

cur

字符串

竞价货币,使用 ISO-4217 字母代码

seatbid

Seatbid 对象数组

包含 1 个 Seatbid 对象 的数组

Seatbid对象

属性

类型

说明

bid

Bid 对象数组

包含 1 个 Bid 对象 的数组

Bid对象

属性

类型

说明

id

字符串

竞价者生成的竞价 ID,用于辅助记录/跟踪

impid

字符串

相关竞价请求中的 Imp 对象的 ID

price

浮点数

以 CPM 表示的竞价价格,即使实际交易仅针对单次展示

ext.signaldata

字符串

所选广告的相关信息。必须在客户端请求期间传输

nurl

字符串

竞价获胜时由交易调用的获胜通知 URL(不一定表示广告已被投放、被查看或可计费);可作为投放广告素材的可选方式

burl

字符串

当获胜的出价根据交易所特定的业务政策变为可计费时,由交易调用的计费通知 URL

lurl

字符串

确认竞价失败后,由交易调用的失败通知 URL

支持的宏

位置

说明

AUCTION_PRICE

nurl、burl、lurl

使用与竞价相同的货币和单位的结算价格

AUCTION_LOSS

lurl

失败原因代码

AUCTION_MIN_TO_WIN

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 客户端侧设置

Android SDK 集成指南

设置隐私设置

MobileAds.setUserConsent(hasUserConsent)
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser)
MobileAds.setLocationConsent(hasLocationConsent)
MobileAds.setUserConsent(hasUserConsent);
MobileAds.setAgeRestrictedUser(isAgeRestrictedUser);
MobileAds.setLocationConsent(hasLocationConsent);

在 Android 客户端中生成竞价者令牌

在客户端侧,我们需要收集竞拍请求所需的参数,并将其发送到竞拍服务器。以下是用于获取竞价者令牌的代码示例。

  1. 通过传递所请求广告的格式来创建一个 BidderTokenRequestConfiguration

    val requestBuilder = BidderTokenRequestConfiguration.Builder(adType)
    
    final BidderTokenRequestConfiguration.Builder requestBuilder = new BidderTokenRequestConfiguration.Builder(adType);
    
  2. 如果请求的是横幅广告,设置横幅的尺寸。

    val bannerAdSize = BannerAdSize.fixedSize(context, width, height)
    requestBuilder.setBannerAdSize(size)
    
    final BannerAdSize bannerAdSize = new BannerAdSize.fixedSize(context, width, height);
    requestBuilder.setBannerAdSize(bannerAdSize);
    
  3. 添加适配器的相关信息。

    val 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);
    
  4. 加载竞价者令牌。

    val 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。模板展示了在广告请求期间,如何通过在发布者端提供一个从字符串标识符到资产视图标识符的映射来将这些资产传递给适配器。

点击此处可查看详细的原生广告文档。

示例

点击此处可查看适配器示例。

上一篇
下一篇