Media API
最近更新:2022-2-23
展开全部

Media API

文档版本 修订日期 作者 修订说明
v1.0 2022-02-25 曹玉冰 接口文档创建
v1.1 2022-03-16 叶左 1.补充联调接入使用参数
2.slot.id支持填入广告位id
v2.0 2022-03-22 叶左 支持实时价格回传及竞价上报链接
v2.1 2022-03-25 叶左 应用唤醒类广告下发备用链接及转化上报新增备用链接相关枚举
v2.2 2022-06-09 叶左 新增支持多条监测链接下发

背景

对有APP流量变现需求但由于各种原因无法嵌入极光联盟SDK的开发者,极光联盟提供基于Media API的合作方式供开发将流量以API形式接入极光联盟。开发者应保证获得用户授权同意,由开发者收集并向极光提供如下字段。本文档详细介绍了Media API的运营对接流程和接口协议等内容。

对接流程

接收API邀请: 极光联盟API采用邀请制加入,开发者接收邀请后,可在运营人员指导下提交API接入请求;

开通API权限: API权限基于应用授权,应用授权后方可为应用创建API广告位;API权限基于应用授权,获得APP secret。应用授权后方可为应用创建API广告位;

广告 API

极光联盟广告API提供请求广告和数据上报接口。极光联盟支持两种方式请求广告,强烈建议采用第一种方式1请求,开发者一方面具有更大可控制性,另一方面可以防止极光联盟分配的app secret泄露:

  1. 开发者通过自己服务器后台请求极光联盟广告API
  2. 开发者APP直接请求极光联盟广告API

广告请求

功能描述

通过此接口请求广告

接口地址:https://union-api.ad.jiguang.cn/v1/ads

示例:

curl -X POST \ https://union-api.ad.jiguang.cn/v1/ads \ -H 'Content-Type: application/json' \ -d '{ "device": { "os": "android", "os_version": "1.2.3", "model": "oppo v20", "manufacturer": "oppo", "imei": "868179044195447" }, "network": { "ip": "119.139.196.49" }, "slot": { "id": "api测试", "width": 100, "height": 100 }, "app": { "app_key": "571b65723a5fa6c96d755f9e", "app_bundle_id": "abc.test" }, "timestamp": 1645067885, "nonce": "123456", "sign": "61cbd53c7026e99332bf6964264d3948", "version": "1.0" }'
          
curl -X POST \

  https://union-api.ad.jiguang.cn/v1/ads \

  -H 'Content-Type: application/json' \

  -d '{

    "device": {

        "os": "android",

        "os_version": "1.2.3",

        "model": "oppo v20",

        "manufacturer": "oppo",

        "imei": "868179044195447"

    },

    "network": {

        "ip": "119.139.196.49"

    },

    "slot": {

        "id": "api测试",

        "width": 100,

        "height": 100

    },

    "app": {

        "app_key": "571b65723a5fa6c96d755f9e",

        "app_bundle_id": "abc.test"

    },

    "timestamp": 1645067885,

    "nonce": "123456",

    "sign": "61cbd53c7026e99332bf6964264d3948",

    "version": "1.0"

}'

        
此代码块在浮窗中显示

请求方式

HTTP POST请求

注意: 请求体是JSON字符串。请求头Content-Type请设置为application/json。

请求参数

原则: 在取值正确情况下,尽量填写相关请求参数,如果不能保证取值正确性,这种情况下不填写,否则会影响变现效果。

参数名称 类型 是否必填 说明
device object Y 用户设备相关信息,具体包含信息参见下面device参数结构
network object Y 用户网络相关信息,具体包含信息参见下面network参数结构
app object Y 开发者接入相关信息,具体包含信息参见下面app参数结构
slot object Y 广告位相关信息,具体包含信息参见下slot参数结构
geo object N 用户geo相关信息,具体包含信息参见下geo参数结构
sign string Y 请求签名,具体生成办法见【附录-签名生成方法】
timestamp int32 Y 发起广告请求时候时间戳,单位秒级别
nonce string Y 长度为6的随机字符串,每次随机请求广告时候,随机生成的6位字符串,字符串范围0-9A-Za-z
version string Y 目前为1.0

