通知:本页面已停止维护即将下线,完整信息请访问接入中心-DSP-B接入
腾讯优量汇 DSP-B 接口合作接入文档
文档版本 | 修订日期 | 修订说明 |
---|---|---|
V3.20 | 2024-10-23 | 请求协议新增HTTPS超时时间字段tmax,废弃support_https字段 |
v3.19 | 2024-03-28 | 支持微信原生页广告 |
v3.18 | 2023-04-11 | 1. 请求协议新增搜索词字段 query,支持搜索广告 2. 点击上报新增重力加速度、屏幕角度变化宏参数及上报要求 3. 联调测试更新联调工具平台使用方法 4. 更新常见请求错误码列表 |
v3.17 | 2022-09-28 | 支持快应用广告 |
v3.16 | 2022-09-13 | 1. 请求协议新增请求请求校验字段相关参数:time_stamp、sign,新增请求校验字段说明和生成规则 2. 优化请求协议、请求响应字段说明 3. 优化点击上报说明,补充了不同交互方式的点击坐标上报要求 4. 更新竞败上报宏枚举值及说明 |
v3.15 | 2022-08-12 | 1. 优化请求协议字段说明 2. 请求响应新增安卓应用信息相关字段 3. 更新iOS端调起app store苹果应用商店跳转处理逻辑 |
v3.14 | 2022-07-20 | 1. 优化请求协议、请求响应字段说明 2. 调整转化上报完成字段,支持不作宏替换直接上报,更新事件上报时机及应用策略 3. 更新应用直达广告、小程序/小游戏广告跳转处理逻辑 4. 更新竞胜上报/竞败上报 AUCTION_PRICE 加密编码要求 |
v3.13 | 2022-06-24 | 完善点击上报的具体逻辑说明,新增点击坐标获取代码示例 |
v3.12 | 2022-06-06 | 支持Universal Link |
v3.11 | 2022-05-24 | 支持微信小程序/小游戏广告 |
v3.10 | 2022-04-18 | 1.更新请求参数、响应字段说明 2.支持厂商应用商店下载类广告 3.新增广告点击交互处理流程 |
v3.9 | 2021-09-08 | 协议增加竞胜竞败上报支持 |
关于文档
对有APP流量变现需求但由于各种原因无法嵌入腾讯广告联盟SDK的开发者,腾讯广告联盟提供基于广告播放API的接口合作方式(以下简称“DSP-B”)。开发者应保证获得用户授权同意,由开发者收集并向腾讯提供如下字段。本文档详细介绍了广告播放API的运营对接流程和接口协议等内容。
背景知识
名词解释
开发者: 指腾讯广告联盟官网(以下简称联盟平台)的注册会员。用QQ号注册成功后系统会自动生成一个新的固定为12位数字的账号ID,这个ID是腾讯广告联盟识别开发者的唯一ID。
媒体: 指在联盟平台创建的媒体,这里媒体等价于应用的概念。创建媒体时获得的ID将成为应用ID,这个ID是腾讯广告联盟识别您应用的唯一ID。
广告位: 指在联盟平台为媒体创建的某种类型(开屏、原生、激励视频,从3.3版本开始,DSP-B将不支持banner和插屏样式,需要继续使用该样式的开发者建议使用原生广告进行渲染或转接SDK)的广告位置。创建广告位时获得的ID将成为广告位ID,这个ID是腾讯广告联盟识别您广告位置的唯一ID。
技术规范
有关标准HTTP协议,可参考 RFC2616 或 维基百科-HTTP 。有关URL编码,可参考RFC3986或维基百科-Percent-encoding。有关JSON数据格式,可参考 JSON.ORG 或 维基百科–JSON 。
对接流程
流程介绍

