AppLovin MAX S2S Impression Revenue API
请注意,第三方数据集成产生的数据会被纳入集群的消耗数据量
概要
接口简介
| 接口名 | 类型 | 粒度 | 归因 | 成本 | 收益 | 展示 | 点击 | 转化 |
|---|---|---|---|---|---|---|---|---|
| MAX S2S Impression Revenue API | 回传 | 用户级别 | ✅ | ✅ |
AppLovin 提供了通过 MAX S2S Impression Revenue API 回传数据的方法,每当变现广告被展示时,AppLovin 会将展示层级的收益数据回传到配置好的回调链接处。
集成流程
- 接入 AppLovin SDK 与 AE SDK,并在 AppLovin SDK 中设置 AE 的用户识别 ID
- 登录 AE 后台,进入三方集成模块,新增 AppLovin MAX S2S Impression Revenue API 方案,并完成相关配置
- 登录 AppLovin 后台,完成回传地址的配置
- 查看 AE 系统是否成功接收数据,并完成报表搭建
一、客户端 SDK 配置
集成 AppLovin 数据的第一步,是在客户端完成 AE SDK 与 AppLovin SDK 的打通。
1.1 方案一(自动关联)
-
如果您接入的 Android、iOS SDK
- SDK 版本为 2.8.0~2.8.1 ,可以直接使用本方案
- SDK 版本为 2.8.2 及以上 ,您还需要安装三方数据插件。详情请参考 安卓 SDK 三方数据 与 iOS SDK 三方数据
请注意 AE 的 SDK 初始化和开启自动集成代码必须在 AppLovin 的 SDK 初始化之前完成,请按照以下步骤操作:
1. 初始化 AE SDK。
2. 调用`enableThirdPartySharing` 自动设置访客 ID。
3. 初始化 AppLovin SDK。
以下各端 SDK 的代码样例:
- Android
- iOS
// 1、初始化 Android SDK
TDConfig config = TDConfig.getInstance(this, APPID, TE_SERVER_URL);
TDAnalytics.init(config);
// 2、调用 enableThirdPartySharing 接口设置 ta_distinct_id 到 applovin 事件中
TDAnalytics.enableThirdPartySharing(TDThirdPartyType.APPLOVIN_IMPRESSION)
// 3、初始化 applovin SDK
// 。。。
// 1、初始化 iOS SDK
TDConfig *config = [[TDConfig alloc] init];
config.appid = appid;
config.serverUrl = url;
[TDAnalytics startAnalyticsWithConfig:config];
// 2、调用 enableThirdPartySharing 接口 设置 ta_distinct_id 到 applovin 事件中
[TDAnalytics enableThirdPartySharing:TDThirdPartyTypeAppLovin];
// 3、初始化 applovin SDK
// 。。。
该方案的原理就是内部自动调用 AppLovinSdk SDK 的 setUserIdentifier() 方法,传入 AE 项目的访客 ID。
1.2 方案二(手动关联)
手动关联方案,需要您在 AppLovin 中使用 setUserIdentifier() 接口设置 AE 项目的访客 ID 。
请注意 AE 的 SDK 初始化和调用 setUserIdentifier 接口必须在 AppLovin 的 SDK 初始化之前完成,请按照以下步骤操作:
1. 初始化AE SDK。
2. 调用`setUserIdentifier` 设置访客 ID。
3. 初始化 AppLovin SDK。
以下各端 SDK 手动集成代码样例:
- Android
- iOS
- Unity
// 1、初始化 Android SDK
TDConfig config = TDConfig.getInstance(this, APPID, TE_SERVER_URL);
TDAnalytics.init(config);
// 2、获取 AE 的访客 ID, 对应 AE 中的 #distinct_id
String distinctId = TDAnalytics.getDistinctId();
// 3、将访客ID设置到 applovin 采集事件中
AppLovinSdk.getInstance(context).setUserIdentifier(distinctId);
// 4、初始化 applovin SDK
// 。。。
// 1、初始化 iOS SDK
TDConfig *config = [[TDConfig alloc] init];
config.appid = appid;
config.serverUrl = url;
[TDAnalytics startAnalyticsWithConfig:config];
// 2、获取 AE 的访客 ID, 对应 AE 中的 #distinct_id
NSString *distinctId = [TDAnalytics getDistinctId];
// 3、将访客ID设置到 applovin 采集事件中
[ALSdk shared].userIdentifier = distinctId;
// 4、初始化 applovin SDK
// 。。。
// 1、初始化 Unity SDK
TDConfig config = new TDConfig("APPID","SERVER");
TDAnalytics.Init(config);
// 2、获取 AE 的访客 ID, 对应 AE 中的 #distinct_id
var distinctId = TDAnalytics.GetDistinctId();
// 3、将访客ID设置到 Applovin 采集事件中
MaxSdk.SetUserId(distinctId);
// 4、初始化 Applovin SDK
// 。。。
二、方案配置
完成 SDK 配置后,接下来需要您登录 AE 系统后台,在「三方集成」模块中完成 AppLovin MAX S2S Impression Revenue API 的配置。下图是 AppLovin 的配置界面:
2.1 用户识别字段
由于 AppLovin 回传的是用户级别数据,因此需要为其设置用户识别规则,即 AppLovin 回传数据与#distinct_id 和 #account_id 对应的字段。AE 系统将根据该配置,在转换回传数据时,将这些字段设置为数据中的用户识别字段。
如果您按照本文档上一步进行客户端 SDK 配置,请使用以下配置:
- 账号 ID 关联字段:无
- 访客 ID 关联字段:user_id
2.2 事件表入库设置
打开「事件表入库设置」开关后,回传的数据都将写入到事件表中,我们建议您开启事件数据入库。
2.3 用户属性入库规则
在默认情况下,AE 系统不会将 AppLovin 回传数据写入到用户属性中。如果您希望将一些字段写入用户表,请首先打开规则,使其运行,再通过属性映射功能添加需要写入用户表的字段,来源属性名需填写字段的入库名,可参考 3.1 章节内容:
2.4 集成配置
您可以在集成配置模块对数据拉取的细节配置进行控制。比如入库后的事件名等。
| 模块 | 名称 | 含义 |
|---|---|---|
| sink_event | event_name | 入库后的事件名,可以自定义 |
2.5 终端地址
终端地址中展示了 AE 系统接收 AppLovin 回传数据的地址。请您直接复制该地址,在接下来进行 AppLovin 回传配置时,请使用该地址作为回传的主要地址:
若此处没有显示地址,请进入右上角菜单「项目管理 → 项目配置 → 接入配置」处配置公网地址。该地址即 AE SDK 中配置的数据上报地址。配置后再回到 AppLovin 配置页的「终端地址」复制终端地址。
三、完成 AppLovin 回调的配置
3.1 回调宏设置
最后,您需要完成回调地址的配置,在回传数据中能够接收到的字段称为“宏”,默认情况下,我们建议您拉取所有字段(即配置所有宏)。下表是 MAX S2S Impression Revenue API 支持的所有宏:
| 宏 | 入库名 | 说明 | 是否必要 |
|---|---|---|---|
| {AD_UNIT_ID} | ad_unit_id | MAX 广告 ID | |
| {AD_UNIT_NAME} | ad_unit_name | MAX 广告名 | |
| {AD_UNIT_TEST_NAME} | ad_unit_test_name | 广告测试组的名称 | |
| {ALL_REVENUE} | all_revenue | 预估的收益,包括 FB Bidding 时的收益 | 是 |
| {CC} | cc | 两位字母的 Country Code | |
| {CUSTOM_DATA} | custom_data | 通过 SDK 设置的自定义数据 | |
| {EVENT_ID} | event_id | 事件唯一 ID | |
| {EVENT_TOKEN} | event_token | 事件 Token(由事件唯一 ID 生成) | |
| {EVENT_TOKEN_ALL} | event_token_all | 全局事件 Token(由事件唯一 ID 以及所有请求参数宏生成) | |
| {FORMAT} | format | 广告类型 | |
| {IDFA} | idfa | iOS 端的 IDFA 或者安卓端的 Google Advertising ID | |
| {IDFV} | idfv | IDFV | |
| {IP} | ip | 用户的 IP 地址 | |
| {NETWORK} | network | 广告展示的 Ad Network | |
| {NETWORK_PLACEMENT} | network_placement | Ad Network 的 内部 Placement 名 | |
| {PACKAGE_NAME} | package_name | 包名,安卓端的 App Package Name 和 iOS 端的 Bundle ID (iOS) | |
| {PLACEMENT} | placement | 在 SDK 中自定义的 Placement 名 | |
| {PLATFORM} | platform | 平台 | |
| {PRECISION} | precision | 收益数据的精度,与数据的来源有关:
| |
| {REVENUE} | revenue | 预估收益,FB Bidding 时该值为 0 | 是 |
| {TS} | ts | 广告曝光的时间 | 是 |
| {USER_ID} | user_id | SDK 设置的用户 ID,对应 AE 项目的访客 ID | 是 |
| {WATERFALL_NAME} | waterfall_name | 广告 Waterfall 的名称 |
以下是我们建议您使用的回传宏,前半部分即您在 2.5 章节获得的回传地址,请将 ? 号及其之后的内容添加到终端地址后,并将其提供给 AppLovin 工作人员完成回调地址的配置(请使用 Server-to-Server Impression Revenue API):
https://{receiver-host}/attribution/callback/applovin/{app-id}?ad_unit_id={AD_UNIT_ID}&ad_unit_name={AD_UNIT_NAME}&ad_unit_test_name={AD_UNIT_TEST_NAME}&all_revenue={ALL_REVENUE}&cc={CC}&custom_data={CUSTOM_DATA}&event_id={EVENT_ID}&event_token={EVENT_TOKEN}&event_token_all={EVENT_TOKEN_ALL}&format={FORMAT}&idfa={IDFA}&idfv={IDFV}&ip={IP}&network={NETWORK}&network_placement={NETWORK_PLACEMENT}&package_name={PACKAGE_NAME}&placement={PLACEMENT}&platform={PLATFORM}&precision={PRECISION}&revenue={REVENUE}&ts={TS}&user_id={USER_ID}&waterfall_name={WATERFALL_NAME}
3.2 数据入库规则
- 使用数据中的 user_id 作为数据中的访客 ID,该字段应可对应 AE 项目中的访客ID
- 使用数据中的 ts 字段,即广告展示时间,作为事件的 #event_time
- 使用默认配置时,事件名为 -- applovin_max_s2s_impression_revenue
- 回调链接中配置的其他字段将全数入库
3.3 标准化字段
以下事件属性会进行标准化处理:
| 原始字段 | 标准化字段 | 含义 |
|---|---|---|
| network_name | te_ads_object.media_source | 媒体渠道 |
| ad_mediation_platform | te_ads_object.media_source | 变现渠道 |
| campaign_name | te_ads_object.campaign_name | 广告计划名 |
| google_ads_campaign_name | te_ads_object.campaign_name | 广告计划名(仅 Google Ads 数据) |
| google_ads_campaign_id | te_ads_object.campaign_id | 广告计划 ID(仅 Google Ads 数据) |
| adgroup_name | te_ads_object.ad_group_name | 广告组名 |
| google_ads_adgroup_name | te_ads_object.ad_group_name | 广告组名(仅 Google Ads 数据) |
| google_ads_adgroup_id | te_ads_object.ad_group_id | 广告组 ID(仅 Google Ads 数据) |
| creative_name | te_ads_object.ad_name | 广告名 |
| google_ads_creative_id | te_ads_object.ad_id | 广告 ID(仅 Google Ads 数据) |
| ad_revenue_placement | te_ads_object.placement | 变现广告位置 |
| google_ads_placement | te_ads_object.placement | 广告位置(仅 Google Ads 数据) |
| cost_amount | te_ads_object.cost | 投放成本 |
| cost_currency | te_ads_object.currency | 买量投放的币种 |
| revenue_usd | te_ads_object.revenue | 变现收益 |
| 【USD】定值 | te_ads_object.currency | 变现收益的币种 |
| country | te_ads_object.country | 国家地区编码 |
| os_name | te_ads_object.platform | 平台,即 Android、iOS 等 |
| app_id | te_ads_object.app_id | 应用 ID |
| app_name | te_ads_object.app_name | 应用名 |