device参数结构:

参数名称 类型 是否必填 说明
os string Y 操作系统,请务必填写正确,否则会影响流量变现效果。可能取值:
android - 安卓操作系统
ios - ios操作系统
os_version string Y os版本,形式为X.Y.Z或者X.Y。如果获取不到,请填写unknown。填写错误或填写unknown会影响流量变现效果
model string Y 设备型号。可能取值:
1. 对于android设备:可调用系统接口android.os.Build.MODEL直接获得。
2. 对于ios设备:系统接口返回值。
3. 如果获取不到,填写unknown(小写)。
填写错误或填写unknown会影响流量变现效果
manufacturer string Y(仅现安卓设备) 设备厂商。填写错误或填写unknown会影响流量变现效果。可能取值:
1. 可调用系统接口android.os.Build.MANUFACTURER直接获得
2. 如果获取不到,填写unknown
device_type int32 Y 设备类型:填写错误或填写未知会影响流量变现效果。可能取值:
0 – 未知
1 – 手机(包括iTouch)
2 – 平板
screen_width int32 N 设备竖屏状态时的屏幕宽。取设备物理像素
screen_height int32 N 设备竖屏状态时的屏幕高。取设备物理像素
idfa string Y(仅ios设备) ios设备的idfa,长度为36个字符,保留原始值。填写错误会严重影响流量变现效果
idfa_md5 string Y(仅ios设备) ios设备的idfa的md5sum的摘要,长度为32位字符。该参数用来替补idfa,两者传其一即可,强烈建议优先填写idfa,在idfa填写情况,不用再传递此值
imei string Y(仅限安卓设备) android设备的imei,保留原始值。在能取到的情况下必须填写,不填写或填写错误会严重影响流量变现效果
imei_md5 string Y(仅限安卓设备) android设备的imei的md5sum的摘要,32个字符,仅限安卓设备。该参数用来替补imei,两者传其一即可,强烈建议优先填写imei,在imei填写情况下,不用再传递此值
oaid string Y(仅限安卓设备) android设备的OAID,保留原始值,部分厂商部分安卓系统版本提供,MSA官方链接为:http://msa-alliance.cn/

注意:

  1. 对安卓设备请求,imei、imei_md5、oaid至少要填写其中一个
  2. 对ios设备请求,idfa、idfa_md5至少要填写其中一个

network参数结构:

参数名称 类型 是否必填 说明
type int32 Y 填未知,会影响流量变现效果。可能取值:
0 - 未知
1 - wifi
2 - 2G
3 - 3G
4 - 4G
5 - 5G
carrier int32 Y 可能取值:
0 - 未知
1 - 移动
2 - 联通
3 - 电信
ip string Y 用户IP。注意:
1. 请上报公网IP,不要上报内网IP(例如192.168.33.10等)
2.如果X-Forward-For中包含多个公网IP,优先上报第一个公网IP

app参数结构:

参数名称 类型 是否必填 说明
app_key string Y 在极联盟平台创应用时分配的应用key
app_bundle_id string Y 可能取值:
1. android设备:使用package name
2. ios设备:使用bundle id。应用包名。请求填写包名要与创建应用时的填写保持一致

geo参数结构:

参数名称 类型 是否必填 说明
lat int32 N 用户原始GPS坐标的纬度*1,000,000。该参数会用于基于地理位置的广告的定向,正确填写有助于提高流量变现效果
lng int32 N 用户原始GPS坐标的经度*1,000,000。该参数会用于基于地理位置的广告的定向,正确填写有助于提高流量变现效果

slot参数结构:

