展示层级收入数据能帮助您更好地理解用户,精准计算 ROI,并打造精确的 LTV 模型。 对于受支持的广告变现网络,MAX 会为您提供每个展示的数据,包括收入、变现渠道和素材信息。
您可以直接自行处理此数据。 您还可以让任何 AppLovin 支持的数据分析提供商对数据进行分析 (您可以在本页的 MMP 集成:MAX 到 MMP 部分查看这些服务商的列表)。
您可以通过以下三种方式获取用户层级收入数据:
MAX 拥有多位分析合作伙伴,他们可以帮助您在一个控制面板中访问您的所有数据。 您可以与任何 AppLovin 支持的合作伙伴合作,获取展示层级广告收入或汇总广告收入数据。 这些受支持的合作伙伴包括 Adjust、GameAnalytics、AppsFlyer 和 Singular。 如需了解这些合作伙伴的能力,请参阅他们维护的文档页面。
请联系您的客户团队或支持团队以启用此功能。
AppLovin 的服务器可以向外部终端发送 postback,只要它们记录到 MAX 展示。
您可以定义接收这些请求的终端。
postback 采用 HTTP 或 HTTPS GET 请求的形式。
AppLovin 会在展示后不久发送这些 postback,但可能会延迟几分钟。
您可以使用展示时间戳宏来调和展示时间与 postback 时间之间的任何延迟。
如果 5 秒后您的终端没有做出响应,postback 请求就会超时。 postback 请求不可重试。
https://myimpressionserver.com/impression?idfa={IDFA}&user_id={USER_ID}&event={EVENT_ID}&token={EVENT_TOKEN}
您可以将下表中的任意宏加入到您的 postback URL 中。
上述示例 URL 中包含 {IDFA}、{USER_ID}、{EVENT_ID} 和 {EVENT_TOKEN} 宏。
当 AppLovin 服务器向您的终端发出请求时,这些宏名称会被替换为准确的值。
| 名称 | 描述 |
|---|---|
{AD_UNIT_ID} | MAX 广告单元 ID (16 位十六进制字符) 示例: 9ad0816ac071552a |
{AD_UNIT_NAME} | 广告单元名称 (URL 编码) 示例: My%20App%20Banners |
{AD_UNIT_TEST_NAME} | 广告单元测试名称,URL 编码 示例: Control |
{ALL_REVENUE} | 预估收益,包括 FB Bidding 预估值 示例: 0.0121, 5.74466e-05 |
{CC} | 用户的两位国家/地区代码 示例: gb |
{CUSTOM_DATA} | 从集成中传入的自定义数据 (URL 编码)。AppLovin 建议您将字符串大小保持在 8192 个字符以下。如果包含此宏,则自定义数据中不得包含和号 (&) 字符。示例: my%20custom%20data |
{DEVICE_TYPE} | 用户的设备类型。 示例: Tablet |
{EVENT_ID} | 唯一事件 ID,36 位字符的 UUID 示例: a7c3e1b2-4f59-4d8a-9c21-8e6b0f3a1d47 |
{EVENT_TOKEN} | sha1( «event-ID» + «your-event-key» )示例: e000949f6d851c1f34adae08e6ef1076ba43cf31 |
{EVENT_TOKEN_ALL} | sha256( «按字母顺序排列的所有宏原样,不进行 URL 解码» + «your-event-key» )注意: 如果 EVENT_TOKEN 是您的宏之一,请将其从“按字母顺序排列的所有宏”字符串中省略。示例: eba615583ed59bc679a495…ff6be5f218702a97a |
{FORMAT} | 广告单元格式 示例: reward, banner, inter |
{IDFA} | iOS IDFA 或 Google Advertising ID 示例: 860635ea-65bc-eaed-d355-1b5283b30b94 |
{IDFV} | Identifier for Vendor 示例: 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) 或 Bundle ID (iOS)。URL 编码。 示例: com.test.app |
{PLACEMENT} | 发布商定义的 MAX 广告位名称 (URL 编码) 示例: Launch%20Screen |
{PLATFORM} | 平台 示例: android, ios |
{PRECISION} | 关于收益值精确度的信息。选项包括:
示例: exact |
{REVENUE} | 预估收益。在进行 FB Bidding 时设为 0。示例: 0.0121, 5.74466e-05 |
{TS} | 展示时间戳 (整数,自 epoch 以来的秒数) 示例: 1546300800 |
{USER_ID} | 发布商定义、URL 编码的用户 ID;最大长度为 8192 个字符 示例: 7634657898 |
{WATERFALL_NAME} | 广告单元 waterfall 的名称 示例: LAT |
以下代码片段向您展示了如何向广告单元添加广告位名称。
广告位名称的值会替换 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»"
以下代码片段向您展示了如何使用您自己的内部用户 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»"