前期准备: DSP-B接口合作以腾讯广告联盟运营人员(以下简称运营人员)邀请的方式发出,开发者在接受邀请后,需在运营人员指导下填写《DSP-B接入申请表》。
- 1.注册开户: 审核通过后,开发者需先在联盟平台注册成为会员,在审核过程中,即可联系运营人员获取《腾讯广告联盟广告播放API说明文档》。
- 2.开发联调: 开发者根据文档要求进行功能开发,开发完成后,先使用测试广告位进行联调。在此过程中如果有疑问,请联系运营人员。
- 3.审核验证: 联调成功后,开发者将预发布的APK包和开发者ID提供给运营人员进行验证广告样式,验证通过后,开通DSP-B接口权限。
- 4.灰度放量: 获得权限后,在联盟平台创建DSP-B接入的媒体和广告位,将广告请求中的测试广告位ID替换成新创建的,开始进行灰度放量。在灰度过程中,联盟运营人员会进行效果验证,验证通过,开始正式放量。验证未通过,需开发者根据优化建议做调整修改,完成后进行二次验证,仍未通过,将收回DSP-B权限推荐使用SDK合作。
- 5.正式上线: 灰度验证后,开始正式上线放量,开发者可以登录联盟平台查看流量收益情况。
注意事项
- 1.新流量请求限制: 为更好地了解您的流量、匹配更合适的广告,在新创建广告位流量上线初期,腾讯广告联盟会进行广告日请求量限制。当达到日请求量上限时,将无广告返回,且会有返回码提示,具体处理方式请参考附录广告请求返回码列表。
广告播放API
腾讯广告联盟后台服务(以下简称联盟后台)通过广告播放API对外提供广告请求和数据上报服务。该API包含如下四个接口,调用流程见下文广告播放时序图。
1.广告请求: 腾讯广告联盟支持开发者通过服务端向联盟后台请求广告。
2.曝光上报: APP将广告展示给用户后,APP必须实时、直接向联盟后台上报曝光,不允许通过开发者后台服务上报。
3.点击上报: 用户点击广告后,APP必须实时、直接向联盟后台上报点击,不允许通过开发者后台服务上报。
4.转化上报: 目前需针对app下载类、应用直达等广告类型的转化行为进行上报。转化行为发生后,APP必须实时、直接向联盟后台上报,不允许通过后台服务上报。
通信方式
联盟后台与外部调用方的基础通信协议采用HTTP协议和HTTPS协议。
超时时间
不考虑网络链路(调用方与联盟后台服务器之间的传输链路)时延,对99%的请求,联盟后台能在200ms内响应。广告请求超时时间建议设置1秒;其他接口建议设置较大的超时时间,比如10秒。
编码方式
若无特殊说明,所有输入参数、返回结果的字节编码均使用UTF-8(无BOM头)。
HTTP请求
HTTP Method
使用GET方法HTTP Header
如果是由后台服务发起广告请求,则需要在HTTP请求头部填充如下字段;其它情况下无特殊请求头部字段要求。
名称 | 必填 | 说明 |
---|---|---|
X-Forwarded-For | 是 | 用户设备的公网出口IPv4/IPv6地址,字符串形式,示例:14.17.22.37 或 2001:db8:85a3:8d3:1319:8a2e:370:7348。当广告请求由server发起时,该字段务必正确填写,否则将严重影响流量变现效果。 |
Referer | 否 | 用户设备HTTP请求头中的Referer字段。 |
- HTTP 请求数据
请求数据放在URL查询字符串中,使用键值对形式(例如url格式为http://domain/path?name1=value1&name2=value2 ,其中“?”之后的部分是查询字符串)。查询字符串中每个参数的值(value1和value2)必须进行URL编码。
HTTP响应
HTTP状态码
不同接口在不同情况下会返回不同的HTTP状态码,在下文详细介绍每个接口时说明。HTTP Header
无响应头部字段要求。HTTP响应数据
响应数据(HTTP Response Body)如果不为空,均使用JSON格式
广告请求接口
开屏广告位必须实时请求广告(实时是指在广告位即将展示给用户或已经展示给用户时),不允许缓存广告;其他广告位可以预请求广告并缓存起来,然后在合适的时机将广告曝光。预请求广告可能产生广告预算不足等一系列问题,从而影响流量变现效果,建议所有类型广告位实时请求广告。
广告请求接口-请求地址
广告请求接口-请求数据

可选参数填写原则:1. 首先保证取值正确;2. 在取值正确的前提下尽量填写。如不能获取,或不能保证取值正确性,则不填写,以免拉低流量质量,影响变现效果。
参数名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
api_version | string | 是 | 协议版本。 目前仅支持3.0及以上版本,建议使用最新版本 |
|
support_https | int32 | 否 | 可能取值: 1 – 支持HTTPS并且需要HTTPS资源 |
已全面支持https,此字段废弃。 |
support_app_store | int32 | 否 | 可能取值: 1 – 请求厂商应用商店下载类广告。 |
是否请求厂商应用商店下载类广告。 当该字段填1时,联盟后台可能返回厂商应用商店下载类广告,回包字段见market_url。 |
pos | string | 是 | 广告位相关信息。 该参数的值是一个经过url编码的json对象,见pos JSON对象。 |
|
media | string | 是 | 媒体相关信息。 该参数的值是一个经过url编码的json对象,见media JSON对象。 |
|
device | string | 是 | 用户设备相关信息。 该参数的值是一个经过url编码的json对象,见device JSON对象。 |
|
network | string | 是 | 用户设备网络相关信息。 该参数的值是一个经过url编码的json对象,见network JSON对象。 |
|
geo | string | 否 | 用户设备实时地理位置相关信息。 该参数的值是一个经过url编码的json对象,见geo JSON对象。 |
|
time_stamp | int64 | 是 | 发起请求时的unix时间戳(精确到毫秒),请使用Asia/Shanghai时区。 | |
sign | string | 是 | 请求校验字段。 sign是合作伙伴重要的身份标识,优量汇会对sign字段进行校验,请妥善保管好优量汇提供的生成sign的关键信息,防止泄露。 一旦发现泄露,请立即联系优量汇运营经理报备处理。 |
|
tmax | int32 | 否 | 必须大于0 | HTTPS请求超时时间。 优量汇支持根据请求的超时时间进行算力动态调节,可降低请求超时率。目前该功能仅对白名单媒体开放,如需使用请联系优量汇运营经理。 |
- pos JSON对象
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
id | int64 | 是 | 广告位ID。 | |
ad_count | int32 | 是 | 请求广告数量不超过10。 | 请求广告数量。 |
last_ad_ids | string | 否 | 逗号分隔的广告id列表。 | 最近曝光过的广告。 联盟后台会过滤掉这些广告,不填写或填写错误可能导致短时间内多次请求返回的广告重复。 |
deep_link_version | int32 | 否 | 可能取值: 1 - 请求应用直达广告。 |
是否请求应用直达广告。 当该字段填1且该媒体已开通应用直达权限时,联盟后台可能返回应用直达广告,回包字段见customized_invoke_url; 其它情况下(该字段未填或填其他值或未开通应用直达权限),联盟后台只返回非应用直达广告。 |
support_quick_app | bool | 否 | 可能取值: true - 请求快应用广告。 false - 不请求快应用广告。 |
是否请求快应用广告。 当该字段填true时,联盟后台可能返回快应用广告,回包字段见quick_app_link。 |
support_wechat_canvas | bool | 否 | 可能取值: true - 请求微信原生页广告。 false - 不请求微信原生页广告。 |
是否请求微信原生页广告。 当该字段填true时,联盟后台可能返回微信原生页广告,回包字段见wechat_canvas。 |
max_duration | int32 | 否 | 视频广告最大播放时长,单位为秒。 | |
min_duration | int32 | 否 | 视频广告最小播放时长,单位为秒。 | |
support_pkg | string | 否 | 格式要求: 中括号内填写多个包名string,包名间用逗号隔开,示例如下 ["com.a","com.b","com.c",...] 长度要求: 包名数量小于等于200个,否则不生效 |
限制允许返回的应用包名集合。 如果该字段不为空,会严格根据包名集合返回广告 注:回传该字段可能会严重影响变现收益,如无特殊需求,不建议回传该字段 |
query | string | 否 | 搜索query词。申请开通搜索广告位请咨询优量汇运营经理。 注:不允许同时回传query和support_pkg。 |
- media JSON对象
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
app_id | string | 是 | 在联盟平台创建媒体时分配的应用ID。 不填写或填写错误将不返回广告。 |
|
app_bundle_id | string | 是 | 可能取值: 1. android设备:使用package name 2. ios设备:使用bundle id |
应用包名。 不填写或填写错误将不返回广告。请求填写包名要与注册媒体时填写保持一致,不一致将无广告返回。 |
- device JSON对象
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
os | string | 是 | 可能取值: 1. ios(小写) 2. android(小写) |
操作系统。 不填将不返回广告,填写错误会影响流量变现效果。 |
os_version | string | 是 | 三段式或两段式版本号。如果获取不到,填写unknown(小写)。 | os版本。 不填将不返回广告,填写错误或填写unknown会影响流量变现效果。 |
model | string | 是 | 1. android设备:可调用系统接口android.os.Build.MODEL直接获得。 2. ios设备:系统接口返回值。 3. 如果获取不到,填写unknown(小写)。 |
设备型号。 不填将不返回广告,填写错误或填写unknown会影响流量变现效果。 注意:部分ios早期版本设备文档要求对系统接口返回原始值做转换,映射表见附录ios设备型号取值列表。 |
manufacturer | string | 是 | 1. android设备:可调用系统接口android.os.Build.MANUFACTURER直接获得。如果获取不到,填写unknown(小写)。 2. ios设备:无需填写。 |
设备厂商。 安卓设备不填将不返回广告,填写错误或填写unknown会影响流量变现效果。 |
device_type | int32 | 是 | 可能取值: 0 – 未知 1 – 手机(包括iTouch) 2 – 平板 3 – 电视 |
设备类型。 不填将不返回广告,填写错误或填写unknown会影响流量变现效果。 |
screen_width | int32 | 否 | 设备竖屏状态时的屏幕宽,取设备物理像素。 | |
screen_height | int32 | 否 | 设备竖屏状态时的屏幕高,取设备物理像素。 | |
orientation | int32 | 是(激励视频广告位) 否(非激励视频广告位) |
可能取值: 0 - 竖屏 90 - 横屏 |
APP横竖屏,激励视频广告位该参数为必填。 |
imei | string | 是 | 仅限安卓设备 | android设备的imei,保留原始值。 建议在能获取的情况下填写,否则会严重影响流量变现效果。 |
imei_md5 | string | 是 | 32个字符,仅限安卓设备 | android设备的imei(如果出现字母,转为小写),取md5sum摘要,摘要小写,32位。 该参数用来替补imei,两者传其一即可,强烈建议优先填写imei。 |
oaid | string | 是 | 仅限安卓设备 | android设备的OAID,保留原始值。 建议在能获取的情况下填写,否则会严重影响流量变现效果。 部分厂商部分安卓系统版本提供,MSA官方链接为:http://msa-alliance.cn/ |
android_id | string | 是 | 16个字符,仅限安卓设备 | android设备的Android ID,保留原始值。 建议在能获取的情况下填写,否则会严重影响流量变现效果。 |
android_id_md5 | string | 是 | 32个字符,仅限安卓设备 | android设备的Android ID,取md5sum摘要,摘要小写。 该参数用来替补android_id,两者传其一即可,强烈建议优先填写android_id。 |
android_ad_id | string | 否 | 36个字符,仅限安卓设备 | android设备的Android Advertising ID,保留原始值。大陆大部分设备无法获取,在保证取值正确有效的前提下填写,后续腾讯广告联盟会将其用于定向优化。 |
idfa | string | 是 | 36个字符,仅限ios设备 | ios设备的idfa,保留原始值。 建议在能获取的情况下填写,否则会严重影响流量变现效果。 |
idfa_md5 | string | 是 | 32个字符,仅限ios设备 | ios设备的idfa(如果出现字母,转为大写),取md5sum摘要,摘要小写,32位。 该参数用来替补idfa,两者传其一即可,强烈建议优先填写idfa。 |
device_start_sec | string | 是 | 设备启动时间,单位:秒(保留整数) 示例:"1600607106" |
|
device_name_md5 | string | 是 | 设备名称的MD5值,取小写16进制的结果,长度为32个字节 示例:"e910dddb2748c36b47fcde5dd720eec1" |
|
hardware_machine | string | 是 | 设备machine值,取值对齐device JSON对象的model字段 示例:"iPhone10,3" |
|
physical_memory_byte | string | 是 | 物理内存,单位:字节 示例:"4047224832" |
|
harddisk_size_byte | string | 是 | 硬盘大小,单位:字节 示例:"127938088960" |
|
system_update_sec | string | 是 | 系统更新时间,单位:秒(保留6位小数) 示例:"1595214620.383940" |
|
hardware_model | string | 是 | 仅限iOS设备 | 设备model值 示例:"D22AP" |
country | string | 是 | 仅限iOS设备 | 国家 示例:"CN" |
language | string | 是 | 仅限iOS设备 | 语言 示例:"zh-Hans-CN" |
time_zone | string | 是 | 仅限iOS设备 | 时区 示例:"28800" |
wx_api_ver | int64 | 否 | 仅限Android设备 | 微信内部SDK版本。 详见附录微信小程序/小游戏广告处理逻辑 |
wx_installed | bool | 否 | 仅限iOS设备 | 是否已安装微信。 详见附录微信小程序/小游戏广告处理逻辑 |
opensdk_ver | Android端为int64,iOS端为string | 否 | 微信open SDK版本。 详见附录微信小程序/小游戏广告处理逻辑 |
|
mac | string | 否 | 路由器mac地址 | |
wifiname | string | 否 | wifi名称 | |
sd_free_space | string | 否 | 磁盘剩余空间,单位:字节 |
注:
(1)对安卓设备请求,imei、imei_md5、android_id、android_id_md5、oaid至少要填写其中一个
(2)对于iOS设备请求,idfa、idfa_md5、10个设备信息字段(device_start_sec~time_zone)三者至少填写一个,如果无idfa和idfa_md5则10个设备信息字段都必填
- network JSON对象
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
connect_type | int32 | 是 | 可能取值: 0 - 未知 1 - wifi 2 - 2G 3 - 3G 4 - 4G 5 - 4G免流 6 - 4G非免流 7 - 5G 8 - 以太网 |
联网方式。 不填写将无广告返回;填未知,会严重影响流量变现效果。 |
carrier | int32 | 是 | 可能取值: 0 - 未知 1 - 移动 2 - 联通 3 - 电信 |
运营商。 不填写将无广告返回;填未知,会影响流量变现效果。 |
ip | string | 是 | 1.请回传客户端IP地址,不要回传服务端IP地址 2.优先上报IPV4地址,如果没有则上报IPV6地址 |
|
ua | string | 是 | 客户端WebView的UserAgent信息,需包含Mozilla或Dalvik 示例:Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 |
- geo JSON对象
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
lat | int32 | 否 | 用户原始GPS坐标的纬度*1,000,000。 该参数会用于基于地理位置的广告的定向,正确填写有助于提高流量变现效果。 |
|
lng | int32 | 否 | 用户原始GPS坐标的经度*1,000,000。 该参数会用于基于地理位置的广告的定向,正确填写有助于提高流量变现效果。 |
|
location_accuracy | double | 否 | 经纬度精度半径,单位为米。 该参数会用于基于地理位置的广告的定向,正确填写有助于提高流量变现效果。 |
广告请求接口-请求校验字段
sign是合作伙伴重要的身份标识,优量汇会对sign字段进行校验,请妥善保管好优量汇接口人提供的生成sign的关键信息,防止泄露。一旦发现泄露,请立即联系优量汇接口人报备处理。
请求校验字段生成规则
sign 字段生成规则如下:
sign = hmac_sha256(secret, request_param)
- secret 为约定的私钥,合作伙伴申请流量通过API接口接入时,由优量汇提供
- request_param 为本次请求中的参数生成的字符串,将请求参数 device, media, network, pos, time_stamp 按照升序排列后得到,顺序不可调换(参数内二级字段顺序不影响),具体如下:
String request_param = "device=" + $device + "&" + "media=" + $media + "&" + "network=" + $network + "&" + "pos=" + $pos + "&" + "time_stamp" + $time_stamp
请求校验字段生成示例
以下示例说明了如何生成请求校验字段 sign
假设生成 sign 的各个参数取值如下:
secret:LUqGS3BaEbe1O
device:{"device_type":1,"model":"rmx3366"}
media:{"app_bundle_id":"com.aaa.xxx","app_id":"1234456"}
network:{"connect_type":4}
pos:{"ad_count":1}
time_stamp:1662452225866
此时,request_param = "device={"device_type":1,"model":"rmx3366"}&media={"app_bundle_id":"com.aaa.xxx","app_id":"1234456"}&network={"connect_type":4}&pos={"ad_count":1}&time_stamp=1662452225866"
生成sign的代码示例如下
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
sha256_HMAC.init(secret_key);
byte[] array = sha256_HMAC.doFinal(request_param.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : array) {
sb.append(Integer.toHexString((b & 0xFF) | 0x100).substring(1, 3));
}
String sign = sb.toString();
这样我们就能生成 请求校验字段 sign = e319753299f12b4a06befc535350052da93fef1858c37d6525b469dc5ee7d555
广告请求接口-请求示例
android设备原生广告位请求
GET http://mi.gdt.qq.com/api/v3?api_version=3.0&pos=%7B%22id%22%3A 8050018672826551%2C%22ad_count%22%3A2%7D&media=%7B%22app_id%22%3A%221104241296%22%2C%22app_bundle_id%22%3A%22com.test.android%22%7D&device=%7B%22os%22%3A%22android%22%2C%22os_version%22%3A%226.0.1%22%2C%22model%22%3A%22MI%204LTE%22%2C%22manufacturer%22%3A%22Xiaomi%22%2C%22device_type%22%3A1%2C%22screen_width%22%3A360%2C%22screen_height%22%3A640%2C%22orientation%22%3A0%2C%22imei%22%3A%22123456789009876%22%2C%22android_id%22%3A%229774d56d682e549c%22%2C%22android_ad_id%22%3A%22d725f723-86ea-466a-883d-5be2ca568241%22%7D&network=%7B%22connect_type%22%3A1%2C%22carrier%22%3A3%7D&geo=%7B%22lat%22%3A39925625%2C%22lng%22%3A116333285%2C%22coord_time%22%3A1473416991123%7D HTTP/1.1 Host: mi.gdt.qq.com X-Forwarded-For: 14.17.22.35 User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MI 4LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.8 Mobile Safari/537.36 Referer: http://www.qq.com
ios设备激励视频广告位请求(横屏状态)
GET http://mi.gdt.qq.com/api/v3?api_version=3.0&pos={%22id%22:7010037942894023,%22ad_count%22:1}&media={%22app_id%22:%221104238667%22,%22app_bundle_id%22:%22com.test.ios%22}&device={%22os%22:%22ios%22,%22os_version%22:%2210.1.1%22,%22model%22:%22iPhone%205s%22,%22device_type%22:1,%22orientation%22:90,%22idfa%22:%22008A39D4-CF91-40F8-ADF0-E119F206AE6E%22}&network={%22connect_type%22:1,%22carrier%22:3}&geo={%22lat%22:39925625,%22lng%22:116333285,%22coord_time%22:1473416991123} HTTP/1.1 Host: mi.gdt.qq.com X-Forwarded-For: 14.17.22.35 User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4 Referer: http://www.qq.com
广告请求接口-响应数据

响应的JSON数据包含三部分内容,分别是返回码ret、返回码描述msg和数据data,如下表所示。未在本文档中说明但出现在响应中的字段,是腾讯内部系统接口,随时可能变更,请勿使用。
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
ret | int64 | 是 | 返回码。非0表示请求失败,处理措施详见附录广告请求返回码列表。流量方必须首先检查该参数,在没有发生错误的情况下,再去解析广告数据data。 | |
msg | string | 是 | 解释ret返回码含义 | |
data | object | 是 | 广告数据,见data JSON对象 |
- data JSON对象
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
{pos.id} | object | 是 | 名称是本次请求的广告位ID。参数值是该广告位的广告数据,见{pos.id} JSON对象 |
- {pos.id} JSON对象
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
list | Array | 是 | 该数组的每个元素对应一条广告的数据,返回广告个数不超过请求广告个数; 数组元素(广告)定义见 list JSON数组元素(广告) |
- list JSON数组元素(广告)
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
ad_id | string | 是 | 广告ID | |
creative_id | string | 是 | 素材ID | |
ad_examine_type | int32 | 否 | 可能取值:1 - 千人千面广告 | 特殊广告类型 |
impression_link | string | 是 | 曝光上报链接 | |
video_view_link | string | 否 | 仅视频广告返回 | 视频播放信息上报链接 |
click_link | string | 是 | 点击上报链接(需要宏替换,详见点击上报请求数据部分) | |
interact_type | int32 | 是 | 可能取值: 0 - 打开网页 1 - app下载 |
当广告被点击后,发生的交互行为类型。对不同交互类型的广告,处理方式有差异: 1. 可以根据该参数值进行不同方式的渲染 2. 该参数取值不同,点击上报返回数据的处理方式不同,详见点击上报响应数据部分 3.对app下载类型的广告还需要进行转化上报,详见转化上报部分 |
conversion_event | JSON | 否 | 转化上报地址,详见转化上报请求数据部分 | |
crt_type | int32 | 否 | 可能取值: 11 - 图片 20 - 视频 24 - 三小图 |
素材类型,该字段用来判断本次返回的主素材类型 |
img_url | string | 否 | 广告的图片url | |
img2_url | string | 否 | icon url | |
img_list | Array | 否 | 三图两文广告的三张小图url | |
img_width | int32 | 否 | 广告图片宽 | |
img_height | int32 | 否 | 广告图片高 | |
title | string | 否 | 广告标题 | |
description | string | 否 | 广告描述 | |
video_url | string | 否 | 视频url | |
video_width | int32 | 否 | 视频宽度,单位像素 | |
video_height | int32 | 否 | 视频高度,单位像素 | |
package_name | string | 否 | 安卓返回package_name iOS返回bundle_id |
|
app_id | int64 | 否 | ios应用id | |
video_duration | int32 | 否 | 视频时长 | |
video_file_size | int32 | 否 | 视频文件大小,单位为KB | |
relation_target | string | 否 | 可能取值: 0 – 不限 1 – 定向未安装 2 – 定向已安装 |
广告的应用安装定向类型 |
customized_invoke_url | string | 否 | 应用直达url | |
universal_link | string | 否 | 仅iOS端返回 | iOS Universal Link |
quick_app_link | string | 否 | 仅Android端返回 | 快应用url 格式:hap://app/ |
market_url | string | 否 | 仅Android端返回 | 厂商应用商店下载页url |
wechat_app_username | string | 否 | 小程序原始id,详见附录微信小程序/小游戏广告处理逻辑 | |
wechat_app_path | string | 否 | 拉起小程序页面,详见附录微信小程序/小游戏广告处理逻辑 | |
wechat_app_ext_data | string | 否 | 拉起小程序附加信息,详见附录微信小程序/小游戏广告处理逻辑 | |
wechat_canvas | string | 否 | 微信原生页广告跳转信息微信原生页广告处理逻辑 | |
package_url | string | 否 | 仅Android端返回 | 应用下载url |
landing_page_url | string | 否 | 落地页url | |
app_info_url | string | 否 | 安卓应用信息url | |
app_name | string | 否 | 安卓应用名称 | |
advertiser_name | string | 否 | 安卓应用开发者名称 | |
app_version | string | 否 | 安卓应用版本 | |
package_size_bytes | int64 | 否 | 安卓应用包大小 | |
permissions_url | string | 否 | 安卓应用权限列表 | |
description_url | string | 否 | 安卓应用功能描述 | |
privacy_agreement | string | 否 | 安卓应用隐私协议 | |
ecpm | int32 | 否 | 在开发者平台创建广告位时,勾选【实时竞价】价格策略后可调用 DSP-B接入媒体仅支持 服务端实时竞价(S2S Bidding) |
单位“分” 获取本次请求优量汇的参竞价格 |
win_notice_url | string | 否 | 在开发者平台创建广告位时,勾选【实时竞价】价格策略后可调用 | 竞胜上报链接(需要宏替换,详见竞胜上报请求数据部分) |
loss_notice_url | string | 否 | 在开发者平台创建广告位时,勾选【实时竞价】价格策略后可调用 | 竞败上报链接(需要宏替换,详见竞败上报请求数据部分) |
广告请求接口-响应示例
- 原生图文广告
HTTP/1.1 200 OK
{
"ret":0,
"msg":"",
"data":{
"8050018672826551":{
"list":[
{
"impression_link":"http://v.gdt.qq.com/gdt_stats.fcg?viewid=bSVdor67lmXY5!eoxbZOOOOb_CQu1rpTvJWGM8AVi0E3iy!2VnzgHLzz_dIL6pq5Fi8LxPtJYIBFM2jYvVXbDGMGQrr63raQ_9tzhiFUUlAjs1Bg_LUzJYNcxaOA!5MG!MwjlLYc!2CUmeGx6oWfp!BidFhL1ZzybbRTGcbUT1LynM1imRxQGexJkjBDHquCv7szfLd_ThR0S1cAqtlAIQ&i=1&os=2&datatype=json",
"click_link":"http://c.gdt.qq.com/gdt_mclick.fcg?viewid=bSVdor67lmXY5!eoxbZOOOOb_CQu1rpTvJWGM8AVi0E3iy!2VnzgHLzz_dIL6pq5Fi8LxPtJYIBFM2jYvVXbDGMGQrr63raQ_9tzhiFUUlAjs1Bg_LUzJYNcxaOA!5MG!MwjlLYc!2CUmeGx6oWfp!BidFhL1ZzybbRTGcbUT1LynM1imRxQGexJkjBDHquCv7szfLd_ThR0S1cAqtlAIQ&jtype=0&i=1&os=2&asi=%7B%22mf%22%3A%22Xiaomi%22%7D&acttype=0&s=%7B%22req_width%22%3A%22__REQ_WIDTH__%22%2C%22req_height%22%3A%22__REQ_HEIGHT__%22%2C%22width%22%3A%22__WIDTH__%22%2C%22height%22%3A%22__HEIGHT__%22%2C%22down_x%22%3A%22__DOWN_X__%22%2C%22down_y%22%3A%22__DOWN_Y__%22%2C%22up_x%22%3A%22__UP_X__%22%2C%22up_y%22%3A%22__UP_Y__%22%7D",
"interact_type":0,
"crt_type":11,
"title":"链家717,租房换新季!",
"description":"两室一厅两卫+大阳台,家用电器齐全,佣金每1000减200!",
"img_url":"http://pgdt.gtimg.cn/gdt/0/DAAPzYQAUAALQABZBZXLOKDKDSAgqS.jpg/0?ck=bb5fd85d2dfe45d89c73d52f6391905a",
"img2_url":"http://pgdt.gtimg.cn/gdt/0/DAAPzYQAEsAEsAAUBZXK6GCzdJLQFu.jpg/0?ck=9807f69989ad965535fae4448e63dbd0"
},
{
"impression_link":"http://v.gdt.qq.com/gdt_stats.fcg?viewid=!mq3jem6jprY5!eoxbZOODQykDLHprRMH65OvFKKvnuxmHadHDFZmHxCVhJgx4qdXJfEF3BzMO7ycM5WNA6vqTBcYqdnce!KjHDlc7j9XMPkPH7zXU5N9rEmO6tBdDvcoy5h9Q6V6NoZu3G8BRBT1vxgY5E3IlquQhNO0DqSWuOgpnXINM0Gbap7qjZMAzQ2LWZpHEZeu_Ix0wRx3Df14w&i=1&os=2&datatype=json",
"click_link":"http://c.gdt.qq.com/gdt_mclick.fcg?viewid=!mq3jem6jprY5!eoxbZOODQykDLHprRMH65OvFKKvnuxmHadHDFZmHxCVhJgx4qdXJfEF3BzMO7ycM5WNA6vqTBcYqdnce!KjHDlc7j9XMPkPH7zXU5N9rEmO6tBdDvcoy5h9Q6V6NoZu3G8BRBT1vxgY5E3IlquQhNO0DqSWuOgpnXINM0Gbap7qjZMAzQ2LWZpHEZeu_Ix0wRx3Df14w&jtype=0&i=1&os=2&asi=%7B%22mf%22%3A%22Xiaomi%22%7D&acttype=1&s=%7B%22req_width%22%3A%22__REQ_WIDTH__%22%2C%22req_height%22%3A%22__REQ_HEIGHT__%22%2C%22width%22%3A%22__WIDTH__%22%2C%22height%22%3A%22__HEIGHT__%22%2C%22down_x%22%3A%22__DOWN_X__%22%2C%22down_y%22%3A%22__DOWN_Y__%22%2C%22up_x%22%3A%22__UP_X__%22%2C%22up_y%22%3A%22__UP_Y__%22%7D",
"conversion_link":"http://t.gdt.qq.com/conv/alliance/api/conv?client=6&action_id=__ACTION_ID__&click_id=__CLICK_ID__&product_id=1106228530",
"interact_type":1,
"crt_type":11,
"title":"沙城传说",
"description":"经典传奇回归,开局一把木剑,打蜈蚣爆出屠龙刀,系统回收,过瘾",
"img_url":"http://pgdt.gtimg.cn/gdt/0/DAAEEh2AUAALQABQBZXZivCx-g1rXm.jpg/0?ck=5422e0280124288729a93a024896e7c5",
"img2_url":"http://pgdt.gtimg.cn/gdt/0/DAAEEh2AEsAEsAAXBZXZiXDY-kMKbV.jpg/0?ck=c6066c8bae5de0fad07ab0739852ea5f"
}
]
}
}
}
- 三小图网页类广告
HTTP/1.1 200 OK
{
"ret":0,
"msg":"",
"data":{
"7010946296282620":{
"list":[
{
"ad_id":"78064987",
"impression_link":"http://v.gdt.qq.com/gdt_stats.fcg?viewid=0UK1EIN9ibAzpwc26RfjJ1hUXwGgvOOvZLGy5ow!97_x!pE55QuV6QyA_KDCDBfW!u51XavIXZIS9IrLQAFrLyw7YqQr9r3w2tpmmqFlSoQ3a8trEKpgF1SgJdP_XP8aSjKJxWNbnuqC4yl7lRBTkB9ATQDfLYSj0wn0LSMH246WBhka14_39Xlm!NaokVnYq!opvRtU02dV5utkxBPFAH1UrPg6Clv_sC6qfM9iD48&i=1&os=1&datatype=json&xp=3",
"click_link":"http://c.gdt.qq.com/gdt_mclick.fcg?viewid=0UK1EIN9ibAzpwc26RfjJ1hUXwGgvOOvZLGy5ow!97_x!pE55QuV6QyA_KDCDBfW!u51XavIXZIS9IrLQAFrLyw7YqQr9r3w2tpmmqFlSoQ3a8trEKpgF1SgJdP_XP8aSjKJxWNbnuqC4yl7lRBTkB9ATQDfLYSj0wn0LSMH246WBhka14_39Xlm!NaokVnYq!opvRtU02dV5utkxBPFAH1UrPg6Clv_sC6qfM9iD48&jtype=0&i=1&os=1&acttype=0&s=%7B%22req_width%22%3A%22__REQ_WIDTH__%22%2C%22req_height%22%3A%22__REQ_HEIGHT__%22%2C%22width%22%3A%22__WIDTH__%22%2C%22height%22%3A%22__HEIGHT__%22%2C%22down_x%22%3A%22__DOWN_X__%22%2C%22down_y%22%3A%22__DOWN_Y__%22%2C%22up_x%22%3A%22__UP_X__%22%2C%22up_y%22%3A%22__UP_Y__%22%7D&xp=3",
"interact_type":0,
"crt_type":7,
"title":"翡翠原厂地直供,高性价比",
"description":"买翡翠的注意!这个APP源头直供,比实体店便宜一半",
"img_list":[
"http://pgdt.ugdtimg.com/gdt/0/DAAe7Y2ADkACWAAKBb0aNwCQwwHkGo.jpg/0?ck=6106dfc36bee5dd8dec60b6d60e2db43",
"http://pgdt.ugdtimg.com/gdt/0/DAAe7Y2ADkACWAAbBb0aNzBvw07kQd.jpg/0?ck=a31a8c84ca8eae23ba4e961d0b3f41d4",
"http://pgdt.ugdtimg.com/gdt/0/DAAe7Y2ADkACWAAdBb0aN2AqTuDmq3.jpg/0?ck=017d4621bee5af0afaacddda0135b72e"
],
"app_id":982906456
}
]
}
}
}
- 激励视频网页类广告
具体情况请以线上返回为主
广告请求接口- 响应处理流程
HTTP响应状态码为200并且响应数据中返回码ret=0时,表示请求广告成功。当HTTP响应状态码不是200时,联盟后台建议立即发起广告请求重试但最多只能重试一次;其他异常情况,不允许重试。具体处理流程如下:

曝光上报
当广告展示给用户并且满足腾讯广告联盟曝光有效性标准时,开发者需要实时将本次曝光事件上报给联盟后台。曝光有效性标准如下:
- 广告展示区域的50%以上像素点在用户屏幕上并且持续可见时间超过1秒钟。
获取到的广告尽力曝光,不允许刻意舍弃某种类型的广告。每条广告只能曝光一次。以下情况可能导致联盟后台对广告播放事件不计费并影响对流量质量的评价,从而降低流量变现效果:
- 1.对一次广告播放事件,没有曝光上报
- 2.对一次广告播放事件,重复曝光上报
- 3.对一次广告播放事件,曝光上报与广告请求时间间隔太大
- 4.广告曝光率(曝光数/返回广告数)显著偏离正常水平
曝光上报-请求地址
曝光上报URL直接使用广告请求响应数据中的impression_link字段,该字段已经包含了完整的请求地址和请求数据(已经过URL编码),禁止开发者做任何修改。
曝光上报-请求数据
使用impression_link字段,无需开发者填写。
曝光上报-请求示例
GET http://v.gdt.qq.com/gdt_stats.fcg?viewid=JcOh4K3LVtyM36FJYvAKAF_yL7FjDsqIvTv5Okb!OqmRVZVS8grRgfb8mE9jYoS3BM_S5FP!mBZFagqd3pitSIXFLugPNNM75APKz15fpCA7Nk4H9DL2Ahm1KyByHV8GH2Hze4h6XRewMVpuIwReDjNtbh_alplvlZaYU3BNpH6EwUQ6YS9AO4d80Y!HEso908m3ktLbFLe6wzKcjP!ZTEGfycQ1SVBsYoeco3kALE8Q2OLoI!jjzgUFAII8BY_TUXTHvNtw!0BFSBqfcPivGUYAGavN3CsGjlNHDLISkrq4M4nBfKMOdhWSjiBSChpFUgxTRRG8Y64&datatype=json HTTP/1.1
Host: v.gdt.qq.com
曝光上报-响应数据
响应数据是JSON格式,包含两部分内容:返回码ret和返回码描述msg,如下表所示。
名称 | 类型 | 必填 | 限制 | 描述 |
---|---|---|---|---|
ret | int64 | 是 | 返回码,非0表示失败 | |
msg | string | 是 | 返回码描述信息 |
曝光上报-响应示例
HTTP/1.1 200 OK
{
"ret":0,
"msg":""
}
曝光上报-响应处理流程
HTTP响应状态码为200并且ret=0时,表示上报成功;其他情况均表示失败。当HTTP响应状态码不是200时,联盟后台建议立即发起转化上报重试但最多只能重试一次;其他异常情况,不允许重试。

视频播放信息上报
对于视频广告,开发者需要在视频播放结束时,上报视频播放信息。在一次广告播放事件中用户可能多次播放视频,每次视频播放结束时,都要上报一次播放信息。以下情况可能导致联盟后台对广告播放事件不计费并影响对流量质量的评价,从而降低流量变现效果:
- 1.对一次广告播放事件,上报了错误的视频播放信息
- 2.对一次广告播放事件,视频播放信息上报与广告请求时间间隔太大
- 3.视频播放率(视频播放数/曝光数)显著偏离正常水平
视频播放信息上报-请求地址
视频播放信息上报URL需要开发者对广告请求响应数据中video_view_link字段进行宏替换后得到。该字段包含了请求地址和部分请求数据(已经过URL编码),开发者需要进行宏替换将请求数据补充完整。
视频播放信息上报-请求数据
video_view_link中需要替换的宏:
名称 | 类型 | 必填 | 限制 | 说明 |
---|---|---|---|---|
__VIDEO_TIME__ | int32 | 是 | 视频总时长,单位为秒 | |
__BEGIN_TIME__ | int32 | 是 | 视频播放开始时间,单位为秒。如果视频从头开始播放,则为0。 | |
__END_TIME__ | int32 | 是 | 视频播放结束时间,单位为秒。如果视频播放到结尾,则等于视频总时长。 | |
__PLAY_FIRST_FRAME__ | int32 | 是 | 视频是否从第一帧开始播放。从第一帧开始播放,则为1;否则,为0。 | |
__PLAY_LAST_FRAME__ | int32 | 是 | 视频是否播放到最后一帧。播放到最后一帧,则为1;否则,为0。 | |
__SCENE__ | int32 | 是 | 视频播放场景。推荐场景如下: 1 - 在广告曝光区域播放; 2 - 全屏竖屏、只展示视频; 3 - 全屏竖屏、屏幕上方展示视频、下方展示广告推广目标网页(参考附录广告渲染样式示例,仅适用于交互类型是打开网页的广告,目标网页由点击上报返回数据中取得,详见点击上报响应数据部分); 4 - 全屏横屏、只展示视频; 0 - 其它开发者自定义场景 |
|
__TYPE__ | int32 | 是 | 播放类型。 1 - 第一次播放; 2 - 暂停后继续播放; 3 - 重新开始播放。 |
|
__BEHAVIOR__ | int32 | 是 | 播放行为。 1 - 自动播放(推荐联网方式为wifi或4G时,设置视频自动播放); 2 - 点击播放。 |
|
__STATUS__ | int32 | 是 | 播放状态。 0 - 正常播放; 1 - 视频加载中; 2 - 播放错误。 |
视频播放信息上报-请求示例
GET http://vr.gdt.qq.com/gdt_stats.fcg?&datatype=json&viewid=3fOzNrVLMUCYOAUpt_U94oWRGcW_STX5fYS7sdOMs46chbddtzrkhTTd6kAvaNL5L6DoWzgO5VXF83EaF!O5MNk4vq!Un!q1uRjaYt6WQ5y_Fen1gKkVr6f4jp8u9bh1oy5h9Q6V6NoZu3G8BRBT1vxgY5E3IlquQhNO0DqSWuNYHu2KUFcRnQerHewVpZwDLWZpHEZeu_Jiadr1uWzZAA&video=%7b%22vt%22%3a%2215%22%2c%22bt%22%3a%220%22%2c%22et%22%3a%225%22%2c%22bf%22%3a%221%22%2c%22ef%22%3a%220%22%2c%22pp%22%3a%221%22%2c%22pa%22%3a%221%22%2c%22pb%22%3a%221%22%2c%22ps%22%3a%220%22%7d HTTP/1.1
Host: v.gdt.qq.com
视频播放信息上报-响应数据
响应数据是JSON格式,包含两部分内容:返回码ret和返回码描述msg,如下表所示。
名称 | 类型 | 必填 | 限制 | 描述 |
---|---|---|---|---|
ret | int64 | 是 | 返回码,非0表示失败 | |
msg | string | 是 | 返回码描述信息 |
视频播放信息上报-响应示例
HTTP/1.1 200 OK
{
"ret":0,
"msg":""
}
视频播放信息上报-响应处理流程
HTTP响应状态码为200并且ret=0时,表示上报成功;其他情况均表示失败。当HTTP响应状态码不是200时,联盟后台建议立即发起视频播放信息上报重试但最多只能重试一次;其他异常情况,不允许重试。

点击上报
当广告交互区域(对大部分广告,可以是整个广告所在区域;对某些广告,如视频广告,可以是一个局部区域,比如一个出现在视频下方的“查看详情”按钮,参考附录广告渲染样式示例视频广告渲染示例)被用户点击时,开发者需要实时将本次点击事件上报给联盟后台并尽力引导用户到达广告目标地址(广告推广商品的网页地址或APP下载地址)。对联盟后台点击上报接口的1次调用,即可实现点击事件上报,并从响应数据中获得广告目标地址。用户发生N次点击则进行N次点击上报,禁止用户点击一次,但进行多次点击上报。以下情况可能导致联盟后台对广告播放事件不计费或影响>对流量质量的评价,从而降低流量变现效果:
- 1.对一次广告播放事件,用户点击了广告但没有点击上报
- 2.对一次广告播放事件,点击上报与广告请求时间间隔太大
- 3.广告点击率(点击数/曝光数)显著偏离正常水平
点击上报-请求地址
点击上报URL需要开发者对广告请求响应数据中click_link字段进行宏替换后得到。该字段包含了请求地址和部分请求数据(已经过URL编码),开发者需要进行宏替换将请求数据补充完整。
点击上报-请求数据
开发者在广告点击时需要捕获用户点击坐标,该值将在联盟后台用来帮助提升用户点击率,从而提高开发者收入。
如下图所示,坐标是指相对于实际广告位(即完整广告容器)左上角的坐标,箭头方向为正坐标方向,其中针对全屏类广告,实际广告位大小即等于屏幕大小。

click_link中以下宏都需要替换,如无法获取坐标时,请替换为-999。
其中,针对点击坐标、实际广告位的宽/高共6个宏,Anrdoid端需使用 逻辑像素(dp) 作为单位,iOS端需使用 pt 作为单位,如果单位错误会严重影响流量变现效果。
具体处理逻辑,开发者可参考下方点击上报-坐标获取 的代码示例。
备注:逻辑像素(dp) = 物理像素(px) / 屏幕密度(dpi),使用逻辑像素作为单位可消除Android端不同分辨率手机屏幕导致的坐标差异。
宏名称 | 类型 | 必填 | 描述 | 限制 |
---|---|---|---|---|
__WIDTH__ | int32 | 是 | 实际广告位的宽(完整广告位区域,不只是素材展示区域) | |
__HEIGHT__ | int32 | 是 | 实际广告位的高(完整广告位区域,不只是素材展示区域) | |
__DOWN_X__ | int32 | 当SLD=0,1,3,6时必填 | 以广告容器左上角为原点,用户手指按下时的横坐标。 | 请正确获取有效值并替换,如无法获取时,需替换为-999。 当替换为无效值(非数字格式或取值异常)或未替换时,会严重影响广告变现收益。 备注: 针对摇一摇,由于双端加速度单位不同:Android系统单位为m/s2,iOS系统单位为G。 因此数据处理方式不同:Android端乘以100取整,iOS端乘以980取整。 针对扭一扭,计算的扭动角度是对比扭动前手机初始位置,而非水平或垂直的物理位置。 扭一扭的x、y、z轴方向和扭动角度的正负可参照下方图示。 |
__DOWN_Y__ | int32 | 当SLD=0,1,3,6时必填 | 以广告容器左上角为原点,用户手指按下时的纵坐标。 | |
__UP_X__ | int32 | 当SLD=0,1,3,6时必填 | 以广告容器左上角为原点,用户手指抬起时的横坐标。 | |
__UP_Y__ | int32 | 当SLD=0,1,3,6时必填 | 以广告容器左上角为原点,用户手指抬起时的纵坐标。 | |
__X_MAX_ACC__ | int32 | 当SLD=2时必填 | 用户摇动点击时x轴加速度峰值。 Android端乘以100取整,iOS端乘以980取整。 | |
__Y_MAX_ACC__ | int32 | 当SLD=2时必填 | 用户摇动点击时y轴加速度峰值。 Android端乘以100取整,iOS端乘以980取整。 | |
__Z_MAX_ACC__ | int32 | 当SLD=2时必填 | 用户摇动点击时z轴加速度峰值。 Android端乘以100取整,iOS端乘以980取整。 | |
__TURN_X__ | int32 | 当SLD=5时必填 | 对比扭动前初始位置,扭动触发点击时的x轴扭动角度,为-180到180的整数。 | |
__TURN_Y__ | int32 | 当SLD=5时必填 | 对比扭动前初始位置,扭动触发点击时的y轴扭动角度,为-180到180的整数。 | |
__TURN_Z__ | int32 | 当SLD=5时必填 | 对比扭动前初始位置,扭动触发点击时的z轴扭动角度,为-180到180的整数。 | |
__TURN_TIME__ | int32 | 当SLD=5时必填 | 扭动触发点击时扭动的总时间(单位毫秒,保留整数)。 即最后一次监听到3个方向扭动角度均小于±5度,到点击触发的时间。 | |
__SLD__ | int32 | 是 | 广告交互方式,可能取值: 0 - 常规触屏点击 1 - 滑动点击 2 - 摇一摇 3 - 自定义手势 5 - 扭一扭 6 - 擦除 | 当SLD=0,1,3,6时,需要上报点击坐标参数。 当SLD=2(摇一摇)时,需要上报重力加速参数。 当SLD=5(扭一扭)时,需要上报屏幕角度变化参数。 |
扭一扭方向图示
针对扭一扭x轴、y轴、z轴的方向,以及各个方向上扭动角度的正负可参照下图。

点击上报-请求示例
GET http://c.gdt.qq.com/gdt_mclick.fcg?viewid=JcOh4K3LVtyM36FJYvAKAF_yL7FjDsqIvTv5Okb!OqmRVZVS8grRgfb8mE9jYoS3BM_S5FP!mBZFagqd3pitSIXFLugPNNM75APKz15fpCA7Nk4H9DL2Ahm1KyByHV8GH2Hze4h6XRewMVpuIwReDjNtbh_alplvlZaYU3BNpH6EwUQ6YS9AO4d80Y!HEso908m3ktLbFLe6wzKcjP!ZTEGfycQ1SVBsYoeco3kALE8Q2OLoI!jjzgUFAII8BY_TUXTHvNtw!0BFSBqfcPivGUYAGavN3CsGjlNHDLISkrq4M4nBfKMOdhWSjiBSChpFUgxTRRG8Y64&jtype=0&i=1&acttype=1&s=%7B%22req_width%22%3A%22250%22%2C%22req_height%22%3A%22100%22%2C%22width%22%3A%22300%22%2C%22height%22%3A%22120%22%2C%22down_x%22%3A%22100%22%2C%22down_y%22%3A%2250%22%2C%22up_x%22%3A%22100%22%2C%22up_y%22%3A%2250%22%7D HTTP/1.1
Host: c.gdt.qq.com
点击上报-坐标获取
针对Android/iOS端获取点击坐标的方式与处理逻辑,开发者可参考以下代码示例
1.Android端
Android端的按下、抬起坐标原点在广告容器左上角,建议重写广告容器ViewGroup的dispatchTouchEvent方法获取按下、抬起的点击坐标,然后return super.dispatchTouchEvent(event),不会影响原来dispatchTouchEvent方法逻辑。
以上方的点击坐标示意图为例,重写绿色部分广告容器的dispatchTouchEvent方法,容器内触摸事件坐标均可以获取,当红色按钮点击事件触发时上报刚刚获取的点击坐标。
Android代码示例
// 保存按下、抬起坐标
int startX,startY,endX,endY;
// 重写广告容器ViewGroup的dispatchTouchEvent方法,获取按下、抬起坐标
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
switch (event.getAction()) {
// PxUtil.pxToDp是伪代码,需要开发者实现
case MotionEvent.ACTION_DOWN:
// 获取按下的坐标,转换成逻辑像素(dp)
startX = PxUtil.pxToDp(event.getX());
startY = PxUtil.pxToDp(event.getY());
break;
case MotionEvent.ACTION_UP:
// 获取抬起的坐标,转换成逻辑像素(dp)
endX = PxUtil.pxToDp(event.getX());
endY = PxUtil.pxToDp(event.getY());
break;
}
return super.dispatchTouchEvent(event);
}
// 点击事件触发时上报坐标
public void onBtnClick(View view) {
......
// reportClickCoordinate是伪代码,需要开发者实现
reportClickCoordinate(startX, startY, endX, endY);
}
2.iOS端
iOS的按下、抬起坐标需要通过[UITouch loactionInView:]方法来进行坐标转换,即在被触发点击事件的UITouch对象的对应方法。其中,locationInView的传入参数为广告容器,不论是半屏广告还是全屏广告,即上图中绿色部分。
以上方的点击坐标示意图为例,如果事件绑定在红色按钮区,需要取到红色按钮的UITouch对象,触发对应的loactionInView方法获取坐标。
iOS代码示例
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
// 按下坐标获取方法
CGPoint beginPoint = [[touches anyObject] locationInView:self.adView]; // 这里的View填写广告的View。如果是半屏广告就填写半屏的View,如果是全屏广告就填写全屏广告的View
}
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[super touchesEnded:touches withEvent:event];
// 抬起坐标获取方法
CGPoint endPoint = [[touches anyObject] locationInView:self.adView]; // 这里的View填写广告的View。如果是半屏广告就填写半屏的View,如果是全屏广告就填写全屏广告的View
// 广告距离屏幕左上角的坐标获取方法
CGRect adViewToScreenOriginRect = [self.adView convertRect:self.adView.frame toView:nil];
}<
点击上报-响应数据
优量汇DSP-B合作目前已支持在广告请求接口响应数据中返回广告跳转链接,不依赖点击上报响应数据,建议开发者使用最新版本。
针对不同类型广告的点击交互处理流程,可参考附录广告点击交互处理流程,无需参考依赖点击上报响应进行跳转的逻辑。
点击上报-响应处理流程
当发生以下情况时,联盟后台建议立即发起点击上报重试但最多只能重试一次;其他异常情况,不允许重试。
- 1.广告是APP下载类广告并且HTTP响应状态码不是200
- 2.广告是打开网页类广告并且HTTP响应状态码不是302

