跳到主要内容

章鱼移动广告平台流量方 API 接入文档


版本历史

版本日期备注
1.02018-01-28初版
1.02018-01-311.0 版本完成
1.12020-03-29参数修改:安卓传 oaid;视频广告修改;下载广告增加
1.22020-06-05参数增加: device 增加 ssid、rom_version、sys_compiling_time;
1.32021-04-12增加: hms、ag、maker、ppi;
1.42021-07-21参数修改:imei 格式问题;
1.52021-09-09增加 os 参数值
1.62021-10-26增加 ad_type, 增加 imeimd5、macmd5
1.72022-01-14参数添加:device 增加 boot_mark; update_mark aaid_ios 响应添加:wx_mini_user、wx_mini_path
1.82022-03-07更新错误响应代码
1.92022-04-08添加设备唯一 id 规范过滤和操作系统版本过低过滤
1.9.12022-04-11新添字段 androidid_md5
2.02022-04-20添加广协 CAID 方案所需参数
2.0.12022-07-14添加请求底价 bidfloor 并添加曝光结算价格宏替换
2.0.22022-10-08添加点击坐标宏替换
2.12022-10-03添加上报时间戳宏替换
3.02022-11-17修改 api 文档格式更新响应示例并添加新宏替换参数{TS_S}、{TS_M}
3.12022-12-05添加 app 包名列表:app_list
3.22023-01-12添加是否支持视频素材: is_video
3.32023-03-08vendor 字段更新
3.42023-05-06新增 post 请求方式
3.52023-05-22优化点击坐标宏替换
3.5.12023-06-15新增 paid 参数
3.5.22023-12-08新增下载类参数详情参见 download 对象
3.5.32024-2-01新增 oaid_md5
3.5.42024-2-28新增 mac 参数格式校验
3.5.52024-3-22新增竞价失败上报

广告请求

接口使用 HTTP 协议,参数通过 POST 方式传递,支持长链接。

