跳转到内容

高级设置

广告位

您可以为每个广告单元设置广告位名称 (例如 “Rewarded VideoLevels”、“INTER_levelEnd” 或 “RewardedVideoCoinStore”)。 这可以帮助您汇总不同广告位类别的统计数据。 下面的片段展示了如何为不同的广告格式设置广告位名称。

横幅 / MREC

adView.placement = @"«placement»";
[adView loadAd];

插屏

[interstitialAd showAdForPlacement: @"«placement»"];

激励广告

[rewardedAd showAdForPlacement: @"«placement»"];

原生广告

nativeAdLoader.placement = @"«placement»";

原生广告 (Ad Placer)

MAAdPlacerSettings *settings = [MAAdPlacerSettings settingsWithAdUnitIdentifier: @"«ad-unit-ID»"];
settings.placement = @"«placement»";

静音

您可以在启动应用时将某些 SDK 平台的音频设为关闭。 通过 AppLovin SDK 支持该功能的平台包括 Google 竞价和 Google AdMob、AppLovin、DT Exchange、Google Ad Manager、LINE、Mintegral、腾讯和 Verve。 对于其他平台,请咨询平台客户团队,了解此功能是否可用以及使用方法。

下面的代码片段展示了如何在支持静音的平台中设置静音:

ALSdk *sdk = [ALSdk shared];
sdk.settings.muted = YES; // to mute
sdk.settings.muted = NO; // to unmute

启用详细日志

启用详细日志的方法有两种:

编程方式

您可以在 SDK 设置对象中,将标记 isVerboseLoggingEnabled 设置为 YES,以启用详细日志。

[ALSdk shared].settings.verboseLoggingEnabled = YES;

Info.plist

您还可以在应用的 Info.plist 中,将 AppLovinVerboseLoggingOn 设置为 YES,以启用详细日志。

Key: Information Property List.Type: Dictionary.Value: (1 item).Key: AppLovinVerboseLoggingOn.Type: Boolean.Value: YES.

验证

要验证是否已成功启用详细日志,请查看 AppLovin SDK 日志初始化部分中是否有 Verbose Logging On: true行。

AppLovin SDK
Version: 11.4.2
Verbose Logging On: true

AppLovin SDK 的日志标签为 “/AppLovinSdk: [AppLovinSdk]”。

Creative ID 和平台名称

您可以调取各个聚合平台已展示广告的 Creative ID 和平台名称。 请参阅 the Creative Debugger documentation 了解更多信息。

DSP 名称

您可以使用如下代码,调取 AppLovin Exchange 投放的 MAX 广告的 DSP 名称:

- (void)didLoadAd:(MAAd *)ad
{
NSLog(@"AppLovin Exchange DSP name: %@", ad.DSPName);
}

展示层级 User Revenue API

从 SDK 版本 10.3.0 开始,您可以在客户端访问展示级别的用户收入数据, 并且使用此数据来比较不同的来源和 campaign。您也可以使用 MAX User Revenue API 访问此数据。需要访问此数据的 MMP,请参阅针对 MMP 的展示层级用户收入 API 页面。

您可以针对所有受支持的平台与 Adjust 等移动监测合作伙伴分享展示层级广告收入数据。

您可以在所有广告生命周期回传中调取收入金额。 以下示例展示了如何在 “ad revenue paid” 回传中执行此操作:

- (void)didPayRevenueForAd:(MAAd *)ad
{
double revenue = ad.revenue; // In USD
// Miscellaneous data
NSString *countryCode = [ALSdk shared].configuration.countryCode; // "US" for the United States, etc - Note: Do not confuse this with currency code which is "USD"
NSString *networkName = ad.networkName; // Display name of the network that showed the ad
NSString *adUnitId = ad.adUnitIdentifier; // The MAX Ad Unit ID
MAAdFormat *adFormat = ad.format; // The ad format of the ad (e.g. BANNER, MREC, INTERSTITIAL, REWARDED)
NSString *placement = ad.placement; // The placement this ad's postbacks are tied to
NSString *networkPlacement = ad.networkPlacement; // The placement ID from the network that showed the ad
}

您还可以获取收入值的精确度评估,如下所示:

NSString *revenuePrecision = ad.revenuePrecision;

该精确度采用下列值之一:

"publisher_defined"
收入金额为开发者指定的价格
"exact"
收入金额为实时竞价的结果
"estimated"
收入金额基于 Auto-CPM 或 FB 竞价估算
"undefined"
未定义收入金额,也没有足够的数据来估算
""
收入和精确度无效(例如在测试模式下)