转化上报
- 对于应用直达类型广告(广告请求响应字段customized_invoke_url或universal_link存在时),腾讯广告联盟需要追踪应用直达效果,包括尝试唤起APP率和唤起APP成功率,所以需要APP上报应用直达广告尝试唤起APP和应用直达广告唤起APP成功。
- 对于非应用直达类型的APP下载类型广告(广告请求响应字段interact_type=1),腾讯广告联盟需要追踪下载效果,包括下载开始率、下载完成率和安装率,所以需要APP上报下载开始、下载完成和安装完成。
- 对于存在安装定向的广告,腾讯广告联盟还需要追踪APP应用安装率(应用已安装/应用未安装),所以还需要APP上报应用已安装/应用未安装。
- APP及时准确地上报这些转化行为,会正面影响腾讯广告联盟对流量质量的评价,从而提高流量变现效果;反之,如果不上报或虚假上报,会负面影响腾讯广告联盟对流量质量的评价,从而降低流量变现效果。
转化上报-请求地址
转化上报URL从广告请求响应数据中conversion_event字段得到,该字段是一个JSON对象,包含了本次返回的广告所需要的上报URL,实际回包中可能仅包含其中一个或几个事件的上报链接,每个key对应的事件类型如下表所示:
key | 事件类型 | 上报时机 |
---|---|---|
app_installed | 应用已安装 | 广告定向条件为定向未安装(relation_target=1)但用户实际已安装应用时 |
app_not_installed | 应用未安装 | 广告定向条件为定向已安装(relation_target=2)但用户实际未安装应用时 |
deeplink_invoke | 尝试调起deeplink | 用户点击应用直达广告后,尝试调用 universal_link 或 customized_invoke_url 时 |
deeplink_success | deeplink调起成功 | Android端:调用 customized_invoke_url 5秒后,检测开发者的app(即发起deeplink调起的宿主app)是否在后台,当在后台时上报唤起成功 iOS端:调用universal_link 或 customized_invoke_url 后,iOS系统接口返回结果显示应用直达未被系统弹窗取消时,上报唤起成功 |
download_started | 开始下载 | 用户点击或自动下载触发时 |
download_finished | 下载完成 | 下载任务完成时 |
install_finished | 安装完成 | 安装动作执行时 |
转化上报- 请求示例
"conversion_event": {
"app_installed": // 应用已安装
"https://sdk.e.qq.com/open/v1.1/report/api_data?data=CAIaQgj1hNLgnjASJGZkZWY2ZmNkLWYyZmYtNWU3OS1kZmZmLWVlZTZkN2ZlODZiMRoAKgQKABgBMAI4jrDxr5y%2FuAxACQ%3D%3D&sign=530913c34810ee1e9f460a7942f8aea6",
"app_not_installed": // 应用未安装
"https://sdk.e.qq.com/open/v1.1/report/api_data?data=CAIaQgj1hNLgnjASJGZkZWY2ZmNkLWYyZmYtNWU3OS1kZmZmLWVlZTZkN2ZlODZiMRoAKgQKABgAMAI4jrDxr5y%2FuAxACQ%3D%3D&sign=d2edf359423e61ea51dbbe2bd9fcd211",
"deeplink_invoke": // 尝试调起deeplink
"https://t.gdt.qq.com/conv/alliance/api/conv?client=6&action_id=245&click_id=gzva6zjxuuzoy01",
"deeplink_success": // deeplink调起成功
"https://t.gdt.qq.com/conv/alliance/api/conv?client=6&action_id=246&click_id=gzva6zjxuuzoy01",
"download_started": // 开始下载
"https://t.gdt.qq.com/conv/alliance/api/conv?client=6&action_id=5&click_id=gzva6zjxuuzoy01",
"download_finished": // 下载完成
"https://t.gdt.qq.com/conv/alliance/api/conv?client=6&action_id=7&click_id=gzva6zjxuuzoy01",
"install_finished": // 安装完成
"https://t.gdt.qq.com/conv/alliance/api/conv?client=6&action_id=6&click_id=gzva6zjxuuzoy01"
}
转化上报-响应处理流程
HTTP响应状态码为200时,表示上报成功;其他情况均表示失败。当HTTP响应状态码不是200时,联盟后台建议立即发起转化上报重试但最多只能重试一次;其他异常情况,不允许重试。