注意:请求为 post 请求时需在请求地址后添加技术分配的关键字(例如:http://test.s.adintl.cn/t/s2s/ZYYD)

正式接口地址需在测试环境测试没问题后向我方申请

测试接口地址: http://test.s.adintl.cn/t/s2s/技术分配关键字

请求参数:

BidRequest

名称类型是否必填描述
versionstringapi 版本。形如 major.minor,当前版本取值:2.1
idstring请求唯一标识
imparray of ImpObjectimp 对象
slot_idstring广告位 ID-由章鱼移动广告平台生成
bidfloordouble可选请求底价(RTB 必填 单位为分)
is_videoString可选是否支持视频素材 “1”:支持视频素材 “0”:不支持视频素材, 默认为 0
ipstring手机终端的 ip
appAppObjectapp 信息
deviceDeviceoObject设备相关信息
gpsGpsObject选填地理位置信息

ImpObject

名称类型是否必填描述
idstring请求唯一标识与 bidRequest 中 id 相同
bidfloordouble可选请求底价(RTB 必填 单位为分)

AppObject

名称类型是否必填描述
namestringapp name
versionstringapp 版本
bundlestringapp 包名。对于 Android,是应用的 packageName;对于 iOS,是 Bundle identifier

DeviceoObject

名称类型是否必填描述
osstring操作系统类型 1:android;2:ios; 3: ott 终端 (最终请求数据传 1 2 3)
os_versionstring操作系统版本
connectiontypeint联网方式 0: 其它 1: WIFI, 2: 2G, 3: 3G, 4: 4G, 5: 5G
uastring设备的 user-agent,若没有该字段则需要在 http header 中填充设备的 ua
widthint选填屏幕宽。取设备物理像素
heightint选填屏幕高。取设备物理像素
imeistringAndroid 必填。手机设备的 IMEI,格式要求 [0-9]15
imeimd5stringimei 的 md5 值,32 位小写
boot_markstring选填设备相关标识
update_markstring选填设备相关标识
aaid_iosstring选填阿里设备标识
oaidstringAndroid 必填。安卓必填,因 andoridQ 版本无法获取 imei
oaid_md5string-
paidstring选填拼多多 IOS 设备标识
idfastringiOS 必填。iOS 设备的 IDFA,格式要求 [0-9a-fA-F]8-[0-9a-fA-F]4-[0-9a-fA-F]4-[0-9a-fA-F]4-[0-9a-fA-F]12
openudidstringiOS 必填。iOS 设备唯一标志码,idfa 关闭时使用
caidstringiOS 需要 中广协 CAID
caidVerstringiOS 需要 caid 对应的版本号
carrierint选填运营商 0: 其它,1: 移动,2:联通,3: 电信
extExtObject配置信息拓展
ssidstring⽆线⽹ SSID 名称,如获取不到可传空,例如:wifi ssid MGSSID
rom_versionstring⼿机 ROM 的版本,如获取不到可传空
androidid_md5stringandroid 用户终端的 AndroidID MD5 值
aaidstringAndroid Advertising ID
modelstring必填设备型号
hmsstring选填华为应用市场的版本号(华为必填)
agstring选填华为 AG 的版本号(华为必填)
makestring必填手机硬件制造商/ 设备品牌
ppiint必填屏幕像素密度
hardware_machinestring选填设备 machine _ caid 必传参数 _
startup_timestring选填设备启动时间 _ caid 必传参数 _
mb_timestring选填系统版本更新时间 _ caid 必传参数 _
country_codestring选填国家 _ caid 必传参数 _
carrier_namestring选填运营商名称 _ caid 必传参数 _
mem_totalint选填内存空间,字节 _ caid 必传参数 _
disk_totalint选填磁盘总空间,字节 _ caid 必传参数 _
local_tz_namestring选填时区 _ caid 必传参数 _
hardware_modelstring选填设备 model _ caid 必传参数 _
ios_os_versionstring选填系统版本 _ caid 必传参数 _
languagestring选填语言 _ caid 必传参数 _
phone_namestring选填设备名称(小写 MD5) _ caid 必传参数 _
auth_statusstring选填广告授权情况
cpu_numstring选填cpu 数目
app_liststring选填app 包名列表 (多个以逗号分割例如:"com.xxx,com.xxx,com.xxx")
geoGpsObject选填地理位置信息

ExtObject

名称类型是否必填描述
macstring必填设备 WiFi 网卡 MAC 地址
macmd5string选填mac 的 md5 值, 32 位小写
androidIdstring必填android 用户终端的 AndroidID
aaidstringAndroid Advertising ID

GpsObject

名称类型是否必填描述
latfloat选填纬度
lngfloat选填经度
timestampfloat选填获取经纬度的时间。其值为从 GMT 1970-01-01 00:00:00 至今的秒值

请求示例:

post 请求:
{
"app": {
"bundle": "com.test",
"name": "test",
"version": "1.6.0"
},
"bidfloor": 0.0,
"device": {
"androidid_md5": "22",
"carrier": 0,
"connectiontype": 4,
"country_code": "CN",
"cpu_num": "8",
"disk_total": 116641464320,
"ext": {
"androidId": "1111111111111111",
"mac": "20:00:00:00:00:00",
"macmd5": "macmd5"
},
"hardware_machine": "PD2057",
"hardware_model": "V2057A",
"height": 2216,
"hms": "39920",
"ios_os_version": "10",
"language": "zh",
"local_tz_name": "中国标准时间",
"make": "vivo",
"mem_total": 7920685056,
"model": "V2057A",
"oaid": "00000-00000-0000",
"paid": "adada",
"imei": "000001000001000",
"imeimd5": "00000000000000000000000000000000",
"os": "1",
"os_version": "10",
"ppi": 480,
"ua": "ua",
"width": 1080
},
"id": "1659035906721587200",
"imp": [
{
"bidfloor": 1.0,
"id": "1659035906721587200",
"secure": 1
}
],
"ip": "127.0.0.1",
"is_video": "0",
"slot_id": "10001",
"version": "2.1"
}

广告响应

BidResponse

属性类型描述
codeInt响应编码。详情查看 3.2 响应状态码解释
resp_idString响应唯一标识
dataBidDataObject响应的广告内容

BidDataObject

属性类型描述
adsarray of AdsObject; optional广告列表

AdsObject

属性类型描述
ad_typeint; optional落地页类型 1:普通跳转类 2:下载类 3:小程序
priceint; optional价格(单位分)
adidString; optional广告主 id
nativeNativeObject; optionalNative 对象

NativeObject

属性类型描述
assetsarray of AssetObject; requiredasset 列表, 根据 request 里的 asset id, 填充相应的物料。
linkLinkObject; requiredNative 广告点击目标地址
downloadDownloadObject; optional下载类对象
imptrackersarray; optionalimpression 跟踪列表, 当广告发生展示时触发,通常返回 204 或者 1*1 的跟踪图片。(RTB 模式需要价格宏替换 详细参考 3.1 支持的宏替换)
lurlstring竞价失败上报 需支持宏替换 详情参考 3.1 支持的宏替换
wx_mini_userstring; optional微信小程序原始 id
wx_mini_pathstring; optional微信小程序路径
download_track_urlsarray; optional下载行为上报地址集合,当通过广告开始下载时,需要向该集合中所有的 url 发送请求。
downloaded_track_urlsarray; optional下载完成上报地址集合,当通过广告下载完成时,需要向该集合中所有的 url 发送请求
installed_track_urlsarray; optional安装完成上报地址集合,当通过广告下载后并安装完成时,需要向该集合中所有的 url 发送请求
open_track_urlsarray; optional安装完成后打开 app 上报
deeplinktrackersarray of DeeplinkImp; optionaldeeplink 相关上报

DownloadObject

属性类型描述
app_namestring; optionalAPP 名称
package_namestring; optionalAPP 包名
app_descstring; optionalapp 描述
app_versionstring; optionalAPP 版本号
developer_namestring; optional开发者信息
privacy_urlstring; optional隐私协议链接
permissions_urlstring; optional用户权限链接
app_download_urlstring; optional下载地址
app_icon_urlstring; optionalapp icon 图片地址
app_sizeint; optional下载包大小,单位 B
file_md5string; optional文件 md5

DeeplinkImp

属性类型描述
eventint; requireddeeplink 相关事件类型,⻅附录 deeplink 事件
impstring array; optionaldeeplink 相关事件的监控地址

deeplink 事件

描述
101deeplink 检测到已安装
102deeplink 检测未安装(未安装调起失败)
103deeplink 安装调起成功
104deeplink 安装调起失败

AssetObject

属性类型描述
idint; required章鱼内部使用
titleTitleObject; optionaltitle 对象
imgImageObject; optionalimage 对象
videoVideoObject; optionalvideo 对象
dataDataObject; optionaldata 对象

DataObject

属性类型描述
valuestring; required描述信息

TitleObject

属性类型描述
textstring; requiredtitle 文本

ImageObject

属性类型描述
urlstring; required图片 url
wint;图片宽度, 单位象素
wminint; recommended图片最小宽度, 单位象素
hint;图片高度, 单位象素
hminint; recommended图片最小高度, 单位象素
typeint;图片类型 1. ICON 表示 logo 等小图标 3. MAIN 素材的图片 (如信息流广告中的广告主 LOGO,三图, 则 1 代表 LOGO,3 代表其他三图)

VideoObject

属性类型描述
video_urlstring; required视频 url
cover_urlstring; required封面图 url
durationint;recommended广告时长,单位为秒
cover_widthint; recommended封面图片宽度, 单位象素
cover_heightint; recommended封面图片高度, 单位象素
event_imparray of EventImp视频播放相关监控

EventImpObject

属性类型描述
eventint; required视频播放相关事件类型,见附录视频播放事件
impstring array; optional视频播放相关事件的监控地址

视频播放事件

描述
0播放开始
1四分之一
2二分之一
3四分之三
4播放完成
5用户暂停播放
6用户退出播放

LinkObject

属性类型描述
urlstring; required广告目标地址
clicktrackersstring array; optional第三方的跟踪 tURLs, 当用户发生广告点击时触发(部分需支持点击坐标宏替换 详情查看 3.1)
fallbackstring; optional用于 deeplink 广告,如果存在该字段,且不为空,则会认为广告需要做 deeplink 跳转; url 字段是 deep link, 当用户没有对应的 App, 则使用 fallback 里的 url

响应示例:

{
"code": 0, // 0:成功 非 0:失败 (详细参考3.2响应状态码解释响)
"resp_id": "87850d203e314ca78bef4235d95dbf1c", // 响应 id,定位唯一的响应
"data": {
"ads": [
{
"id": "648d8ec2642c4febb902682a02925627", // 标识唯一 ID
"ad_type": 1, // 1:普通跳转类 2:下载类 3:小程序
"native": {
"assets": [
{
"id": 0, // 无实际意义
"img": { //图片素材
"url": "https://x.xxxxx.xx/creatives-assets/prod/feupload/user/3qok7/f8132c80-fcad-11eb-b627-030776f72f2f.jpg",
"w": 640,
"h": 960,
"type": 3
}
},
{
"id": 1,
"title": {
"text": "标题信息"
}
},
{
"id": 2,
"data": {
"text": "描述信息"
}
},
{
"id": 6,
"video": { //视频素材
"duration": 22,
"cover_url": "https://xxx.jpg",
"video_url": "https://xxx.mp4",
//视频检测链接
"event_imp": [
{
"event": 4,
"imp": [
"http://127.0.0.1:20009/video/complete"
]
},
{
"event": 1,
"imp": [
"http://127.0.0.1:20009/video/quarter"
]
},
{
"event": 2,
"imp": [
"http://127.0.0.1:20009/video/half"
]
},
{
"event": 3,
"imp": [
"http://127.0.0.1:20009/video/treequarter"
]
},
{
"event": 5,
"imp": [
"http://127.0.0.1:20009/video/paused"
]
},
{
"event": 6,
"imp": [
"http://127.0.0.1:20009/video/quit"
]
}
],
"cover_width": 640,
"cover_height": 960
},
"required": 1
}
],
"download":{
"app_name":"xx",
"app_version":"1.1.0",
"app_size":1024,
"file_md5":"xx",
"package_name":"xx",
"developer_name":"xx",
"privacy_url":"xx",
"app_icon_url":"xx",
"app_desc":"xx",
"app_download_url":"xx",
"permissions_url":"xx"
},
"link": {
"url": "https://x.xxxxx.xx/stage/download.html?url=xxxxxx",
"fallback": "https://x.xxxxx.xx/stage/download.html?url=xxxxxx",
"clicktrackers": [
"http://127.0.0.1:20009/clk?ex=xxxxxx"
]
},
"imptrackers": [
"http://127.0.0.1:20009/win?ads=s2s&ex=xxxxxx"
],
"wx_mini_user": "setWx_mini_user test",
"wx_mini_path": "setWx_mini_path test",
"download_track_urls": [
"https://x.xxxxx.xx/dd1?code=0&rid=87850d203e314ca78bef4235d95dbf1c"
],
"downloaded_track_urls": [
"https://x.xxxxx.xx/dd2?code=0&rid=87850d203e314ca78bef4235d95dbf1c"
],
"installed_track_urls": [
"https://x.xxxxx.xx/i1?code=0&rid=87850d203e314ca78bef4235d95dbf1c"
],
"open_track_urls": [
"https://x.xxxxx.xx/o1?code=0&rid=87850d203e314ca78bef4235d95dbf1c"
],
"deeplinktrackers": [
{
"event": 103,
"imp": [
"http://127.0.0.1:20009/deepLink?ex=xxxxxx",
"https://x.xxxxx.xx/dp?code=103&rid=87850d203e314ca78bef4235d95dbf1c"
]
}
]
},
"price": 5013, //出价(单位为分)
"adid": "10698"
}
]
}
}

参数获取方式参考

//获取 AG 版本号
private static String directGetAgVersionCode(Context context) {
  String version;
  version = getVersionCode(context, Constants.AG_PACKAGE); if (version == null)
{
  version = Constants.NOT_FOUND;
}
return version;
}
其中 Constants.AG_PACKAGE 为华为应用市场,如 com.huawei.appmarket


// 获取 HMS 版本号
public static String directGetHmsVersionCode(Context context) {
   String version;
   version = getVersionCode(context, Constants.HMS_PACKAGE);
   if (version == null) {
     version = Constants.NOT_FOUND;
   }
  return version;
}

// 根据包名获取应用版本号
public static String getVersionCode(Context context, String pkgName) {
  try {
    PackageInfo pkgInfo = ApkUtil.getPackageInfo(context, pkgName);
    return pkgInfo == null ? null : String.valueOf(pkgInfo.versionCode);
  } catch (AndroidRuntimeException e) {
    HiAdLog.w(TAG, "getVersionCode fail");
  } catch (Exception e) {
  HiAdLog.w(TAG, "getVersionCode fail");
  }
  return null;
}
其中 Constants.HMS_PACKAGE 为 HMS core 包名,如 com.huawei.hwid



设备启动时间
static time_t bootSecTime(){
struct timeval boottime;
size_t len = sizeof(boottime);
int mib[2] = { CTL KERN, KERN BOOTTIME };
if( sysctl(mib, 2, &boottime, &len, NULL, 0) < 0 ) {
return 0;
}
return boottime.tv sec;
}
+(NSString *)bootTimeInSec
{
return [NSString stringWithFormat:@"%ld",bootSecTime()];
}

国家
+(NSString *)countryCode
{
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey:NSLocaleCountryCode];
return countryCode;
}