参数名称 类型 是否必填 说明
id string Y 广告位ID
width int32 Y 广告位宽。该参数在联盟后台用来选取合适尺寸的广告,不要求与用户设备上真实的广告位宽严格一致
height int32 Y 广告位高。该参数在联盟后台用来选取合适尺寸的广告,不要求与用户设备上真实的广告位高严格一致

广告响应

注意: 该接口会返回多条广告,但开发者应该只选择一条广告进行曝光展示,其余广告应丢弃

参数名称 类型 是否必填 说明
code int32 Y 错误码。具体含义见文末【附录-错误码列表】
message string Y 说明信息
data array N 广告列表信息
data.ad_id string Y 广告ID
data.slot_id string Y 广告位ID
data.target_url string Y 目标url。目标url可能的取值:
  • 对于LOADING_PAGE推广目的的广告,该值是h5地址
  • 对于WEIXIN_MINIPROGRAM、ALIPAY_MINIPROGRAM推广目的的广告,该值为小程序地址
  • 对于QUICK_APP推广目的的广告,该值为小程序的地址
  • 对于DOWNLOAD_IOS推广目的的广告,该值是iOS 应用的app id
  • 对于DOWNLOAD_APK推广目的的广告,该值是apk下载地址
  • 对于DOWNLOAD_MARKET推广目的的广告,该值是deeplink地址
  • 对于DEEPLINK推广目的的广告,该值是deeplink地址
data.impression_urls array Y 曝光上报链接,数组形式
data.click_urls array Y 点击上报链接,数组形式
data.conversion_urls array N 转化上报链接,数组形式
data.img_url string N 广告图1
data.img2_url string N 广告图2
data.package_name string N 安卓APP包名
data.promotion_purpose string Y 广告推广目的。开发者需要据此进行广告点击之后的业务逻辑处理,具体见文末【附录-极光联盟广告推广目的与处理逻辑】。
可能取值:
WEIXIN_MINIPROGRAM-微信小程序
LOADING_PAGE - 网页推广
ALIPAY_MINIPROGRAM - 支付宝小程序
QUICK_APP-快应用
DOWNLOAD_IOS-ios 应用下载
DOWNLOAD_APK - android apk 应用下载
DOWNLOAD_MARKET - android 应用市场下载
DEEPLINK - 应用唤醒
data.title string N 广告标题
data.description string N 广告描述
data.app_name string N 应用名称
data.ad_style_id int Y 广告样式id,开发者可以根据此判断如何渲染广告,具体见文末【附录-极光联盟广告样式】
data.wx_miniprogram_type int32 N 微信小程序版本:发布版(1)、测试版(2)、体验版(3)
data.wx_miniprogram_origin_id string N 微信小程序原始id
data.price int32 N 单位:分/CPM,本次请求极光联盟的参竞价格;仅在开通实时竞价权限后返回,具体可咨询联盟商务
data.bid_notice_url string N 竞价上报链接;仅在开通实时竞价权限后返回
data.target2_url string N 备用链接,仅推广目的为DEEPLINK的广告返回该链接,使用方法详看备用链接处理逻辑
data.fallback_deeplink string N 备用Deeplink链接,仅推广目的为DEEPLINK的广告返回该链接

曝光上报

开发者APP曝光广告时候,需要调用此接口上报曝光信息,必须由客户端曝光,不能通过服务端调用此接口,且禁止做任何改动。

曝光有效性标准如下:

广告展示区域的50%以上像素点在用户屏幕上并且持续可见时间超过1秒钟。

接口地址

https://union-api.ad.jiguang.cn/v1/event/impression

该接口地址为广告请求接口返回的impression_url字段

示例:

https://union-api.ad.jiguang.cn/v1/event/impression?d=N2Y3ZTc2ZTM0ZWRhMDIw&n=DZL6oJ&t=1643078474

请求方式

HTTP GET请求

响应参数

