跳到主要内容

Adjust对接

概述

TradPlus已与Adjust打通用户层级变现数据的对接,您可选择S2S (server to server) 或C2S (client to server)方式,回传广告变现数据至Adjust。

对接方式数据准确度数据实时性
S2S使用广告平台报表API返回收益,数据精准每天北京时间10点同步前天数据,数据时区请在TradPlus后台->我的账号 查看
C2S使用TradPlus预估收益,存在误差实时

一、S2S对接方式

TradPlus可每天自动同步广告变现数据到Adjust。开发者需要在客户端和TradPlus后台都完成配置,才能正常使用此功能。 注意:

  • 通过initCustomMap (Android/Unity)的上报需要在 TradPlus SDK 初始化之前完成;否则,部分userId可能会无法回传。
  • 联系adjust 商务开启S2S服务

如果您对数据回传有更高的实时要求,TradPlus已支持服务器展示收益实时回调API,您可以通过此API,以 S2S 的方式向 Adjust 发送您的广告收入数据

1、客户端配置

需要开发者把Adjust生成的adid作为user_id传给我们

  • Android 原生代码示例:
HashMap<String, String> customMap = new HashMap<>();
customMap.put("user_id", "adid");
//设置APP维度的规则,对全部placement有效
SegmentUtils.initCustomMap(customMap);
  • Unity SDK 代码示例:
Dictionary<string, string> map = new Dictionary<string, string>();
map.Add("user_id", "adid");
//设置APP维度的规则,对全部placement有效
TradPlus.initCustomMap(map);
2、TradPlus后台配置

第一步:在TradPlus后台配置添加或编辑应用界面,填入Adjust的安全识别码和应用识别码。

官方文档

(1)获取Adjust后台的应用识别码

(2)获取Adjust后台的安全识别码(如果在Adjust后台未设置s2s安全认证,则不需要填入此信息。)

(3)在TradPlus后台填入Adjust的安全识别码和应用识别码。

第二步:在TradPlus后台的报表API key 界面生成key值,如果已生成过,则跳过此步骤。

第三步:TradPlus每天会在北京时间上午10点,自动发送数据给Adjust,2~3小时发送完数据。开发者可在adjust后台查看前天数据。

3、API错误码&FAQ
错误码说明解决方案
400 Invalid app token应用识别码设置错误请检查在TradPlus 开发者后台填写的app token是否正确
400 Ignoring event, earlier unique event tracked在控制面板上已设定成唯一事件,重覆触发事件不再作记录。请联系 adjust 官方客服人员或者
400 Invalid event token事件识别码不存在、设置错误或与应用识别码不匹配。请检查在TradPlus 开发者后台填写的app token是否正确
401 Failed to authorize request授权识别码缺失或不匹配请检查在TradPlus 开发者后台填写的authorize 是否正确
403 App is inactive应用已在控制面板中设为非活跃状态请联系adjust 官方客服,协助您解决问题。
403 Tracking disabled未启用对该平台的跟踪请联系adjust 官方客服,协助您解决问题。
403 Event token blacklisted事件识别码已被列入黑名单请联系adjust 官方客服,协助您解决问题。
404 App token not found未找到应用识别码请检查在TradPlus 开发者后台填写的app token是否正确
451 Device is opted out设备已退出跟踪请联系adjust 官方客服,协助您解决问题。

二、C2S对接方式

步骤1 :广告展示成功时,TradPlus 会返回该广告 eCPM

String ecpm = tpAdInfo.ecpm;

步骤2:把 eCPM 换算成 Revenue

double revenue = Double.parseDouble(ecpm) / 1000;

adjust 客户端接入示例代码

IOS

adjust iOS SDK >= 4.37.1 支持TradPlus

//监听全局展示回调
[TradPlus sharedInstance].impressionDelegate = self;

