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!);