이 API를 사용하여 user-level ad revenue 데이터를 검색하십시오. 특정 사용자에 대해 집계된 데이터 또는 impression당 하나의 행으로 이 데이터를 검색할 수 있습니다.
User-level ad revenue 데이터는 UTC 기준 일 종료 8시간 후에 사용할 수 있습니다. 예를 들어, UTC 2019‒01‒01의 데이터는 UTC 2019‒01‒02 08:00 이후에 사용할 수 있습니다.
지원되는 모든 네트워크에 대해 Adjust, AppsFlyer, GameAnalytics 또는 Singular 등 원하는 모바일 측정 파트너(MMP)와 user-level 및 impression-level ad revenue 데이터를 공유할 수 있습니다. 클라이언트 측에서 impression-level user revenue 데이터에 액세스할 수도 있습니다. 이에 대한 자세한 내용은 SDK 연동 가이드 > 플랫폼 > 개요 > 고급 설정에서 확인할 수 있습니다.
MAX는 Server-to-Server Impression Revenue API를 통해 MAX impression을 기록할 때마다 귀하가 선택한 추적 URL로 데이터를 전송합니다. 자세한 내용은 S2S impression revenue API 문서 페이지를 참조하십시오.
AppLovin 블로그의 “Take Ad-Revenue Attribution to the Next Level With MAX”
이 API를 사용하려면 인증을 해야 합니다.
인증하려면 URL 파라미터 api_key 값을 귀하의 Report Key로 설정하십시오.
https://r.applovin.com/max/userAdRevenueReport?api_key=«report-key»&date=«report-day»&platform=«app-platform»&application=«app-package-name»&store_id=«app-store-ID»&aggregated=«is-aggregated»
| 이름 | 설명 | 예시 |
|---|---|---|
aggregated | API가 데이터를 집계할지(사용자당) 여부 또는 집계하지 않을지(impression당) 여부. 기본값은 true입니다. | false |
api_key | 인증을 위한 Report Key. | tgCe3d7SFRU0S…304ZKs6ba |
application | 애플리케이션 패키지 이름(Android의 경우) 또는 번들 ID(iOS의 경우). (store_id를 정의하는 경우 이 파라미터를 사용할 수 없습니다.) | com.mycompany.application |
date1 | 데이터를 반환할 날짜, «YYYY»-«MM»-«DD» 형식. | 2019-02-06 |
platform | 애플리케이션 플랫폼: android, fireos 또는 ios. | android |
store_id | iOS의 iTunes ID 숫자 부분 또는 Android의 앱 패키지 이름. iTunes ID를 모르는 경우 번들 ID를 대신 사용하십시오. application을 정의하는 경우 이 파라미터를 사용할 수 없습니다. | 1207472156 |
1 이 API의 요청 가능 기간은 45일입니다. 날짜 파라미터가 최근 45일 이내인지 확인하십시오.
{
"status": 200,
"url": "https://applovin-externalreports.s3.amazonaws.com/%2Fmediation_reports/report_date%3D1549756800/pub_id%3D12345/mediation_app_id%3D12345/user_report.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20190216T000208Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=dataio.amazon.s3.access_key%2F20190216%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=e45bdfbd88cbcf4e[…]927dd",
"ad_revenue_report_url": "https://applovin-externalreports.s3.amazonaws.com/%2Fmediation_reports/report_date%3D1549756800/pub_id%3D12345/mediation_app_id%3D12345/user_report.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20190216T000208Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=dataio.amazon.s3.access_key%2F20190216%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=e45bdfbd88cbcf4e[…]927dd",
"fb_estimated_revenue_url": "https://applovin-externalreports.s3.amazonaws.com/%2Fmediation_reports/report_date%3D1549756800/pub_id%3D12345/mediation_app_id%3D12345/user_report.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20190216T000208Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=dataio.amazon.s3.access_key%2F20190216%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=e45bdfbd88cbcf4e[…]927dd"
}
| 이름 | 설명 |
|---|---|
ad_revenue_report_url | 추정된 Meta Audience Network Bidding 데이터를 포함한 모든 수익이 포함된 CSV 파일의 위치입니다. |
fb_estimated_revenue_url | 추정된 Meta Audience Network Bidding 데이터만 포함된 CSV 파일의 위치입니다. Meta Audience Network Bidding 데이터는 추정 수익 데이터를 사용하여 계산되므로 실제 수치와 다를 수 있습니다. |
status | 요청 상태: 사용자 보고서에 액세스할 수 있는 경우 200입니다. |
url | 추정된 Meta Bidding 데이터가 제외된 CSV 파일의 위치입니다. |
Ad Unit ID,Placement,IDFA,IDFV,User Id,Impressions,Revenue
da39a3ee5e6b4b0,home_screen,04034992-E5AA-4BA1-890C-5075B2504050,4F2A07BC-315B-11E9-B210-D663BD873D93,20349,27,5.000025
da39a3ee5e6b4b0,level_end,12309422-331C-41A3-9BF5-2D7D1C04A4E0,4F2A0A6E-315B-11E9-B210-AD023491FF20,,11,0.006100
Date,Ad Unit ID,Ad Unit Name,Waterfall,Ad Format,Placement,Country,Device Type,IDFA,IDFV,User ID,Revenue, Ad Placement
2019-07-29 15:53:07.39,97f7d2048121fe62,sc-and-v1,Default Waterfall,BANNER,home-screen,gb,PHONE,34d5d192-4d67-4382-a730-6828a5f769a2,,e41aaf1d-72ea-4c02-8543-27a2ba09a258,0.000079,1642799
2019-07-29 15:49:31.468,97f7d2048121fe62,sc-and-v1,LAT Users,BANNER,level-end,de,TABLET,31dae586-12d9-47dc-99bd-80855feb2afd,,cf-3042e652059847e5b0911dca682e9509,0.006000,202009
| 이름 | 설명 |
|---|---|
Ad Format | INTER, BANNER, REWARD (집계되지 않음 전용). |
Ad Placement | 광고를 게재한 외부 ad network의 placement ID (집계되지 않음 전용). |
Ad Unit ID | 수익을 창출한 MAX Ad Unit의 ID. |
Ad Unit Name | 수익을 창출한 MAX Ad Unit의 이름 (집계되지 않음 전용). |
Country | impression이 발생한 국가의 두 글자 국가 코드 (집계되지 않음 전용). |
Custom Data | 연동에서 전달된 커스텀 데이터. |
Date | impression이 발생한 시간 (집계되지 않음 전용). |
Device Type | PHONE, TABLET (집계되지 않음 전용). |
IDFA | 광고 식별자: iOS 기기의 경우 IDFA, Android 기기의 경우 GAID. |
IDFV | Identifier for vendor. |
Impressions | 사용자에게 노출된 광고 수 (집계됨 전용). |
Network | impression을 생성한 Ad Network. Ad Network 값은 이 테이블의 “Network API Name”열에서 확인할 수 있습니다. (집계되지 않은 ad_revenue_report_url 전용) |
Placement | 사용자가 impression 및 수익을 생성한 Ad Placement Name. |
Revenue | 사용자가 생성한 수익(USD), 소수점 이하 6자리 정밀도로 표시됩니다. |
User ID | AppLovin SDK를 통해 설정된 사용자의 선택적 ID. (아래 “내부 사용자 ID 설정” 섹션을 참조하십시오.) |
Waterfall | MAX ad unit waterfall 이름 (집계되지 않음 전용). |
다음 코드 스니펫은 ad unit에 placement name을 추가하는 방법을 보여줍니다.
placement name의 값은 postback 요청에서 {PLACEMENT} 매크로를 대체합니다:
AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
AppLovinMAX.setMRecPlacement(«ad-unit-ID», «placement»);
AppLovinMAX.showInterstitial(«ad-unit-ID», «placement»);
nativeAdLoader.setPlacement(«placement»);
AppLovinMAX.showRewardedAd(«ad-unit-ID», «placement»);




