服务端激励(Server-to-Server):允许开发者自己判断是否下发奖励给观看激励视频的用户。当用户看完激励视频时,将通知开发者的服务器,由开发者自己进行奖励的下发
注意:为了保障服务端激励的准确性,针对第三方广告平台建议开发者优先使用第三方广告平台的服务端激励回调。针对Taku Adx、直投、交叉推广,开发者可以直接使用Taku的服务端激励回调。您可以根据 Network Firm ID来判断是否只接受Taku服务端激励回调:
1. Taku Adx的Network Firm ID=66
2. Taku 直投广告的Network Firm ID=67
3. Taku 交叉推广的Network Firm ID=35
支持服务端激励的广告平台如下:(可点击跳转到广告平台关于服务端激励的文档说明,不能跳转的请直接登录广告平台后台进行回调URL的设置)

https://www.takuad.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自定义回调信息的占位符如下,注意
| 参数 | 说明 | 备注 |
|---|---|---|
| {user_id} | 用户ID | 由开发者通过Taku SDK API设置 |
| {extra_data} | 用户业务参数 | 由开发者通过Taku SDK API设置 |
| {trans_id} | Taku服务端生成的trans_id,具有唯一性 | 强烈建议开发者在服务器发放激励前校验trans_id是否已发放激励,以规避对相同的trans_id重复发放激励 |
| {reward_name} | 激励名称 | 在开发者后台设置(支持广告位或广告场景设置) |
| {reward_amount} | 激励数量 | 在开发者后台设置 (支持广告位或广告场景设置) |
| {placement_id} | Taku广告位ID | - |
| {network_firm_id} | Taku聚合的广告平台ID | 【特别注意】1). 如果您需要使用服务端激励,同时有使用Taku Adx、直投、交叉推广时:针对第三方广告平台建议您优先使用第三方广告平台的服务端激励回调;针对Taku Adx、直投、交叉推广,您可以使用Taku的服务端激励回调。2). 您可以根据 Network Firm ID来判断是否只接受Taku服务端激励回调: 1. Taku Adx的Network Firm ID=66 2. Taku 直投广告的Network Firm ID=67 3. Taku 交叉推广的Network Firm ID=35 查看Taku广告平台ID列表 |
| {adsource_id} | Taku广告源ID | - |
| {scenario_id} | Taku广告场景ID | 由开发者通过Taku SDK API设置 |
| {package_name} | 开发者应用的包名或Bundle ID | 由Taku SDK获取开发者的应用包名或Bundle ID |
| {platform} | 系统平台,Android 或 iOS | 按以下枚举类型返回,1:Android,2:iOS |
| {ilrd} | Taku SDK回调的展示级别数据. 数据为json字符串 | Taku SDK v5.7.78及以上版本支持。Taku SDK在回调激励视频OnReward时给开发者提供展示级别的数据,具体数据格式参考 |
| {sign} | 签名信息 | 参考签名规则说明 |
开发者在收到Taku的服务端激励回调时,可以通过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)
| 返回状态码 | 说明 |
|---|---|
| 200 | 成功 |
| 601 | 签名验证失败 |
| 602 | 其他失败 |
为了满足开发者在不同的激励视频广告场景下发不同的激励,Taku允许开发者除了在不同的广告场景上设置不同的激励名称和激励数量,具体使用流程如下:

为了减少开发者手动配置服务端回调规则的时间,Taku允许开发者快捷复用服务端回调规则,步骤如下:


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. 可在开发者后台或Taku Open API 通过广告源ID查询具体的Network信息 |
| adsource_index | int | 获取 当前广告源在WaterFall中的排序(从0开始) |
| adsource_price | double | 获取 ECPM,单位可通过"currency"获取 |
| adsource_isheaderbidding | int | 是否为头部竞价的广告源,1:是,2:否 |
| id | string | 获取 每次展示广告时生成的独立ID |
| publisher_revenue | double | 获取 展示收益 |
| currency | string | 获取 货币单位,例如:"USD" |
| country | string | 获取 国家代码, 例如:”CN" |
| adunit_id | string | 获取 Taku广告位ID |
| adunit_format | string | 获取 广告类型,包括:"Native"、"RewardedVideo"、"Banner""Interstitial"、"Splash" |
| precision | string | 获取 ECPM精度 "publisher_defined":开发者在Taku后台为广告源定义的eCPM(交互推广的eCPM也属于该类型) "estimated": Taku的预估eCPM(auto eCPM) "exact":Header Bidding实时竞价的eCPM |
| network_type | string | 获取 Network类型 "Network":第三方广告平台 "Cross_Promotion":交互推广 "Adx":Taku 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字符串 |
| user_load_extra_data | string | 获取 Load 时传入的自定义参数,对应 getLocalExtra() |
| show_custom_ext | show_custom_ext | 获取 Show时传入的自定义参数,对应getShowCustomExt() |
(1)Taku的服务端激励回调和三方平台的有什么区别
1)Taku的服务端激励回调会提供包括Taku ADX、三方平台预估eCPM等数据的激励回调。
若使用Taku ADX、交叉推广、直投广告等,在Taku设置服务端激励回调会更加准确。三方平台的服务端激励回调则是走三方平台的会更加准确。
2)Taku和三方平台的激励回调建议二者只选择配置一个。
例如若希望使用穿山甲的激励回调,则不需要在Taku后台创建。
(2)是否一定要配置服务端端激励回调
一般来说,若产品策略,需要针对不同的eCPM/广告场景下发不同的奖励,则需要配置服务端激励回调。
例如:希望给在特定广告场景观看了广告的用户发放特殊的奖励。
若没有这一类的需求,则可以不配置服务端端激励回调。