建立广告请求回传

要监听广告请求的发出,请设置一个 MAAdRequestDelegate,实现它的 [didStartAdRequestForAdUnitIdentifier:] 方法,然后将委托设置为 requestDelegate。 以下示例展示了如何在 “ad request started” 回传中执行此操作:

- (void)didStartAdRequestForAdUnitIdentifier:(NSString *)adUnitIdentifier
{
// Ad request started here
}

选择性初始化

您可以针对指定广告单元初始化 SDK。 此时,SDK 只会初始化您为指定广告单元配置的广告平台。 (如果未指定任何广告单元,SDK 会假定当前会话需要您的所有广告单元。 此时,SDK 会初始化您为所有广告单元配置的全部平台。) 以下示例展示了如何实施此功能:

ALSdkSettings *settings = [[ALSdkSettings alloc] init];
settings.initializationAdUnitIdentifiers = @[@"«ad-unit-ID-1»", @"«ad-unit-ID-2»"];
ALSdk *sdk = [ALSdk sharedWithSettings: settings];
sdk.mediationProvider = @"max";
[sdk initializeSdkWithCompletionHandler:^(ALSdkConfiguration *configuration) {
}];

Waterfall Information API

Waterfall Information API 可向您展示广告的当前瀑布流 (已加载或加载失败的广告)。 API 会返回瀑布流中每则广告的广告加载状态、延迟、配置信息和聚合平台信息。 如果瀑布流中的广告加载失败,API 会提供错误信息。

iOS SDK 10.3.7 及之后的版本均支持该 API。

AdLoadState 值

解释
0未尝试加载广告
1广告已加载
2广告加载失败

示例

- (void)didLoadAd:(MAAd *)ad
{
NSLog(@"Waterfall Name: %@ and Test Name: %@", ad.waterfall.name, ad.waterfall.testName);
NSLog(@"Waterfall latency was: %f seconds", ad.waterfall.latency);
for (MANetworkResponseInfo *networkResponse in ad.waterfall.networkResponses)
{
NSLog(@"Network -> %@", networkResponse.mediatedNetwork);
NSLog(@"...adLoadState: %ld", (long) networkResponse.adLoadState);
NSLog(@"...latency: %f seconds", networkResponse.latency);
NSLog(@"...credentials: %@", networkResponse.credentials);
if (networkResponse.error) {
NSLog(@"...error: %@", networkResponse.error);
}
}
}
- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error
{
if (!error.waterfall) {
return;
}
MAAdWaterfallInfo *waterfall = error.waterfall;
NSLog(@"Waterfall Name: %@ and Test Name: %@", waterfall.name, waterfall.testName);
NSLog(@"Waterfall latency was: %f seconds", waterfall.latency);
for (MANetworkResponseInfo *networkResponse in waterfall.networkResponses)
{
NSLog(@"Network -> %@", networkResponse.mediatedNetwork);
NSLog(@"...latency: %f seconds", networkResponse.latency);
NSLog(@"...credentials: %@", networkResponse.credentials);
if (networkResponse.error) {
NSLog(@"...error: %@", networkResponse.error);
}
}
}

请注意如果瀑布流为空,那么 MAError.waterfall 就会返回 nil,导致您无法查询瀑布流属性。 不过,您依旧可以通过 requestLatency,检索空瀑布流的广告加载延迟:

- (void)didLoadAd:(MAAd *)ad
{
NSLog(@"Succesful ad load latency: %f seconds", ad.requestLatency);
}
- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error
{
NSLog("Failed ad load latency: %f seconds", error.requestLatency);
}

自定义横幅 / MREC 广告刷新

您可以直接在集成中自定义横幅和 MREC 广告的刷新间隔,就像在广告单元 UI 中进行配置一样。 最短刷新间隔为 10 秒。 最长刷新间隔为 120 秒。 超出这些限制的值将被忽略。 以下代码示例展示了如何自定义刷新间隔:

// Where adView is an instance of MAAdView
[adView setExtraParameterForKey: @"ad_refresh_seconds" value: «ad-refresh-rate»];

音频设置

为避免插屏广告和激励广告音频干扰应用的背景音频,AppLovin 建议您在显示广告前暂停应用的背景音频, 并在隐藏广告后再恢复应用的背景音频。

- (void)didDisplayAd:(MAAd *)ad
{
// Pause your app's background audio
}
- (void)didHideAd:(MAAd *)ad
{
// Resume your app's background audio
}