UAppLovinMAX::CreateBanner(«ad-unit-ID», «position»);
UAppLovinMAX::SetBannerPlacement(«ad-unit-ID», «placement»);
UAppLovinMAX::CreateMRec(«ad-unit-ID», «position»);
UAppLovinMAX::SetMRecPlacement(«ad-unit-ID», «placement»);
UAppLovinMAX::ShowInterstitial(«ad-unit-ID», «placement»);
UAppLovinMAX::ShowInterstitial(«ad-unit-ID», «placement»);
MaxSdk.CreateBanner(«ad-unit-ID», «position»);
MaxSdk.SetBannerPlacement(«ad-unit-ID», "«placement»");
MaxSdk.CreateMRec(«ad-unit-ID», «position»);
MaxSdk.SetMRecPlacement(«ad-unit-ID», "«placement»");
MaxSdk.ShowInterstitial(«ad-unit-ID», "«placement»");
MaxSdk.ShowRewardedAd(«ad-unit-ID», "«placement»");
AppLovinMAX.createBanner(«ad-unit-ID», «position»);
AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
AppLovinMAX.createMRec(«ad-unit-ID», «position»);
AppLovinMAX.setMRecPlacement(«ad-unit-ID», «placement»);
AppLovinMAX.showInterstitial(«ad-unit-ID», placement: «placement»);
AppLovinMAX.showRewardedAd(«ad-unit-ID», placement: «placement»);
AppLovinMAX.createBanner(«ad-unit-ID», «position»);
AppLovinMAX.set_banner_placement(«ad-unit-ID», «placement»);
AppLovinMAX.createMRec(«ad-unit-ID», «position»);
AppLovinMAX.set_mrec_placement(«ad-unit-ID», «placement»);
AppLovinMAX.show_interstitial(«ad-unit-ID», «placement»);
AppLovinMAX.show_rewarded_ad(«ad-unit-ID», «placement»);
adViewAd.setPlacement( "«placement»" );
interstitial.showAd( "«placement»" );
rewardedAd.showAd( "«placement»" );
nativeAdLoader.setPlacement( "«placement»" );
MaxAdPlacerSettings settings = new MaxAdPlacerSettings( "«ad-unit-ID»" );
settings.setPlacement( "«placement»" );
AppLovinMAX.createBanner(«ad-unit-ID», «position»);
AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
AppLovinMAX.createMRec(«ad-unit-ID», «position»);
AppLovinMAX.setMRecPlacement(«ad-unit-ID», «placement»);
AppLovinMAX.showInterstitial(«ad-unit-ID», «placement»);
AppLovinMAX.showRewardedAd(«ad-unit-ID», «placement»);
AppLovinMAX.createBanner(«ad-unit-ID», «position»);
AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
import { AdView, AdFormat } from 'react-native-applovin-max';
⋮
<AdView adUnitId={«ad-unit-ID»}
adFormat={AdFormat.BANNER}
placement={«placement»} />
import { MRecAd } from 'react-native-applovin-max';
⋮
MRecAd.createAd(«ad-unit-ID», «position»);
MRecAd.setPlacement(«ad-unit-ID», «placement»);
import { AdView, AdFormat } from 'react-native-applovin-max';
⋮
<AdView adUnitId={«ad-unit-ID»}
adFormat={AdFormat.MREC}
placement={«placement»} />
import { InterstitialAd } from 'react-native-applovin-max';
⋮
InterstitialAd.showAd(«ad-unit-ID», "«placement»");
import { RewardedAd } from 'react-native-applovin-max';
⋮
RewardedAd.showAd(«ad-unit-ID», "«placement»");
<NativeAdView
adUnitId={«ad-unit-ID»}
placement="«placement»"
⋮
/>
adView.setPlacement( "«placement»" )
interstitial.showAd( "«placement»" )
rewardedAd.showAd( "«placement»" )
nativeAdLoader.setPlacement( "«placement»" )
val settings = MaxAdPlacerSettings( "«ad-unit-ID»" )
settings.placement = "«placement»"
applovin.create_banner(«ad-unit-ID», «position»)
applovin.set_banner_placement(«ad-unit-ID», «placement»)
applovin.create_mrec(«ad-unit-ID», «position»)
applovin.set_mrec_placement(«ad-unit-ID», «placement»)
applovin.show_interstitial(«ad-unit-ID», «placement»);
applovin.show_rewarded_ad(«ad-unit-ID», «placement»);
adView.placement = @"«placement»";
[adView loadAd];
[interstitialAd showAdForPlacement: @"«placement»"];
[rewardedAd showAdForPlacement: @"«placement»"];
nativeAdLoader.placement = @"«placement»";
MAAdPlacerSettings *settings = [MAAdPlacerSettings settingsWithAdUnitIdentifier: @"«ad-unit-ID»"];
settings.placement = @"«placement»";
adView.placement = "«placement»"
adView.loadAd()
interstitial.show(forPlacement: "«placement»")
rewardedAd.show(forPlacement: "«placement»")
nativeAdLoader.placement = "«placement»"
let settings = MAAdPlacerSettings(adUnitIdentifier: "«ad-unit-ID»")
settings.placement = @"«placement»"
다음 코드 스니펫은 자체 내부 User ID로 사용자를 태깅하는 방법을 보여줍니다. User ID 문자열의 최대 크기는 8192자입니다.
AppLovinMAX.setUserId("«user-ID»");
MaxSdk.SetUserId("«user-ID»");
val settings = AppLovinSdk.getInstance( this ).getSettings();
settings.setUserIdentifier( "«user-ID»" );
AppLovinMAX.setUserId("«user-ID»");
val settings = AppLovinSdk.getInstance( this ).settings
settings.userIdentifier = "«user-ID»"
applovin.set_user_id("«user-ID»")
ALSdkSettings *settings = [ALSdk shared].settings;
settings.userIdentifier = @"«user-ID»";
let settings = ALSdk.shared().settings
settings.userIdentifier = "«user-ID»"
다음 코드 스니펫은 postback에 커스텀 String 데이터를 추가하는 방법을 보여줍니다.
이 String 데이터는 postback에서 {CUSTOM_DATA} 매크로를 대체합니다.
AppLovin은 문자열에 8192자 미만을 포함할 것을 권장합니다.
배너 광고 또는 MREC 광고를 로드하기 전에 커스텀 데이터를 설정해야 합니다. 그렇지 않으면 해당 데이터가 광고와 관련된 postback에 나타나지 않습니다.
MaxSdk.SetBannerCustomData("«ad-unit-ID»", "«custom-data»"); // Banners
MaxSdk.SetMRecCustomData("«ad-unit-ID»", "«custom-data»"); // MRECs
adViewAd.setCustomData( "«custom-data»" );
BannerAd.setCustomData("«ad-unit-ID»", "«custom-data»"); // Banners
MRec.setCustomData("«ad-unit-ID»", "«custom-data»"); // MRECs
adView.setCustomData( "«custom-data»" )
adView.customData = @"«custom-data»";
adView.customData = "«custom-data»"
MaxSdk.ShowInterstitial(«adUnitIdentifier», «placement», «custom data»);
MaxInterstitialAd.showAd(«placement», «custom data»);
InterstitialAd.showAd(interAdUnitId, "«placement»", "«custom data»");
MaxInterstitialAd.showAd(«placement», «custom data»)
-[MAInterstitialAd showAdForPlacement:customData:]
[interstitialAd showAdForPlacement: @"«placement»" customData: @"«custom-data»"];
MaxSdk.ShowRewardedAd(«adUnitIdentifier», «placement», «custom data»);
MaxRewardedAd.showAd(«placement», «custom data»);
RewardedAd.showAd(adUnitId, "«placement»", "«custom data»");
MaxRewardedAd.showAd(«placement», «custom data»)
-[MARewardedAd showAdForPlacement:customData:]
rewardedAd.show(forPlacement: "«placement»" customData: "«custom-data»")
nativeAdLoader.setCustomData( "«custom data»" );
<NativeAdView
adUnitId={«ad-unit-ID»}
customData="«custom-data»"
⋮
/>
nativeAdLoader.setCustomData( "«custom data»" )
nativeAdLoader.customData = @"«custom data»";
nativeAdLoader.customData = "«custom data»"