S2S Impression Revenue API
インプレッションレベルの収益データによって、ユーザーの理解を深め、ROIを正確に計算し、精度の高いLTVモデルを構築できるようになります。 サポート対象のネットワーク対し、MAXは各インプレッションに関するデータ(収益、デマンドソース、クリエイティブに関する情報)を提供します。
このデータは直接処理することができます。 また、サポート対象のアナリティクスプロバイダー(このページの[MMP連携:MAXからMMPに連携(#mmp-integration-max-to-mmp)セクションを参照)にデータを分析してもらうことも可能です。
ダイレクト連携:MAXに直接連携
ユーザーレベルの収益データは3つの方法で取得できます。
- User Revenue API: ユーザーレベルの収益データを日次で取得するには、このAPIを使用します。 データは、特定ユーザーごとの集計データ、またはインプレッションごとに1行で出力されるデータの2つの形式で取得できます。 データは、UTC時間の1日が終了してから8時間後に入手可能となります。 詳細については、User Revenue APIのドキュメントを参照してください。
- クライアント側: クライアント側で、インプレッションレベルのユーザー収益データへリアルタイムにアクセスできます。 AndroidとiOSの連携方法については、それぞれのドキュメントを参照してください。
- サーバー間: サーバー側でリアルタイムの収益データにアクセスすることもできます。これを行うには、インプレッションレベルのユーザー広告収益データを追跡するインプレッションポストバックが必要です。この機能をご希望の場合は、アカウントチームまたはサポートチームにお問い合わせください。 この機能と、インプレッションポストバックがサポートするマクロについては、このページのServer-to-Server Impression Revenue APIセクションを参照してください。
MMP連携:MAXからMMPに連携
単一のダッシュボードから簡単にデータへアクセスしていただくため、MAXはさまざまなアナリティクスパートナーと連携しています。サポート対象のパートナーを利用すれば、インプレッションレベルの広告収益や集計された広告収益データにアクセスすることが可能です。サポート対象パートナーには、Adjust、GameAnalytics、AppsFlyer、Singularなどがあります。パートナーの詳細については、各パートナーのWebサイトを参照してください。
Server-to-Server Impression Revenue API
この機能をご希望の場合は、アカウントチームまたはサポートチームにお問い合わせください。
AppLovinのサーバーは、MAXインプレッションが記録されるたびに、外部エンドポイントへポストバックを送信することができます。
これらのリクエストをどのエンドポイントで受信するかを指定してください。ポストバックはHTTPまたはHTTPSのGET
リクエスト形式で送信されます。
AppLovinはインプレッションが記録されるとすぐにポストバックを送信しますが、数分遅れることがあります。
インプレッションとポストバックの間に発生する遅延を補正するために、インプレッションタイムスタンプマクロを使用できます。
エンドポイントからの応答がないまま5秒が経過すると、ポストバックリクエストはタイムアウトします。 ポストバックリクエストは再送信されません。
例
https://myimpressionserver.com/impression?idfa={IDFA}&user_id={USER_ID}&event={EVENT_ID}&token={EVENT_TOKEN}
利用可能なマクロ
以下の表にあるマクロのいずれかをポストバックURLに組み込むことができます。上記のURLの例は、{IDFA}
、{USER_ID}
、{EVENT_ID}
、{EVENT_TOKEN}
のマクロを組み込んだものです。
AppLovinのサーバーは、エンドポイントにリクエストする際に、これらのマクロ名を正確な値に置き換えます。
名前 | 説明 |
---|---|
{AD_UNIT_ID} | MAX広告ユニットID(16桁の16進文字列)。 例: 9ad0816ac071552a |
{AD_UNIT_NAME} | 広告ユニット名(URLエンコード済み)。 例: My%20App%20Banners |
{AD_UNIT_TEST_NAME} | 広告ユニットテストの名前、URLエンコード済み。 例: Control |
{ALL_REVENUE} | FB入札の見積もりを含む推定収益。 例: 0.0121 、5.74466e-05 |
{CC} | ユーザーの2文字の国コード。 例: gb |
{CUSTOM_DATA} | 連携から渡されたカスタムデータ(URLエンコード)。AppLovinは、文字列を8192文字以下に維持することを推奨しています。このマクロを含める場合は、カスタムデータにアンパサンド(& )を含めることはできません。例: my%20custom%20data |
{DEVICE_TYPE} | ユーザーのデバイスタイプ。 例: Tablet |
{EVENT_ID} | ユニークイベントID、40桁の16進文字列。 例: 8dc948013d71f04264b8e5c1c61933154b226e08 |
{EVENT_TOKEN} | sha1( «event-ID» + «your-event-key» ) 例: e000949f6d851c1f34adae08e6ef1076ba43cf31 |
{EVENT_TOKEN_ALL} | sha256( «All macros alphabetically as-is, not URL-encoded» + «your-event-key» ) 注意: EVENT_TOKEN がマクロの場合、「All macros alphabetically」文字列からこれを除外してください。例: eba615583ed59bc679a495…ff6be5f218702a97a |
{FORMAT} | 広告ユニットのフォーマット。 例: reward 、banner 、inter |
{IDFA} | iOSのIDFAまたはGoogle広告ID。 例: 860635ea-65bc-eaed-d355-1b5283b30b94 |
{IDFV} | ベンダーID。 例: 4CD1C3C4-3FD7-00F5-1635-7BC6D9387E60 |
{IP} | ユーザーのIPアドレス(IPv6値はURLエンコード済み)。 例: 162.1.1.1 、fe80%3A%3A1ff%3Afe23%3A4567%3A890a%0A |
{NETWORK} | インプレッションを配信したアドネットワーク名。名前は、Management API で使用される名前と一致する必要があります。 例: APPLOVIN_NETWORK |
{NETWORK_PLACEMENT} | 外部アドネットワークのプレースメント名 例: ca-app-pub-12345678%2F0987654321 |
{PACKAGE_NAME} | アプリのパッケージ名(Android)またはバンドルID(iOS)。URLエンコード。 |
{PLACEMENT} | パブリッシャー定義のMAX広告プレースメント名(URLエンコード) 例: Launch%20Screen |
{PLATFORM} | プラットフォーム。 例: android 、ios |
{PRECISION} | 収益値の精度についての情報。オプションは以下の通りです:
例: exact |
{REVENUE} | 推定収益。FB入札の場合は0 に設定します。例: 0.0121 、5.74466e-05 |
{TS} | インプレッションのタイムスタンプ(整数、epochからの経過秒数) 例: 1546300800 |
{USER_ID} | パブリッシャー定義のURLエンコード済みユーザーID。最長8192文字。 例: 7634657898 |
{WATERFALL_NAME} | 広告ユニットのウォーターフォール名。 例: LAT |
広告プレースメント名を設定
以下のコードスニペットは、広告ユニットにプレースメント名を追加する方法を示しています。
プレースメント名の値は、ポストバックリクエストの {PLACEMENT}
マクロを置き換えます。
ActionScript
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»);
Blueprint
C++
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»);
C#
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»");
Dart
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»);
GDScript
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»);
Java
adViewAd.setPlacement( "«placement»" );
interstitial.showAd( "«placement»" );
rewardedAd.showAd( "«placement»" );
nativeAdLoader.setPlacement( "«placement»" );
MaxAdPlacerSettings settings = new MaxAdPlacerSettings( "«ad-unit-ID»" );settings.setPlacement( "«placement»" );
JavaScript (Cordova)
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»);
JavaScript (React Native)
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»" ⋮/>
Kotlin
adView.setPlacement( "«placement»" )
interstitial.showAd( "«placement»" )
rewardedAd.showAd( "«placement»" )
nativeAdLoader.setPlacement( "«placement»" )
val settings = MaxAdPlacerSettings( "«ad-unit-ID»" )settings.placement = "«placement»"
Lua
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»);
Objective-C
adView.placement = @"«placement»";[adView loadAd];
[interstitialAd showAdForPlacement: @"«placement»"];
[rewardedAd showAdForPlacement: @"«placement»"];
nativeAdLoader.placement = @"«placement»";
MAAdPlacerSettings *settings = [MAAdPlacerSettings settingsWithAdUnitIdentifier: @"«ad-unit-ID»"];settings.placement = @"«placement»";
Swift
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»"
内部ユーザーIDを設定
以下のコードスニペットは、独自の内部ユーザーIDを使用してユーザーにタグ付けする方法を示しています。 ユーザー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 ).settingssettings.userIdentifier = "«user-ID»"
applovin.set_user_id("«user-ID»")
ALSdkSettings *settings = [ALSdk shared].settings;settings.userIdentifier = @"«user-ID»";
let settings = ALSdk.shared().settingssettings.userIdentifier = "«user-ID»"
カスタムデータを設定
以下のコードスニペットは、カスタム文字列データをポストバックに追加する方法を示しています。
この文字列データは、これらのポストバックの{CUSTOM_DATA}
マクロを置き換えます。
AppLovinでは、文字列の長さを8192文字未満にすることを推奨しています。
バナーおよびMREC
MaxSdk.SetBannerCustomData("«ad-unit-ID»", "«custom-data»"); // BannersMaxSdk.SetMRecCustomData("«ad-unit-ID»", "«custom-data»"); // MRECs
adViewAd.setCustomData( "«custom-data»" );
BannerAd.setCustomData("«ad-unit-ID»", "«custom-data»"); // BannersMRec.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»")