参数名称 类型 是否必填 说明
code int32 Y 错误码。具体含义见文末的错误码列表
message string Y 说明信息

点击上报

当用户点击广告时候,开发者需要调用点击上报接口来上报给极光联盟。

接口地址

https://union-api.ad.jiguang.cn/v1/event/click

该接口地址为广告请求接口返回的click_url字段

示例: https://union-api.ad.jiguang.cn/v1/event/click?d=OWJlMDhkYjJkMTRjMjgzNzMyYzR&dx=__DOWN_X__&dy=__DOWN_Y__&he=__HEIGHT__&n=IYvano&rh=__REQ_HEIGHT__&rw=__REQ_WIDTH__&t=1644501941&ux=__UP_X__&uy=__UP_Y__&wi=__WIDTH__

该接口同曝光接口一样,必须要由开发者APP调用,不能通过服务端调用此接口。开发者在广告点击时需要捕获用户点击坐标,该值将在联盟后台用来帮助提升用户点击率,从而提高开发者收入。坐标均指相对于实际广告位左上角的坐标,如下图所示,箭头方向为正坐标方向,坐标单位为像素。如无法获取坐标时,请替换为-999。

该接口中,预填充了一些占位参数,开发者需要使用捕获到的坐标等替换掉这些占位参数。占位参数列表如下:

参数名称 类型 是否必填 说明
__REQ_WIDTH__ int32 N 广告请求中的广告位宽(请求数据中参数slot.width,如果请求不填,则替换成-999)
__REQ_HEIGHT__ int32 N 广告请求中的广告位高(请求数据中参数slot.height,如果请求不填,则替换成-999)
__WIDTH__ int32 N 实际广告位的宽,单位为像素
__HEIGHT__ int32 N 实际广告位的高,单位为像素
__DOWN_X__ int32 Y 用户手指按下时的横坐标,坐标内容需为整数,无小数点
__DOWN_Y__ int32 Y 用户手指按下时的纵坐标,坐标内容需为整数,无小数点
__UP_X__ int32 Y 用户手指离开设备屏幕时的横坐标,坐标内容需为整数,无小数点
__UP_Y__ int32 Y 用户手指离开设备屏幕时的纵坐标,坐标内容需为整数,无小数点

请求方式

HTTP GET请求

响应参数

参数名称 类型 是否必填 说明
code int32 Y 错误码。具体含义见文末【附录-错误码列表】
message string Y 说明信息

转化上报

  • 对于APK下载类型广告,广告联盟需要追踪下载效果,包括下载开始率、下载完成率和安装率,所以需要APP上报下载开始、下载完成和安装完成。
  • 对于拉活广告,极光联盟需要追踪应用直达效果,包括尝试唤起APP率和唤起APP成功率,所以需要APP上报应用直达广告尝试唤起APP和应用直达广告唤起APP成功。
  • 对于APP场景下的应用直达类型广告,联盟还需要追踪APP应用安装率(应用已安装/应用未安装/无法获取应用安装信息),所以还需要APP上报应用已安装/应用未安装/无法获取应用安装信息。

接口地址

https://union-api.ad.jiguang.cn/v1/event/conversion

该接口地址为广告请求接口返回的conversion_url字段。

示例:https://union-api.ad.jiguang.cn/v1/event/conversion?ai=__ACTION_ID__&d=M2MxNDY4ZmIwMTgxYmRmYz&n=4lHVeL&t=1643078474

该接口中,预填充了占位参数,开发者需要根据具体业务逻辑替换掉占位参数。占位参数列表如下:

宏名称 类型 必填 说明
__ACTION_ID__ string Y 操作ID,可能取值:
下载类:
1237-广告应用已安装
1239-下载开始
1247-安装完成
1245-下载完成