语言
+(NSString *)language {
NSString *language;
NSLocale *locale = [NSLocale currentLocale];
if ([[NSLocale preferredLanguages] count] > 0) {
language = [[NSLocale preferredLanguages]objectAtIndex:0];
}else {
language = [locale objectForKey:NSLocaleLanguageCode];
}
return language;
}

设备名称
+(NSString *)deviceName
{
if ([[[UIDevice currentDevice] name] length] == 0)
{
return nil;
}
return [CAIDMD5Util md5HexDigest:[[UIDevice currentDevice] name]];
}

系统版本
+(NSString *)systemVersion
{
return [[UIDevice currentDevice] systemVersion];
}

设备Machine
+(NSString *)machine
{
NSString *machine = getSystemHardwareByName(SIDFAMachine);
return machine == nil ? @"" : machine;
}
static const char *SIDFAMachine = "hw.machine";
static NSString *getSystemHardwareByName(const char *typeSpecifier) {
size_t size;
sysctlbyname(typeSpecifier, NULL, &size, NULL, 0);
char *answer = malloc(size);
sysctlbyname(typeSpecifier, answer, &size, NULL, 0);
NSString *results = [NSString stringWithUTF8String:answer];
free(answer);
return results;
}

运营商 
此部分代码需映射 {{string1}} =中国移动 {{string2 }}=中国联通 {{string3 }}=中国电信 {{string4 }}=中国卫通 {{string5 }}=中国铁通
+(NSString* )carrierInfo {
#if TARGET_IPHONE_SIMULATOR
return @"SIMULATOR";
#else
static dispatch_queue_t_queue;
static dispatch_once_t once;
dispatch_once(&once, ^{
_queue = dispatch_queue_create([[NSString stringWithFormat:@com.carr.%@
, self] UTF8String], NULL);
});
block NSString * carr = nil;
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
dispatch_async(_queue, ^(){
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = nil;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 12.1)
{ if ([info respondsToSelector:@selector
(serviceSubscriberCellularProviders)]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availability-new"
NSArray *carrierKeysArray = [info.serviceSubscriberCellularProvide
rs
.allKeys sortedArrayUsingSelector:@selector(compare:)];
carrier = info.serviceSubscriberCellularProviders
[carrierKeysArray.firstObject];
if (!carrier.mobileNetworkCode) {
carrier = info.serviceSubscriberCellularProviders
[carrierKeysArray.lastObject];
}
#pragma clang diagnostic pop
}
}
if(!carrier) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated
declarations" carrier =
info.subscriberCellularProvider;
#pragma clang diagnostic pop
}
if (carrier != nil) {
NSString *networkCode = [carrier mobileNetworkCode];
NSString *countryCode = [carrier mobileCountryCode];
if (countryCode && [countryCode isEqualToString:@"460"] && networkCode)
{
if ([networkCode isEqualToString:@"00"] ||
[networkCode isEqualToString:@"02"] ||
[networkCode isEqualToString:@"07"] ||
[networkCode isEqualToString:@"08"]) {
carr= @"{{string1}}";
}
if ([networkCode isEqualToString:@"01"]
|| [networkCode isEqualToString:@"06"]
|| [networkCode isEqualToString:@"09"])
{
carr= @"{{string2}}";
}
if ([networkCode isEqualToString:@"03"]
|| [networkCode isEqualToString:@"05"]
|| [networkCode isEqualToString:@"11"])
{
carr= @"{{string3}}";
}
if ([networkCode isEqualToString:@"04"])
{
carr= @"{{string4}}";
}
if ([networkCode isEqualToString:@"20"])
{
carr= @"{{string5}}";
}
}else {
carr = [carrier.carrierName copy];
}
}
if (carr.length <= 0);
{
carr =@"unknown";
}
dispatch_semaphore_signal(semaphore);
});
dispatch_time_t t = dispatch_time(DISPATCH_TIME_NOW, 0.5* NSEC_PER_SEC);
dispatch_semaphore_wait(semaphore, t);
return [carr copy];
#endif