转化上报-应用安装上报与过滤策略应用
为保证广告的转化效果,广告主往往会选择已安装或未安装定向。因此优量汇强烈建议开发者在曝光广告前,判断广告是否存在安装定向(即relation_target=1或2),当广告存在定向时需判断广告要求定向与用户实际应用安装情况是否符合,广告对应app应用可根据回包中的package_name字段获取。如果符合预期则展示广告,否则需要将广告过滤。详细逻辑请参考下方示意图
同时为提升后续广告定向的效果,当广告定向与用户实际应用安装情况不符合时,建议开发者上报应用已安装(conversion_event对象中的 app_installed URL)或 应用未安装(conversion_event对象中的 app_not_installed URL)
示例:
- 当relation_target取值为1时,说明广告主定向的是未安装广告app的用户,此时开发者检测如果用户没有安装“package name”的应用,则正常曝光广告;如果手机上安装了“package name”的应用,则过滤掉广告,同时上报 应用已安装 (conversion_event对象中的 app_installed URL)
- 当relation_target取值为2时,说明广告主定向的是已安装广告app的用户,此时开发者检测如果用户安装了“package name”的应用,则正常曝光广告;如果手机上没有安装“package name”的应用, 则过滤掉广告,同时上报 应用未安装 (conversion_event对象中的 app_not_installed URL)
- 当relation_target取值为0时,不用做任何处理。