拉活类:
1480-拉活广告尝试唤起APP
1481-拉活广告唤起APP成功
981-拉活广告应用未安装
1482-无法获取应用安装信息
14826-尝试打开备用链接
14827-备用链接打开成功
14828-尝试打开Fallbackdeeplink
14829-Fallbackdeeplink打开成功

h5类:
1479-浏览器打开H5
1311-应用内打开H5

小程序类:
1212-小程序打开成功

请求方式

HTTP GET请求

响应参数

参数名称 类型 是否必填 说明
code int32 Y 错误码。具体含义见文末【附录-错误码列表】。
message string Y 说明信息。

竞价上报

  • 对于开通了实时竞价的API流量,广告联盟需要回收竞胜情况
  • 开发者在收到联盟广告价格完成比价后,必须实时、直接通过竞价上报链接上报竞价结果及相关信息

竞价上报流程

接口地址

https://example.com/api/v1/event/bidNotice

该接口地址为广告请求接口返回的bid_notice_url字段

示例:http://172.17.9.211:9050/v1/event/bidNotice?ai=__ACTION_ID__&wbp=__WIN_BID_PRICE__&n=4lHVeL&t=1643078474

该接口中,预填充了占位参数,开发者需要根据具体业务逻辑替换掉占位参数。占位参数列表如下:

参数名称 类型 是否必填 说明
__ACTION_ID__ string Y 竞价结果,可能取值:
14821-极光竞胜
14822-极光竞败:价格竞争力不足
14823-极光竞败:广告内容不合规
14824-极光竞败:广告超时
14825-极光击败:其他
__WIN_BID_PRICE__ int32 Y 竞胜方价格,单位:分/CPM
极光竞胜时必填,竞败时选填

附录

错误码

错误码 含义 说明
0 OK 成功
1001001 argument not found 必传参数未传递,可能有的提示语有device not found/network not found等
1001002 argument is empty 非空参数,传递的是空值
1001003 argument is invalid 参数格式非法
1001004 unmarshal json fail json格式不正确
1001006 appkey is disable appkey 不存在
1001007 media api is disable media api未开启或已关闭
1001008 signature is invalid 签名验证失败,请检查app key和app secret,注意:MD5生成的字符串是小写,32位长度
1001009 timestamp is incorrect 时间戳不合法,请检查是不是当前时间的时间戳
1001010 click report repeat 重复点击上报
1001011 impression report repeat 重复曝光上报
1001012 conversion report repeat 重复转换上报
1001013 no ad 没有相关广告
1001060 no appkey conf appkey配置不存在
1001061 no position conf 没有广告位配置,注意:请求广告接口传递的广告位ID为数字id
1001062 no req id 没有请求id信息
1001063 no position template 没有广告位模板配置,请检查solt.id参数
1001064 exposure count limit 曝光超过限制
1001065 ad mod not match 广告模式不匹配,请检查是否开通API拉取广告功能
1001090 server internal error 服务器内部错误,请联系联盟开发者
1001091 to many request 请求太频繁
1001092 decrypt fail 加密失败
1001093 hit anti cheating 命中作弊策略

签名生成方法

开发者在极光联盟后台创建应用时,系统会为开发者分配一个Appkey和App secret(可在应用编辑页面查看)。其中Appkey使用识别开发者身份,App secret用来进行生成签名认证。

当开发者请求广告时候,请传递正确的签名,否则极光联盟后台会将此次请求当做非法请求。签名参数sign生成方法如下:

sign = md5(md5(App_secret) + slot.id + nonce + timestamp)

注意: 接口中MD5加密之后要求是32位,且小写,如果大写,请转换成小写

极光联盟广告样式

开发者根据创意要素中相应字段进行渲染处理

