展示层级收入数据能帮助您更好地理解用户,精准计算 ROI,并打造精确的 LTV 模型。对于受支持的平台,MAX 会为您提供每个展示的数据,包括收入、广告来源和素材信息。
您可以直接自行处理此数据。 您还可以让任何 AppLovin 支持的数据分析提供商对数据进行分析 (您可以在本页的 MMP 集成:从 MAX 到 MMP 部分查看这些服务商的列表)。
您可以通过以下三种方式获取用户层级收入数据:
MAX 拥有多位分析合作伙伴,他们可以帮助您在一个控制面板中就访问您的所有数据。您可以与任何 AppLovin 支持的合作伙伴合作,获取展示层级广告收入或汇总广告收入数据。这些受支持的合作伙伴包括 Adjust、GameAnalytics、AppsFlyer 和 Singular。如需了解这些合作伙伴的能力,请参阅他们维护的文档页面。
Contact your account team or 支持团队 to enable this feature.
AppLovin’s servers can send postbacks to an external endpoint whenever they record a MAX impression.
You define which endpoint receives these requests.
The postbacks are in the form of HTTP or HTTPS GET requests.
AppLovin makes these postbacks soon after the impression, but they may be delayed by a few minutes.
You can use an impression timestamp macro to reconcile any delay between the impression and the postback times.
如果 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 ad unit ID (16 hex characters) Example: 9ad0816ac071552a |
{AD_UNIT_NAME} | Ad unit name (URL-encoded) Example: My%20App%20Banners |
{AD_UNIT_TEST_NAME} | Name of the ad unit test, URL-encoded Example: Control |
{ALL_REVENUE} | Estimated revenue, including FB Bidding estimates Examples: 0.0121, 5.74466e-05 |
{CC} | Two-letter country code of the user Example: gb |
{CUSTOM_DATA} | Custom data passed in from the integration (URL-encoded). AppLovin recommends that you keep the size of the string under 8192 characters. You must not include ampersand (&) characters in the custom data if you include this macro.Example: my%20custom%20data |
{DEVICE_TYPE} | User’s device type. Example: Tablet |
{EVENT_ID} | Unique event ID, 40 hex characters Example: 8dc948013d71f04264b8e5c1c61933154b226e08 |
{EVENT_TOKEN} | sha1( «event-ID» + «your-event-key» )Example: e000949f6d851c1f34adae08e6ef1076ba43cf31 |
{EVENT_TOKEN_ALL} | sha256( «All macros alphabetically as-is, not URL-decoded» + «your-event-key» )Note: If EVENT_TOKEN is one of your macros, omit it from the “All macros alphabetically” string.Example: eba615583ed59bc679a495…ff6be5f218702a97a |
{FORMAT} | Ad Unit format Examples: reward, banner, inter |
{IDFA} | iOS IDFA or Google Advertising ID Example: 860635ea-65bc-eaed-d355-1b5283b30b94 |
{IDFV} | Identifier for Vendor Example: 4CD1C3C4-3FD7-00F5-1635-7BC6D9387E60 |
{IP} | User’s IP address. (IPv6 values are URL-encoded) Examples: 162.1.1.1, fe80%3A%3A1ff%3Afe23%3A4567%3A890a%0A |
{NETWORK} | Name of the ad network that served the impression. Names should match the names used in the Management API. Example: APPLOVIN_NETWORK |
{NETWORK_PLACEMENT} | Placement name of the external ad network Example: ca-app-pub-12345678%2F0987654321 |
{PACKAGE_NAME} | 应用包名 (Android) 或 Bundle ID (iOS)。URL 编码。 |
{PLACEMENT} | Publisher-defined MAX ad placement name (URL-encoded) Example: Launch%20Screen |
{PLATFORM} | Platform Examples: android, ios |
{PRECISION} | Information on how precise the revenue value is. Options are:
Example: exact |
{REVENUE} | Estimated revenue. Set to 0 when FB Bidding.Examples: 0.0121, 5.74466e-05 |
{TS} | Timestamp of impression (integer, seconds since epoch) Example: 1546300800 |
{USER_ID} | Publisher-defined, URL-encoded, user ID; maximum length is 8192 characters Example: 7634657898 |
{WATERFALL_NAME} | The name of the Ad Unit waterfall Example: LAT |
下面的代码片段展示了如何向广告单元添加广告位名称。
广告位名称的值会替换回调请求中的 {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»"下面的代码片段展示了如何使用您的内部用户 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»"以下代码片段展示了如何向回调添加自定义字符串数据。
该字符串数据将替换回调中的 {CUSTOM_DATA} 宏。
AppLovin 建议字符串不要超过 8192 个字符。
在加载横幅广告或 MREC 广告之前,必须设置自定义数据。 否则,数据将不会出现在与广告关联的回调中。
MaxSdk.SetBannerCustomData("«ad-unit-ID»", "«custom-data»"); // Banners
MaxSdk.SetMRecCustomData("«ad-unit-ID»", "«custom-data»"); // MRECsadViewAd.setCustomData( "«custom-data»" );BannerAd.setCustomData("«ad-unit-ID»", "«custom-data»"); // Banners
MRec.setCustomData("«ad-unit-ID»", "«custom-data»"); // MRECsadView.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»"