竞胜上报
- 对于以DSP-B形式接入的流量,腾讯广告联盟需要回收广告竞胜价格。
- 及时准确地上报这些转化行为,会正面影响腾讯广告联盟对流量质量的评价,从而提高流量变现效果;反之,如果不上报或虚假上报,会负面影响腾讯广告联盟对流量质量的评价,从而降低流量变现效果。
竞胜上报-请求地址
竞胜上报URL需要开发者对广告请求响应数据中win_notice_url字段进行宏替换后得到。该字段包含了请求地址和部分请求数据(已经过URL编码),开发者需要进行宏替换将请求数据补充完整。
竞胜上报-请求数据
win_notice_url中需要替换的宏:
宏名称 | 类型 | 必填 | 限制 | 描述 |
---|---|---|---|---|
__AUCTION_PRICE__ | int32 | 是 | 单位“分” 要求使用RSA加密算法进行加密,之后进行base64编码,编码后再进行URL编码 申请RSA加密公钥请咨询优量汇技术支持或运营经理 |
竞胜价格 |
竞胜上报-响应说明
开发者不必等待竞胜url的返回。正常情况下,HTTP响应状态码为200;其他异常情况,不允许重试。
竞败上报
- 对于以DSP-B形式接入的流量,腾讯广告联盟需要回收广告竞败相关信息。
- 及时准确地上报这些信息,会正面影响腾讯广告联盟对流量质量的评价,从而提高流量变现效果;反之,如果不上报或虚假上报,会负面影响腾讯广告联盟对流量质量的评价,从而降低流量变现效果。
竞败上报-请求地址
竞败上报URL需要开发者对广告请求响应数据中loss_notice_url字段进行宏替换后得到。该字段包含了请求地址和部分请求数据(已经过URL编码),开发者需要进行宏替换将请求数据补充完整。
竞败上报-请求数据
loss_notice_url中需要替换的宏:
宏名称 | 类型 | 必填 | 限制 | 描述 |
---|---|---|---|---|
__AUCTION_PRICE__ | int32 | 否 | 单位“分” 要求使用RSA加密算法进行加密,之后进行base64编码,编码后再进行URL编码 申请RSA加密公钥请咨询优量汇技术支持或运营经理 |
竞胜方报价 |
__AUCTION_LOSS__ | int32 | 否 | 1 有广告回包,竞败(优量汇不是本次竞价的最高出价方,【备注】:平台目前只披露此类型上报量) 2 无广告回包(无填充、超时等原因) 101 有广告回包,但没有参与竞价(无比价机会) 10001 其他(优量汇有广告回包) |
腾讯联盟失败原因 |
__AUCTION_SEAT_ID__ | int32 | 否 | 1 输给优量汇其它非bidding广告位 2 输给第三方ADN 3 输给自售广告主 4 输给优量汇其它bidding广告位 |
竞胜方ID |
竞败上报-响应说明
开发者不必等待竞败url的返回。正常情况下,HTTP响应状态码为200;其他异常情况,不允许重试。
联调测试
联调说明
- 1.联调测试时,可通过优量汇开发者平台的账号及密码登录优量汇联调工具平台,选择通用联调 - DSP-B联调。
- 2.联调工具平台当前支持三个维度配置广告回包,包括素材类型、广告位场景、跳转类型,开发者选择需要的广告类型后即可获取指定的广告回包,其中三个字段均不是必选项,如无广告返回可删除任意一个条件再次请求。
- 3.开发者测试过程中需注意以下事项:
- a.测试各个请求参数取值不同时,是否可以成功发起请求。
- b.测试对不同素材类型的广告,是否可以正常渲染展示。
- c.测试对不同跳转类型的广告,是否可以正常交互跳转。
- d.测试对各种类型的广告,是否可以正确进行曝光上报、点击上报、转化上报、竞胜/竞败上报。
- 4.注:联调工具平台有日请求总量限制,请合理使用。
附录
DSP-B基础数据类型定义
类型 | 含义 |
---|---|
bool | 布尔型 |
int32 | 32位有符号整数 |
int64 | 64位有符号整数 |
double | 双精度浮点型 |
string | 字符串 |
object | JSON对象类型 |
广告请求返回码列表
当无广告返回时,对照错误码,首先检查填写逻辑,常见问题如下:
- 1.必填参数未填写
- 2.参数数据类型不正确
- 3.参数取值不合法。
错误码 | 说明 |
---|---|
100133 | 请求中包含无效的广告位 |
102006 | 没有匹配到合适的广告 |
104014 | 原始idfa无效 |
104015 | imei无效 |
104017 | android id无效 |
109512 | 没有合适的素材规格 |
107001 | 请求中操作系统和muid类型都合法但是不匹配 |
107002 | 请求中操作系统类型不合法 |
107003 | 请求中muid类型不合法 |
107004 | 请求中广告位数量不合法 |
107005 | 请求中app_id不匹配 |
107006 | 请求中安卓的package name或是ios的bundle id不合法 |
107007 | 缺少有效的设备标识字段 |
107008 | 广告位所属媒体在联盟平台关联的域名为空 |
107009 | 广告位所在页面的域名与广告位所属媒体在联盟平台关联的域名不一致 |
107011 | 请求中的操作系统类型与广告位在联盟平台的设置不匹配 |
107012 | 解析请求中device字段失败 |
107014 | 解析请求中network字段失败 |
107015 | 解析请求中geo字段失败 |
107016 | 解析请求中设备品牌和型号model字段失败 |
107017 | 解析请求中设备横竖屏orientation字段失败 |
107018 | 解析请求中网络连接类型connect_type字段失败 |
107019 | 解析请求中运营商信息carrier字段失败 |
107020 | 解析请求中纬度信息lat字段失败 |
107021 | 解析请求中经度信息lng字段失败 |
107022 | 解析请求中经纬度精度location_accuracy字段失败 |
107023 | 解析请求中是否支持大规格插屏广告support_full_screen_interstitial字段失败 |
107024 | 解析请求中操作系统os_version字段失败 |
107025 | 解析请求中屏幕宽度screen_width字段失败 |
107026 | 解析请求中屏幕高度screen_height字段失败 |
107027 | 解析请求中pos字段失败 |
107028 | 解析请求中media字段失败 |
107029 | 请求中缺少合法的广告位宽度或高度 |
107030 | 请求中app包名与广告位在联盟平台的设置不匹配 |
107031 | 解析请求中设备制造商manufacturer字段失败 |
107032 | 解析请求中设备类型device_type字段失败 |
107033 | 请求中缺少合法的设备id |
107034 | 错误的sdk接口调用,常见原因比如使用原生广告位id但调用开屏广告位接口 |
107035 | 不支持模板视频广告的sdk版本,请升级sdk版本或广告位配置为不展示视频广告 |
107036 | 禁止广告展示页面嵌在iframe中 |
107037 | 非预期的process_time字段 |
107038 | 非预期的trace_id字段 |
107039 | 不合法的trace_id |
107040 | 错误的sdk接口调用,常见原因比如使用自渲染2.0广告位id但调用自渲染1.0接口 |
107041 | sdk版本已经废弃,需更新 |
107042 | 请求中adx_id不合法 |
107043 | 过滤app名称参数错误 |
107044 | 请求中oaid无效 |
107045 | 请求中aid_ticket无效 |
107046 | 请求中taid_ticket无效 |
107047 | sdk的banner插屏1.0已废弃,请通过2.0接入 |
107048 | sdk的原生自渲染1.0已废弃,请通过2.0接入 |
107049 | Js旧准入规则已废弃,请升级准入规则 |
107050 | sdk接口与广告位不匹配。广告位是模板2.0广告位,请调用sdk模板2.0接口请求广告 |
107051 | 解析请求中设备启动时间device_start_sec字段失败 |
107052 | 解析请求中国家country字段失败 |
107053 | 解析请求中语言language字段失败 |
107054 | 解析请求中设备名称的MD5值device_name_md5字段失败 |
107055 | 解析请求中设备machine值hardware_machine字段失败 |
107056 | 解析请求中设备model值hardware_model字段失败 |
107057 | 解析请求中物理内存physical_memory_byte字段失败 |
107058 | 解析请求中硬盘大小harddisk_size_byte字段失败 |
107059 | 解析请求中系统更新时间system_update_sec字段失败 |
107060 | 解析请求中时区time_zone字段失败 |
107061 | 解析请求network中客户端IP字段失败 |
107062 | 解析请求network中客户端UserAgent字段失败 |
107063 | 联盟场景标签未开启 |
107064 | SDK聚合请求中广告位组id不存在 |
107065 | SDK请求中app_id不匹配 |
107066 | 解析请求中qaid字段失败 |
107067 | 解析请求中qaid_version字段失败 |
107068 | 解析请求中wx_api_ver字段失败 |
107069 | 解析请求中wx_installed字段失败 |
107070 | 解析请求中opensdk_ver字段失败 |
107071 | 请求中缺少部分参数 |
107072 | 广告位CORS域名与广告位所属媒体在联盟平台关联的域名不一致 |
107073 | 请求签名校验不通过 |
107074 | 请求没有携带签名信息 |
107075 | 请求媒体未查询到app secret |
广告点击交互处理流程
请求接口响应返回相关URL说明
- customized_invoke_url: 应用直达url,调用后调起广告主应用;请求环节pos JSON对象中 deep_link_version 字段等于1时,可能会返回 customized_invoke_url,否则不返回。
- universal_link: iOS Universal Link,调用后调起广告主应用;iOS端可能会返回 universal_link。
- quick_app_link: 快应用url,调用后跳转快应用;请求环节pos JSON对象中 support_quick_app 字段等于true时,可能会返回 quick_app_link,否则不返回。
- market_url: 厂商应用商店下载页url,调用后跳转应用商店进行下载;请求参数中 support_app_store 字段等于1时,可能会返回 market_url,否则不返回。
- wechat_app_username / wechat_app_path:小程序原始id 和 拉起小程序页面的可带参路径,需调用微信openSDK跳转至微信小程序/小游戏;请求环节device JSON对象中回传了 opensdk_ver / wx_api_ver / wx_installed 时,可能会返回 wechat_app_username 和 wechat_app_path。
- wechat_canvas: 微信原生页广告跳转信息,需调用微信openSDK跳转至微信原生页:请求传了support_wechat_canvas / opensdk_ver / wx_api_ver / wx_installed 时,可能会返回wechat_canvas。
- package_url: 应用下载url,调用后直接下载apk应用包;APP下载类广告(interact_type=1)广告必定返回。
- app_id: iOS应用id,需调用iOS系统接口拉起app store的应用下载页面;iOS端可能会返回 app_id。
- landing_page_url: 落地页url,调用后跳转对应落地页;所有广告必定返回。
不同类型广告返回的URL
注:
(1) 广告请求响应 interact_type=0 是打开网页类广告,interact_type=1 是APP下载类广告。
(2) iOS设备上所有广告都是打开网页类广告。
跳转URL字段 | Android APP下载类广告 |
Android 打开网页类广告 |
iOS 打开网页类广告 |
---|---|---|---|
universal_link | × | × | √ |
customized_invoke_url | √ | √ | √ |
quick_app_link | × | √ | × |
market_url | √ | × | × |
wechat_app_username wechat_app_path |
× | √ | √ |
wechat_canvas | √ | √ | √ |
package_url | √ | × | × |
app_id | × | × | √ |
landing_page_url | √ | √ | √ |
点击交互处理逻辑
1.Android端
(1) 整体逻辑