- (void)tradPlusAdImpression:(NSDictionary *)adInfo
{
ADJAdRevenue *adRevenue = [[ADJAdRevenue alloc] initWithSource:ADJAdRevenueSourceTradplus];
CGFloat revenue = [adInfo[@"ecpm"] floatValue]/1000.0;
NSString *adUnitId = adInfo[@"adunit_id"];
NSString *networkName = adInfo[@"adNetworkName"];
NSString *adType = adInfo[@"adType"];
[adRevenue setRevenue:revenue currency:@"USD"];
[adRevenue setAdRevenueNetwork: networkName];
[adRevenue setAdRevenueUnit: adUnitId];
[adRevenue setAdRevenuePlacement: adType];
[Adjust trackAdRevenue:adRevenue];
}
Android

adjust Android SDK >= 4.38.1 支持TradPlus

TradPlusSdk.setGlobalImpressionListener(new GlobalImpressionManager.GlobalImpressionListener() {
@Override
public void onImpressionSuccess(TPAdInfo tpAdInfo) {
AdjustAdRevenue adRevenue = new AdjustAdRevenue(AdjustConfig.AD_REVENUE_TRADPLUS);
double ecpm = Double.valueOf(tpAdInfo.ecpm) / 1000;
adjustAdRevenue.setRevenue(ecpm, "USD");
adjustAdRevenue.setAdRevenueNetwork(tpAdInfo.adSourceName);
adjustAdRevenue.setAdRevenueUnit(tpAdInfo.tpAdUnitId);
adjustAdRevenue.setAdRevenuePlacement(tpAdInfo.format);
Adjust.trackAdRevenue(adRevenue);
}
});
Unity

Adjust Unity SDK >= 4.37.1 支持TradPlus

void OnGlobalAdImpression(Dictionary<string, object> adInfo)
{
AdjustAdRevenue adRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueTradPlus); ;
#if UNITY_IOS
string unitId = adInfo["adunit_id"].ToString();
string adType = adInfo["adType"].ToString();
string networkName = adInfo["adNetworkName"].ToString();
#else
string unitId = adInfo["tpAdUnitId"].ToString();
string adType = adInfo["format"].ToString();
string networkName = adInfo["adSourceName"].ToString();
#endif
double revenue = 0;
double.TryParse(adInfo["ecpm"].ToString(), NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out revenue);
if (revenue > 0)
revenue = revenue / 1000;
adRevenue.setRevenue(revenue, "USD");
adRevenue.setAdRevenueUnit(unitId);
adRevenue.setAdRevenuePlacement(adType);
adRevenue.setAdRevenueNetwork(networkName);
Adjust.trackAdRevenue(adRevenue);
}
Flutter

Adjust flutter SDK >= 4.37.1 支持TradPlus

static TPGlobalAdImpressionListener? globalAdImpressionListener;

globalAdImpressionListener =
TPGlobalAdImpressionListener(onGlobalAdImpression: (adInfo) {
AdjustAdRevenue revenue = AdjustAdRevenue(AdjustConfig.AdRevenueTradPlus);
String adUnitId;
String networkName;
String adType;
if (defaultTargetPlatform == TargetPlatform.iOS) {
adUnitId = adInfo["adunit_id"].toString();
networkName = adInfo["adNetworkName"].toString();
adType = adInfo["adType"].toString();
}
else {
adUnitId = adInfo["tpAdUnitId"].toString();
networkName = adInfo["adSourceName"].toString();
adType = adInfo["format"].toString();
}
String ecpmStr = adInfo["ecpm"].toString();
num revenueNum = num.parse(ecpmStr)/1000.0;
revenue.setRevenue(revenueNum, "USD");
revenue.adRevenueNetwork = networkName;
revenue.adRevenuePlacement = adType;
revenue.adRevenueUnit = adUnitId;
Adjust.trackAdRevenueNew(revenue);
});
TPSDKManager.setGlobalAdImpressionListener(globalAdImpressionListener!);