物理内存容量
+ (NSString *) memory
{
return [NSString stringWithFormat:@"%lld", [NSProcessInfo processInfo]
.physicalMemory];
}

硬盘容量
+(NSString *)disk
{
int64_t space = -1;
NSError *error = nil;
NSDictionary *attrs = [[NSFileManager defaultManager]
attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
if (!error) {
space = [[attrs objectForKey:NSFileSystemSize] longLongValue];
}
if(space < 0)
{
space = -1;
}
return [NSString stringWithFormat:@"%lld",space];
}

系统更新时间
+(NSString *)sysFileTime
{ NSString *result = nil;
NSString *information = @"L3Zhci9tb2JpbGUvTGlicmFyeS9Vc2VyQ29uZmlndXJhdGlvblBy
b2ZpbGVzL1B1YmxpY0luZm8vTUNNZXRhLnBsaXN0";
NSData *data=[[NSData alloc]initWithBase64EncodedString:information options:0]
;
NSString *dataString = [[NSString alloc]initWithData:data encoding:NSUTF8Strin
gEncoding];
NSError *error = nil;
NSDictionary *fileAttributes = [[NSFileManager defaultManager]
attributesOfItemAtPath:dataString error:&error];
if (fileAttributes) {
id singleAttibute = [fileAttributes
objectForKey:NSFileCreationDate];
if ([singleAttibuteisKindOfClass:[NSDate class]]) {
NSDate *dataDate = singleAttibute;
result = [NSString stringWithFormat:@"%f",[dataDate timeIntervalSince1
970]];
}
}
return result;
}

设备Model
+(NSString *)model
{
NSString *model = getSystemHardwareByName(SIDFAModel);
return model == nil ? @"" : model;
}

时区
+ (NSString *) timeZone
{
NSInteger offset = [NSTimeZone systemTimeZone].secondsFromGMT;
return [NSString stringWithFormat:@"%ld",(long)offset];
}

支持的宏替换

描述
PRICE曝光的最终拍卖价(RTB 模式需要在曝光链接中替换,目前支持明文 单位分)
{DOWN_X}相对于广告位,用户手指按下时的横坐标 如无法获取请填“-999” 单位逻辑像素 (仅用于点击上报链接)
{DOWN_Y}相对于广告位,用户手指按下时的纵坐标 如无法获取请填“-999” 单位逻辑像素 (仅用于点击上报链接)
{UP_X}相对于广告位,用户手指抬起时的横坐标 如无法获取请填“-999” 单位逻辑像素 (仅用于点击上报链接)
{UP_Y}相对于广告位,用户手指抬起时的纵坐标 如无法获取请填“-999” 单位逻辑像素 (仅用于点击上报链接)
DP_DOWN_X相对于广告位,用户手指按下时的横坐标 如无法获取请填“-999” 单位逻辑像素 (仅用于点击上报链接)
DP_DOWN_Y相对于广告位,用户手指按下时的纵坐标 如无法获取请填“-999” 单位逻辑像素 (仅用于点击上报链接)
DP_UP_X相对于广告位,用户手指抬起时的横坐标 如无法获取请填“-999” 单位逻辑像素 (仅用于点击上报链接)
DP_UP_Y相对于广告位,用户手指抬起时的纵坐标 如无法获取请填“-999” 单位逻辑像素 (仅用于点击上报链接)
{TS_S}事件发生时间戳 单位:秒
{TS_M}事件发生当前时间戳 单位:毫秒(13 位)
END_TS事件结束时时间戳,单位毫秒
END_SECONDS事件结束时间戳,单位秒
IP设备内网 IP
DP_WIDTH实际广告位的宽(完整广告位区域,不只是素材展示区域) 单位逻辑像素 (仅用于点击上报链接)
DP_HEIGHT实际广告位的高(完整广告位区域,不只是素材展示区域) 单位逻辑像素 (仅用于点击上报链接)
CLICKAREA点击区域:1-广告素材;2-按钮 (仅用于点击上报链接)
WIDTH实际广告位的宽 完整广告位区域,不只是素材展示区域) 单位像素 (仅用于点击上报链接)
HEIGHT实际广告位的高(完整广告位区域,不只是素材展示区域)单位像素 (仅用于点击上报链接)
S_DOWN_X相对于屏幕,用户手指按下去的 X 坐标 如无法获取请填“-999” 单位像素 (仅用于点击上报链接)
S_DOWN_Y相对于屏幕,用户手指按下去的 Y 坐标 如无法获取请填“-999” 单位像素 (仅用于点击上报链接)
S_UP_X相对于屏幕,用户手指离开时的 X 坐标 如无法获取请填“-999” 单位像素 (仅用于点击上报链接)
S_UP_Y相对于屏幕,用户手指离开时的 Y 坐标 如无法获取请填“-999” 单位像素 (仅用于点击上报链接)
IMP_AREA广告展示区域(涵盖按钮区域)像素坐标,含左上角坐标 (X1Y1)、右下角坐标(X2Y2),需替换为:X1_Y1_X2_Y2 (仅用于点击上报链接)
BUTTON_AREA广告按钮区域像素坐标,含左上角坐标(X1Y1)、 右下角坐标(X2Y2),需替换为:X1_Y1_X2_Y2 (仅用于点击上报链接)
CLICK_XY广告点击行为后上报广告点击的像素坐标(XY),需替换 为:X_Y (仅用于点击上报链接)
AD_LT_X广告左上角坐标 x,相对于广告位左上角 如无法获取请填“-999” (仅用于曝光上报链接)
AD_LT_Y广告左上角坐标 y,相对于广告位左上角 如无法获取请填“-999” (仅用于曝光上报链接)
AD_RB_X广告右下角坐标 x,相对于广告位左上角 如无法获取请填“-999” (仅用于曝光上报链接)
AD_RB_Y广告右下角坐标 y,相对于广告位左上角 如无法获取请填“-999” (仅用于曝光上报链接)
LOSS_REASON失败原因 (仅用于竞价失败上报链接) 10101:响应超时 10102:广告价格低
LOSS_PRICE竞胜者结算价 (仅用于竞价失败上报链接)

响应状态码解释

code响应状态码详细介绍
101缺少 ip
102缺少 device 对象
1021缺少 make/model
103缺少 os(设备操作系统类型)
104唯一设备信息与操作系统类型不符例: os:ios,imei:“1234567890”,idfa:“”
1041非法唯一设备 id 例如:00000000-0000-0000-0000-000000000000
1042ext 对象为 null/设备唯一 ID 异常(安卓 id 位 16 位或者 32 位 imei_md5 为 32 位 imei 为 15 位数字 oaid 16 位或者 64 位或者 36 位 )
1043安卓版本号过低(版本 8.0.0 以下)
1044mac 参数格式异常
105缺少 app 对象
1051缺少 app name
1052缺少 app version
1053缺少 app 包名
0正常