(2) APP下载类广告(interact_type=1)
- 跳转url优先级:customized_invoke_url > market_url > package_url > wechat_canvas > landing_page_url
- 媒体根据支持的跳转类型及返回的相关字段,按上述优先级进行跳转处理
- 针对应用直达广告(customized_invoke_url存在),调用customized_invoke_url字段调起应用,调起失败调用landing_page_url进行兜底
- 针对非应用直达广告,支持厂商应用商店下载时(market_url存在),优先调用market_url跳转厂商应用商店下载页面进行app下载
- 不支持厂商应用商店下载时可选择调用package_url,优量汇要求开发者调用package_url下载应用前,配合使用app_info_url等字段,通过弹窗等形式向用户展示应用名称、版本等应用相关信息,提示用户是否确认进行下载
- 不支持直接下载应用时,如果有wechat_canvas返回,则跳转微信原生页,否则调用landing_page_url跳转落地页
(3) 打开网页类广告(interact_type=0)
跳转url优先级:customized_invoke_url > quick_app_link > wechat_app_username / wechat_app_path > wechat_canvas > landing_page_url
- 媒体根据支持的跳转类型及返回的相关字段,按上述优先级进行跳转处理
- 针对应用直达广告(customized_invoke_url存在),调用customized_invoke_url字段调起应用,调起失败时调用landing_page_url进行兜底
- 针对非应用直达广告,属于快应用广告时(quick_app_link存在),调用quick_app_link调起快应用,调起失败时调用landing_page_url进行兜底
- 针对非应用直达和非快应用广告,属于微信小程序/小游戏广告时(wechat_app_username / wechat_app_path存在),优先调用微信 openSDK 处理 wechat_app_username / wechat_app_path 字段,跳转至微信小程序/小游戏页面
- 针对非应用直达、非快应用和非微信小程序/小游戏广告,属于微信原生页广告时,调用微信 openSDK 处理wechat_canvas 字段,跳转至微信原生页
- 针对非应用直达、非快应用、非微信小程序/小游戏和非微信原生页广告,调用landing_page_url跳转落地页
2.iOS端
(1) 整体逻辑

