服务端激励(Server-to-Server):允许开发者自己判断是否下发奖励给观看激励视频的用户。当用户看完激励视频时,将通知开发者的服务器,由开发者自己进行奖励的下发
注意:
1.为了保障服务端激励的准确性,针对第三方广告平台建议开发者优先使用第三方广告平台的服务端激励回调。
2.针对TopOn Adx、直投、交叉推广,开发者可以直接使用TopOn的服务端激励回调。您可以根据 Network Firm ID来判断是否只接受TopOn服务端激励回调:
TopOn Adx的Network Firm ID=66
TopOn 直投广告的Network Firm ID=67
TopOn 交叉推广的Network Firm ID=35
支持服务端激励的广告平台如下:(可点击跳转到广告平台关于服务端激励的文档说明,不能跳转的请直接登录广告平台后台进行回调URL的设置)
https://www.toponad.com/onrewardedverify?user_id={user_id}&trans_id={trans_id}&reward_amount={reward_amount}&reward_name={reward_name}&placement_id={placement_id}&extra_data={extra_data}&network_firm_id={network_firm_id}&adsource_id={adsource_id}&scenario_id={scenario_id}&sign={sign}&ilrd={ilrd}
user_id={user_id}&trans_id={trans_id}&reward_amount={reward_amount}&reward_name={reward_name}&placement_id={placement_id}&extra_data={extra_data}&network_firm_id={network_firm_id}&adsource_id={adsource_id}&scenario_id={scenario_id}&sign={sign}&ilrd={ilrd}
开发者url自定义回调信息的占位符如下,注意
• 不一定要配置所有占位符,即需要哪些信息就配置哪些占位符
• 如果需要签名机制(即有配置:sign={sign}),那么涉及签名相关(见下面:sign签名规则说明)的所有占位符都需要配置
• 回调给开发者的url除了自定义配置信息外,某些情况还有可能额外返回人民币转美元汇率信息(例如:exch_rate_c2u=0.1375),不关注可忽略
• 使用开发者后台创建或编辑服务端激励广告位时,默认会回调一次开发者在后台配置的激励url,目的是为了一开始就检测开发者配置的url是否正常,即此时回调的url占位符是没有替换的并且会增加回调参数:is_test=1
参数 | 说明 | 备注 |
---|---|---|
{user_id} | 用户ID | 由开发者通过TopOn SDK API设置 |
{extra_data} | 用户业务参数 | 由开发者通过TopOn SDK API设置 |
{trans_id} | TopOn服务端生成的trans_id,具有唯一性 | 强烈建议开发者在服务器发放激励前校验trans_id是否已发放激励,以规避对相同的trans_id重复发放激励 |
{reward_name} | 激励名称 | 在开发者后台设置(支持广告位或广告场景设置) |
{reward_amount} | 激励数量 | 在开发者后台设置 (支持广告位或广告场景设置) |
{placement_id} | TopOn广告位ID | - |
{network_firm_id} | TopOn聚合的广告平台ID | 【特别注意】1). 如果您需要使用服务端激励,同时有使用TopOn Adx、直投、交叉推广时:针对第三方广告平台建议您优先使用第三方广告平台的服务端激励回调;针对TopOn Adx、直投、交叉推广,您可以使用TopOn的服务端激励回调。2). 您可以根据 Network Firm ID来判断是否只接受TopOn服务端激励回调: 1. TopOn Adx的Network Firm ID=66 2. TopOn 直投广告的Network Firm ID=67 3. TopOn 交叉推广的Network Firm ID=35 查看TopOn广告平台ID列表 |
{adsource_id} | TopOn广告源ID | - |
{scenario_id} | TopOn广告场景ID | 由开发者通过TopOn SDK API设置 |
{package_name} | 开发者应用的包名或Bundle ID | 由TopOn SDK获取开发者的应用包名或Bundle ID |
{platform} | 系统平台,Android 或 iOS | 按以下枚举类型返回,1:Android,2:iOS |
{ilrd} | TopOn SDK回调的展示级别数据. 数据为json字符串 | TopOn SDK v5.7.78及以上版本支持。TopOn SDK在回调激励视频OnReward时给开发者提供展示级别的数据,具体数据格式参考 |
{sign} | 签名信息 | 参考签名规则说明 |
开发者在收到TopOn的服务端激励回调时,可以通过sign对回调参数进行校验。
sign =MD5("trans_id="+trans_id+"&placement_id="+placement_id+"&adsource_id="+adsource_id+"&reward_amount="+reward_amount+"&reward_name="+reward_name+"&sec_key="+sec_key)
如果回调URL中有 {ilrd} 参数,需要使用以下sign签名规则:
sign =MD5("trans_id="+trans_id+"&placement_id="+placement_id+"&adsource_id="+adsource_id+"&reward_amount="+reward_amount+"&reward_name="+reward_name+"&sec_key="+sec_key+"&ilrd="+ilrd)
参数 | 示例 |
---|---|
trans_id | xxxxxxxxxxxxxxxx |
placement_id | b5b449fb3d89d7 |
adsource_id | 56789 |
reward_amount | 1 |
reward_name | coin |
sec_key | cyvmwmzrqts7csphhexpqxqxxgljfisb |
ilrd | abc |
sign签名示例如下:
sign=MD5(trans_id=xxxxxxxxxxxxxxxx&placement_id=b5b449fb3d89d7&adsource_id=56789&reward_amount=1&reward_name=coin&sec_key=cyvmwmzrqts7csphhexpqxqxxgljfisb&ilrd=abc)
特别注意:回调的数据有时可能很大(特别是包含ilrd时候),开发者应保证去除GET回调Url的长度限制,否则开发者服务器可能会报414错误(例如使用了nginx, 默认有长度限制)
返回状态码 | 说明 |
---|---|
200 | 成功 |
601 | 签名验证失败 |
602 | 其他失败 |
为了满足开发者在不同的激励视频广告场景下发不同的激励,TopOn允许开发者除了在不同的广告场景上设置不同的激励名称和激励数量,具体使用流程如下:
为了减少开发者手动配置服务端回调规则的时间,TopOn允许开发者快捷复用服务端回调规则,步骤如下:
Map localMap = new HashMap();
localMap.put(ATAdConst.KEY.USER_ID, "test_user_id");
localMap.put(ATAdConst.KEY.USER_CUSTOM_DATA, "test_user_data");
mRewardVideoAd.setLocalExtra(localMap);
mRewardVideoAd.load();
[[ATAdManager sharedManager] loadADWithPlacementID:placementId extra:@{kATAdLoadingExtraMediaExtraKey:@"test_user_data", kATAdLoadingExtraUserIDKey:@"test_user_id"} delegate:self];
Dictionary jsonmap = new Dictionary();
jsonmap.Add(ATConst.USERID_KEY, "test_user_id");
jsonmap.Add(ATConst.USER_EXTRA_DATA, "test_user_data");
ATRewardedVideo.Instance.loadVideoAd(placementId, jsonmap);
cocos2d::ValueMap extra;
extra[ATCocosSdk::KEY_USER_ID] = "test_user_id";
extra[ATCocosSdk::KEY_MEDIA_EXT] = "test_user_data";
ATCocosSdk::loadRewardedVideoAd(placementId, extra);
var setting = {};
setting[ATRewardedVideoJSSDK.userIdKey] = "test_user_id";
setting[ATRewardedVideoJSSDK.userDataKey] = "test_user_data";
ATRewardedVideoJSSDK.loadRewardedVideo(placementId, setting);
var setting = {};
settings[ATRewardedVideoRNSDK.userIdKey] = "test_user_id";
settings[ATRewardedVideoRNSDK.userDataKey] = "test_user_data";
ATRewardedVideoRNSDK.loadAd(placementId, settings);
变量 | 类型 | 说明 |
---|---|---|
network_firm_id | int | 获取 广告平台对应的ID,用于区分广告平台 |
adsource_id | string | 获取 广告源ID. 可在开发者后台或TopOn Open API 通过广告源ID查询具体的Network信息 |
adsource_index | int | 获取 当前广告源在WaterFall中的排序(从0开始) |
adsource_price | dounble | 获取 ECPM,单位可通过"currency"获取 |
adsource_isheaderbidding | int | 是否为头部竞价的广告源,1:是,2:否 |
id | string | 获取 每次展示广告时生成的独立ID |
publisher_revenue | double | 获取 展示收益 |
currency | string | 获取 货币单位,例如:"USD" |
country | string | 获取 国家代码, 例如:”CN" |
adunit_id | string | 获取 TopOn广告位ID |
adunit_format | string | 获取 广告类型,包括:"Native"、"RewardedVideo"、"Banner""Interstitial"、"Splash" |
precision | string | 获取 ECPM精度 "publisher_defined":开发者在TopOn后台为广告源定义的eCPM(交互推广的eCPM也属于该类型) "estimated": TopOn的预估eCPM(auto eCPM) "exact":Header Bidding实时竞价的eCPM |
network_type | string | 获取 Network类型 "Network":第三方广告平台 "Cross_Promotion":交互推广 "Adx":TopOn Adx |
network_placement_id | string | 获取 Network的广告位ID |
ecpm_level | int | 获取 广告源的eCPM层级,头部竞价广告源默认为0 |
segment_id | int | 获取 流量分组ID |
scenario_id | string | 获取 广告场景ID,仅Rewarded Video&Interstitial支持(v5.7.20开始,支持Native&Banner) |
scenario_reward_name | string | 获取 广告场景的激励名称,仅Rewarded Video支持 |
scenario_reward_number | int | 获取 广告场景的激励数量,仅Rewarded Video支持 |
sub_channel | string | 获取 子渠道信息 |
channel | string | 获取 渠道信息 |
custom_rule | Dictionary | 获取 Placement+App维度的自定义规则的Json字符串 |