样式ID 名称 分类 创意要素
111 模拟推送 横幅 图1: img_url
应用名称: app_name
图2: img2_url
标题: title
内容: description
100 图文横幅 横幅 图1: img_url
标题: title
内容: description
103 纯文横幅 横幅 标题: title
内容: description
105 纯图横幅 横幅 图1: img_url
107 悬浮球 侧悬浮 图1: img_url
109 竖版图文 插屏 图1: img_url
标题: title
内容: description
110 竖版纯图 插屏 图1: img_url
113 横版图文 插屏 图1: img_url
标题: title
内容: description
114 横版纯图 插屏 图1: img_url
140 横版图文 信息流 图1: img_url
标题: title
内容: description

极光联盟联调使用广告位

app_key: 51a694d7e13b78b9aad72b1b
app_bundle_id: com.ceshi.market
App secret: vXiA+EGBpUFUQ2yu8SC+Fg==

广告样式 广告代码位ID 样式ID
插屏 1084 109、110、113、114
横幅 1139 111、100、103、105
悬浮球 1140 107
信息流 1358 140

极光联盟广告推广目的与处理逻辑

广告类型(推广目的) 中文名称 曝光系统依赖 曝光应用依赖 处理逻辑
WEIXIN_MINIPROGRAM 微信小程序 Android/iOS Android: 微信(com.tencent.mm) 开发者判断微信存在不存在
LOADING_PAGE 网页推广 Android/iOS 应用类/浏览器
ALIPAY_MINIPROGRAM 支付宝小程序 Android/iOS Android: 支付宝(com.eg).android.AlipayGphone)
QUICK_APP 快应用 Android 可能的快应用包名有:
oppo快应用(com.nearme.instant.platform)
华为快应用(com.huawei.fastapp)
小米快应用(com.miui.hybrid)
魅族快应用(com.meizu.flyme.directservice)
vivo快应用(com.vivo.hybrid)
开发者APP应先判断package_name相对应的快应用APP是否已安装,已安装情况下才进行快应用拉取,否则丢弃该条广告
DOWNLOAD_IOS ios应用下载 iOS
DOWNLOAD_APK android apk 应用下载 Android 创意中应用包名必须未安装 开发者APP应先判断package_name对应的APP是否已安装,未安装时候才会进行广告展示,否则丢弃该条广告
DOWNLOAD_MARKET android 应用市场下载 Android 可能的应用市场包名有:
应用宝(com.tencent.android.qqdownloader)
OPPO软件商店(com.oppo.market)
华为应用市场(com.huawei.appmarket)
vivo应用商店(com.bbk.appstore)
小米应用商店(com.xiaomi.market)
开发者APP应先判断package_name相对应的应用市场是否安装,已安装情况下才进行广告展示,否则丢弃广告
DEEPLINK 应用唤醒 Android/iOS 创意中包名对应的应用必须已安装 开发者APP应先判断package_name对应的APP是否已安装,已安装时候才进行广告展示,否则丢弃该条广告

开发者处理逻辑:

  1. 当为DOWNLOAD_APK/DOWNLOAD_MARKET/WEIXIN_MINIPROGRAM时,开发者APP应先判断package_name对应的APP是否已安装,未安装时候才会进行广告展示,否则丢弃该条广告
  2. 当为DEEPLINK时,开发者APP应先判断package_name对应的APP是否已安装,已安装时候才进行广告展示,否则丢弃该条广告
  3. 当为QUICK_APP时,开发者APP应先判断package_name相对应的快应用APP是否已安装,已安装情况下才进行快应用拉取,否则丢弃该条广告
  4. 当为DOWNLOAD_MARKET时,开发者APP应先判断package_name相对应的应用市场是否安装,已安装情况下才进行广告展示,否则丢弃广告

备用链接处理逻辑:

当推广目的为DEEPLINK时,为避免因Deeplink链接唤醒失败而影响用户体验,联盟特殊下发备用链接,开发者可根据以下判断逻辑使用打开备用链接。

文档内容是否对您有帮助?

Copyright 2011-2022, jiguang.cn, All Rights Reserved. 粤ICP备12056275号-13 深圳市和讯华谷信息技术有限公司

在文档中心打开