手把手教你对接 AppLovin MAX Reporting API,自动拉取广告收益数据(附代码

22 阅读2分钟

今天要接入的是海外比较有名的广告大平台 AppLovin 的 MAX Reporting API。

图片

说实话,这类三方广告平台的对接流程都差不多:拿到密钥 → 构造请求 → 处理数据。核心就是搞清楚鉴权和参数含义。

下面直接开始。


一、准备工作

官方文档地址:
support.applovin.com/hc/en-us/ar…

登录后台,拿到你的 Report Key(在 My Account 里),就可以开始了。

AppLovin 的 Reporting API 是 GET 请求,比那些要签名的简单多了。

use GuzzleHttp\Client;

const serverHost = "https://r.applovin.com/maxReport";

// 需要拉取的字段列表(从文档中选取)
$columns = 'ad_format,ad_unit_waterfall_name,application,day,estimated_revenue,impressions,max_ad_unit,max_ad_unit_id,platform,attempts,network,store_id,network_placement,package_name';

// 构造请求参数
$param = [
    'format'  => 'json',           // 返回格式
    'columns' => $columns,         // 需要返回的字段
    'api_key' => self::Api_Key,    // 替换成你自己的 Report Key
    'start'   => $date,            // 开始日期,格式:2024-03-12
    'end'     => $date             // 结束日期
];

// 发起 GET 请求
$reqUrl = self::serverHost . '?' . http_build_query($param);
$client = new Client();
$response = $client->request('GET', $reqUrl);
$result = json_decode($response->getBody()->getContents(), true);

// 在这里编写你自己的业务逻辑,比如存入数据库
// 处理 $result 数据...

几个小坑:

  • 日期格式:start 和 end 用 Y-m-d,比如 2024-03-12
  • 字段列表:columns 按需选取就行,不用全拉,数据量小很多
  • 认证:直接用 api_key 参数,不用搞签名,省事

三、过滤数据(只拿你想要的)

如果你只想拉特定应用或特定广告网络的数据,加几个过滤参数就行。

$param = [
    'format'                => 'json',
    'columns'               => $columns,
    'api_key'               => self::Api_Key,
    'start'                 => $date,
    'filter_package_name'   => implode(',', array_keys($third_apps)), // 只拉取指定应用(包名)
    'filter_network'        => 'APPLOVIN_NETWORK,APPLOVIN_EXCHANGE',  // 只拉取 AppLovin 自有广告
    'end'                   => $date
];

过滤参数说明:

  • filter_package_name:按应用包名过滤,多个用逗号隔开。示例:com.example.app1,com.example.app2
  • filter_network:按广告网络过滤。示例:APPLOVIN_NETWORK,GOOGLE_ADMOB
  • filter_ad_format:按广告格式过滤。示例:REWARDED,INTERSTITIAL

四、区分 Android 和 iOS

如果你同时接了安卓和苹果,返回数据里的 platform 字段会告诉你:

  • Android 返回 android
  • iOS 返回 ios

代码里可以这样处理:

$model_type = [
    'android' => 1,   // 对应安卓
    'ios'     => 2,   // 对应苹果
];

foreach ($result as $item) {
    $platformId = $model_type[$item['platform']] ?? 0;
    // 按平台分别入库或统计
}

五、几个实战建议

这些都是我踩过坑之后总结的,你留意一下:

  1. 时区:返回的时间默认跟着你后台选的时区走,入库前记得转一下
  2. 数据延迟:收益数据会有延迟。建议每天拉前一天的数据(比较准),当天可以每小时覆盖一次
  3. 分页:数据量大时,加上 page 和 page_size 参数分页拉
  4. columns:别偷懒写 all,按需选字段,接口会快很多

如果你也在做广告业务,对接过穿山甲、优量汇、Topon 这些平台,欢迎评论区交流一下踩过的坑。

希望这篇文章对你有帮助。


【关于我】

后端开发,熟悉 PHP/Go/Python。
如果你需要对接三方 API、程序开发、写脚本、部署服务,欢迎联系我。