(2) 打开网页类广告(interact_type=0)
- 跳转url优先级:universal_link > customized_invoke_url > wechat_app_username / wechat_app_path > app_id > wechat_canvas > landing_page_url
- 媒体根据支持的跳转类型及返回的相关字段,按上述优先级进行跳转处理
- universal_link字段存在时,优先调用universal_link字段调起应用,调起失败调用landing_page_url进行兜底
- universal_link字段不存在,customized_invoke_url字段存在时,调用customized_invoke_url字段调起应用,调起失败调用landing_page_url进行兜底
- 针对非应用直达广告(universal_link / customized_invoke_url均不存在),属于微信小程序/小游戏广告时(wechat_app_username / wechat_app_path存在),优先调用微信 openSDK 处理 wechat_app_username / wechat_app_path 字段,跳转至微信小程序/小游戏页面
- 针对非应用直达且非微信小程序/小游戏广告,app_id字段存在时,优先通过iOS系统接口调用app_id字段,拉起苹果应用商店app store对应页面进行app下载,调用方法详见苹果官方文档指引
- 针对非应用直达、非快应用和非微信小程序/小游戏广告,属于微信原生页广告时,调用微信 openSDK 处理wechat_canvas 字段,跳转至微信原生页
- 上述应用直达URL、微信小程序小游戏URL、iOS应用ID字段、微信原生页字段均不存在时,调用landing_page_url跳转落地页
应用直达广告处理逻辑
权限申请
应用直达广告是一种特殊形式的广告形式。需要开发者具有一定的处理能力才能确保直达率满足平台的要求。因此,此类广告只针对部分开发者开放权限,并需要配合完成审核验证,才能准许播放。具体的申请方式,可与联盟对接运营接口人联系获取。
请求处理
在请求环节,pos JSON对象中的deep_link_version字段需要填写1,只有填写1的情况下才可能请求到应用直达广告。
在响应环节, list JSON数组元素(广告)中的2个字段需要处理:
- customized_invoke_url:应用直达的url
- universal_link:iOS Universal Link(仅iOS端返回)
应用广告过滤处理
应用直达类广告为保证直达率,部分广告主往往会选择已安装或未安装定向。优量汇强烈建议开发者在曝光广告前判断广告定向条件与用户真实的应用安装情况是否符合,如果符合预期则展示广告,否则需将广告过滤,相关逻辑详见 转化上报-应用安装上报与过滤策略应用。
点击处理
在响应环节, list JSON数组元素(广告)中的 universal_link 或 customized_invoke_url 是跳转至广告对应app应用的url。当用户发生点击时,需要正常进行点击的上报,并调用上述字段进行跳转。当唤起目标app失败时,则调用 landing_page_url 进行跳转作为兜底处理
转化处理
为追踪分析媒体或广告位的应用直达调起效果,需要开发者上报两个相关事件:应用直达广告尝试唤起APP、应用直达广告唤起APP成功。相关逻辑详见 转化上报。
上报正常的情况下,尝试上报的次数-唤起成功的次数=唤起失败的次数。
联调测试
联调测试时,针对开通了应用直达类广告权限的开发者,除了常规的联调测试外,需要额外进行上文中广告过滤处理、点击处理和转化处理中要求的测试。
厂商应用商店下载类广告处理逻辑
请求处理
在请求环节,请求参数中的 support_app_store 字段需要填写1,只有填写1的情况下才可能请求到厂商应用商店下载类广告。
在响应环节,list JSON数组元素(广告)中的1个字段需要处理:
- market_url:厂商应用商店下载页url。
点击处理
在响应环节,list JSON数组元素(广告)中的 market_url 是厂商应用商店下载页面的url。当用户发生点击时,需要正常进行点击上报,并调用market_url,跳转至厂商应用商店内页面。
联调测试
联调测试时,需针对上述请求处理、厂商应用商店下载页面url的调起、点击处理中的要求进行测试。
微信小程序/小游戏广告处理逻辑
微信小程序/小游戏广告是指用户点击广告后,将跳转至微信打开微信小程序/小游戏,在微信内部发生后续的行为转化。优量汇新版本DSP-B协议文档已支持微信小程序/小游戏广告,开发者可按照以下方式接入微信小程序/小游戏广告。
前置条件
开发者接入微信小程序/小游戏广告前,需要
- 进入微信开放平台创建移动应用
- 应用创建完成后,在微信开放平台获取到相应的 AppID 和 Universal Links(仅iOS端需要Ulink)
- 在开发者APP内嵌入最新版微信openSDK,详细方法及资源详见微信开放文档
- 在优量汇开发者平台,将微信开放平台填写的 AppID 和 Universal Links 与当前应用进行关联
请求参数
在请求环节,device JSON对象中的下列字段(均可通过微信openSDK提供的接口获取到)需要为必填:
1.Android端
- wx_api_ver:用户微信版本号
- opensdk_ver:微信 openSDK 版本
2.iOS端
- wx_installed:用户是否已安装微信
- opensdk_ver:微信 openSDK 版本
当校验符合要求时,可能请求到微信小程序/小游戏广告,其中openSDK版本要求 Android端 >= 5.3.1,iOS端 >= 1.8.6。不回传opensdk_ver将不返回微信小程序/小游戏广告
上述字段均可通过openSDK提供的接口获取,回传上述字段可优化微信小程序/小游戏广告转化效果,提升变现收益
- opensdk_ver:Android端可通过 Build.SDK_INT / iOS端可通过 [WXApi getApiVersion] 得到
- wx_api_ver:可通过 api.getWXAppSupportAPI() 得到
- wx_installed:可通过 api.isWXAppInstalled() 得到
响应字段
在响应环节,list JSON数组元素(广告)中的3个字段需要处理:
- wechat_app_username:小程序原始id
- wechat_app_path:拉起小程序页面的可带参路径
- wechat_app_ext_data:拉起小程序附加信息
开发者可调用openSDK并填写上述参数后,调起微信进入对应小程序页面,其中调用open SDK需要的字段 拉起小程序的类型 miniProgramType 默认填写0(正式版),因此不包括在响应字段内。
调用openSDK跳转微信小程序的具体方式可参考iOS流量指引、Android流量指引。
openSDK调用示例:
// Android
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.path = "wechat_app_path值";
req.userName = "wechat_app_username值";
req.extData = "wechat_app_ext_data值";
api.sendReq(req);
// iOS
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
launchMiniProgramReq.userName = "wechat_app_username值";
launchMiniProgramReq.path = "wechat_app_path值";
launchMiniProgramReq.extMsg = "wechat_app_ext_data值";
return [WXApi sendReq:launchMiniProgramReq];
微信原生页广告处理逻辑
微信原生页广告是指用户点击广告后,将跳转至微信打开原生页,在微信内部发生后续的行为转化。优量汇新版本DSP-B协议文档已支持微信原生页广告,开发者可按照以下方式接入微信原生页广告。
前置条件
与微信小程序/小游戏广告条件相同,详见微信小程序/小游戏广告处理逻辑
请求参数
在请求环节,pos JSON对象中的下列字段必填:
- support_wechat_canvas:是否支持微信原生页广告,支持时传true
同时device JSON对象中的下列字段(均可通过微信openSDK提供的接口获取到)需要为必填:
1.Android端
- wx_api_ver:用户微信内SDK版本
- opensdk_ver:微信 openSDK 版本
2.iOS端
- wx_installed:用户是否已安装微信
- opensdk_ver:微信 openSDK 版本
响应字段
在响应环节,list JSON数组元素(广告)中的1个字段需要处理:
- wechat_canvas:拉起微信原生页信息
openSDK调用方式
WXOpenBusinessView.Req req = new WXOpenBusinessView.Req();
req.businessType = "nativeOpenAdCanvas"; // 固定值
req.extInfo = "wechat_canvas值";
boolean ret = api.sendReq(req);
快应用广告处理逻辑
请求处理
在请求环节,pos JSON对象中的support_quick_app字段需要填写true,只有填写true的情况下才可能请求到快应用广告。
在响应环节,list JSON数组元素(广告)中的1个字段需要处理:
- quick_app_link:快应用url。
点击处理
在响应环节,list JSON数组元素(广告)中的 quick_app_link 是快应用的url。当用户发生点击时,需要正常进行点击上报,并调用quick_app_link,跳转至快应用页面。当调起快应用失败时,则调用 landing_page_url 进行跳转作为兜底处理
联调测试
联调测试时,需针对上述请求处理、快应用url的调起、点击处理中的要求进行测试。
ios设备型号取值列表
系统返回原始值 | 取值 | 系统返回原始值 | 取值 | 系统返回原始值 | 取值 | ||
---|---|---|---|---|---|---|---|
iPhone1,1 | iPhone 1 | iPad1,1 | iPad | iPod1,1 | iPod Touch 1 | ||
iPhone1,2 | iPhone 3G | iPad2,1 | iPad 2 | iPad4,7 | iPad Mini 3 | ||
iPhone2,1 | iPhone 3GS | iPad2,2 | iPad 2 | iPad4,8 | iPadMini 3 | ||
iPhone3,1 | iPhone 4 | iPad2,3 | iPad 2 | iPad4,9 | iPad Mini 3 | ||
iPhone3,2 | iPhone 4 | iPad2,4 | iPad 2 | iPad5,1 | iPad Mini 4 | ||
iPhone3,3 | iPhone 4 | iPad3,1 | iPad 3 | iPad5,2 | iPad Mini 4 | ||
iPhone4,1 | iPhone 4S | iPad3,2 | iPad 3 | iPad5,3 | iPad Air 2 | ||
iPhone5,1 | iPhone 5 | iPad3,3 | iPad 3 | iPad5,4 | iPad Air 2 | ||
iPhone5,2 | iPhone 5 | iPad3,4 | iPad 4 | iPod2,1 | iPod Touch 2 | ||
iPhone5,3 | iPhone 5c | iPad3,5 | iPad 4 | iPod3,1 | iPod Touch 3 | ||
iPhone5,4 | iPhone 5c | iPad3,6 | iPad 4 | iPod4,1 | iPod Touch 4 | ||
iPhone6,1 | iPhone 5s | iPad2,5 | iPad Mini | iPod5,1 | iPod Touch 5 | ||
iPhone6,2 | iPhone 5s | iPad2,6 | iPad Mini | iPod6,1 | iPod Touch 6 | ||
iPhone7,1 | iPhone 6 Plus | iPad2,7 | iPad Mini | i386 | 32-bit Simulator | ||
iPhone7,2 | iPhone 6 | iPad4,1 | iPad Air | x86_64 | 64-bit Simulator | ||
iPhone8,1 | iPhone 6s | iPad4,2 | iPad Air | ||||
iPhone8,2 | iPhone 6s Plus | iPad4,3 | iPad Air | ||||
iPhone8,4 | iPhone SE | iPad4,4 | iPad Mini 2 | ||||
iPhone9,3 | iPhone 7 | iPad4,5 | iPad Mini 2 | ||||
iPhone9,4 | iPhone 7 Plus | iPad4,6 | iPad Mini 2 |
广告渲染样式示例


