跳转到内容

横幅和 MREC 广告

横幅和 MREC 广告均为矩形的广告格式,会占据应用版面中的一部分,通常位于屏幕顶部或底部,有时也内嵌在可滚动的内容中。用户与应用互动时,横幅和 MREC 广告始终可见,既不会干扰或打断游戏和使用体验,也可以在指定时间周期后自动刷新。

以下各节将向您介绍如何加载、显示和隐藏横幅或 MREC 广告。

加载横幅或 MREC

横幅

要加载横幅,请创建与广告单元相对应的 MAAdView 对象并调用其 loadAd 方法。要展示该广告,请将 MAAdView 对象添加为视图层级的子视图。 实现 MAAdViewAdDelegate以便在广告就绪时收到通知。 这也会提醒您其他的广告相关事件。

#import "ExampleViewController.h"
#import <AppLovinSDK/AppLovinSDK.h>
@interface ExampleViewController()<MAAdViewAdDelegate>
@property (nonatomic, strong) MAAdView *adView;
@end
@implementation ExampleViewController
- (void)createBannerAd
{
self.adView = [[MAAdView alloc] initWithAdUnitIdentifier: @"«ad-unit-ID»"];
self.adView.delegate = self;
// Banner height on iPhone and iPad is 50 and 90, respectively
CGFloat height = (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) ? 90 : 50;
// Stretch to the width of the screen for banners to be fully functional
CGFloat width = CGRectGetWidth(UIScreen.mainScreen.bounds);
self.adView.frame = CGRectMake(x, y, width, height);
// Set background color for banners to be fully functional
self.adView.backgroundColor = «background-color»;
[self.view addSubview: self.adView];
// Load the ad
[self.adView loadAd];
}
#pragma mark - MAAdDelegate Protocol
- (void)didLoadAd:(MAAd *)ad {}
- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error {}
- (void)didClickAd:(MAAd *)ad {}
- (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error {}
#pragma mark - MAAdViewAdDelegate Protocol
- (void)didExpandAd:(MAAd *)ad {}
- (void)didCollapseAd:(MAAd *)ad {}
#pragma mark - Deprecated Callbacks
- (void)didDisplayAd:(MAAd *)ad { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
- (void)didHideAd:(MAAd *)ad { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
@end

MREC

要加载 MREC 广告,请创建与广告单元相对应的 MAAdView 对象,并调用其 loadAd 方法。要展示广告,请将 MAAdView 对象添加为视图层级的子视图。实现 MAAdViewAdDelegate以便在广告就绪时收到通知。这也会通知您其他广告相关事件。

#import "ExampleViewController.h"
#import <AppLovinSDK/AppLovinSDK.h>
@interface ExampleViewController()<MAAdViewAdDelegate>
@property (nonatomic, strong) MAAdView *adView;
@end
@implementation ExampleViewController
- (void)createMRecAd
{
self.adView = [[MAAdView alloc] initWithAdUnitIdentifier: @"«ad-unit-ID»" adFormat: MAAdFormat.mrec];
self.adView.delegate = self;
// MREC width and height are 300 and 250 respectively, on iPhone and iPad
CGFloat width = 300;
CGFloat height = 250;
// Center the MREC
CGFloat x = self.view.center.x - 150;
self.adView.frame = CGRectMake(x, y, width, height);
// Set background color for MREC ads to be fully functional
self.adView.backgroundColor = «background-color»;
[self.view addSubview: self.adView];
// Load the ad
[self.adView loadAd];
}
#pragma mark - MAAdDelegate Protocol
- (void)didLoadAd:(MAAd *)ad {}
- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error {}
- (void)didClickAd:(MAAd *)ad {}
- (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error {}
#pragma mark - MAAdViewAdDelegate Protocol
- (void)didExpandAd:(MAAd *)ad {}
- (void)didCollapseAd:(MAAd *)ad {}
#pragma mark - Deprecated Callbacks
- (void)didDisplayAd:(MAAd *)ad { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
- (void)didHideAd:(MAAd *)ad { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
@end

销毁横幅和 MREC 广告

您可能不再需要 MAAdView 实例。 例如,如果用户购买了广告移除服务,就可能发生这种情况。 释放此类 MAAdView 实例以释放资源。

如果您使用多个具有相同广告单元 ID 的实例,请不要释放 MAAdView 实例。

[self.adView removeFromSuperview];
self.adView.delegate = nil;
self.adView = nil;

自适应横幅广告

自适应横幅是一种响应式广告形式,能够根据设备类型和可用宽度动态调整尺寸。 自适应横幅可设置为锚定式 (anchored) 或内联式 (inline),每种类型适用于不同的集成需求。

从 MAX SDK 13.2.0 版本开始,您可以通过使用 MAAdViewConfiguration 对象初始化 MAAdView 来集成自适应横幅。

锚定式自适应横幅

锚定式自适应横幅是指固定在屏幕顶部或底部的广告形式,根据设备类型和横幅宽度动态调整高度。

您必须将 MAAdView 的高度设置为 MAAdFormat.banner.adaptiveSize.height 返回的值,而不是使用 50 或 90 等常量值。

- (void)createAnchoredAdaptiveBannerAd
{
// Stretch to the width of the screen for banners to be fully functional
CGFloat width = CGRectGetWidth(UIScreen.mainScreen.bounds);
// Get the anchored adaptive banner height
CGFloat height = MAAdFormat.banner.adaptiveSize.height;
MAAdViewConfiguration *config = [MAAdViewConfiguration configurationWithBuilderBlock:^(MAAdViewConfigurationBuilder *builder) {
builder.adaptiveType = MAAdViewAdaptiveTypeAnchored;
}];
self.adView = [[MAAdView alloc] initWithAdUnitIdentifier: @"«ad-unit-ID»" configuration: config];
self.adView.delegate = self;
self.adView.frame = CGRectMake(x, y, width, height);
// Set background color for banners to be fully functional
self.adView.backgroundColor = «background-color»;
[self.view addSubview: self.adView];
// Load the ad
[self.adView loadAd];
}

设置自定义宽度

对于更具体的集成,您可以通过调用 MAAdViewConfiguration 构建方法自定义设置广告的宽度 (单位为 point)。该功能适用于 Google 适配器 10.2.0.2 版本,Google Ad Manager 适配器 10.2.0.1 版本和 Liftoff Monetize 适配器 7.4.5.1 版本)。要获取自定义锚定式自适应广告的合适高度,请调用 adaptive size API。

CGFloat width = 400;
// Get the anchored adaptive banner height
CGFloat height = [self.adView.adFormat adapativeSizeForWidth: width].height;
MAAdViewConfiguration *config = [MAAdViewConfiguration configurationWithBuilderBlock:^(MAAdViewConfigurationBuilder *builder) {
builder.adaptiveType = MAAdViewAdaptiveTypeAnchored;
builder.adaptiveWidth = width;
}];
self.adView = [[MAAdView alloc] initWithAdUnitIdentifier: @"«ad-unit-ID»" configuration: config];

内嵌自适应横幅

自适应横幅默认为锚定式横幅。 您也可以启用内嵌自适应横幅,此类横幅用于滚动内容中。 内嵌自适应横幅通常比锚定自适应横幅尺寸更大。 其高度是可变的,可以扩展到设备屏幕的整个高度。

iOS Google 适配器 11.7.0.1 和 Liftoff Monetize 适配器 7.4.5.1 版本及更新版本均支持内嵌自适应横幅。要启用内嵌自适应横幅,请将 MAAdViewConfiguration 自适应类型设置为 MAAdViewAdaptiveTypeInline,如以下代码所示:

MAAdViewConfiguration *config = [MAAdViewConfiguration configurationWithBuilderBlock:^(MAAdViewConfigurationBuilder *builder) {
builder.adaptiveType = MAAdViewAdaptiveTypeInline;
}];

内嵌自适应广告的默认最大高度为设备屏幕的整个高度。您可以为内嵌自适应广告设置最大高度 (单位为 point),确保广告位于 MAAdView 的高度范围内。您可以使用如下代码来完成此操作,以 100 points 的最大高度为例:

MAAdViewConfiguration *config = [MAAdViewConfiguration configurationWithBuilderBlock:^(MAAdViewConfigurationBuilder *builder) {
builder.adaptiveType = MAAdViewAdaptiveTypeInline;
builder.inlineMaximumHeight = 100;
}];

内嵌自适应 MREC

您可以集成内嵌自适应 MREC 广告,该功能支持 iOS Google 适配器 11.13.0.1 版本和 Liftoff Monetize 适配器 7.4.5.1 版本及以上版本。 您必须将内嵌自适应 MREC 设置为 MAAdViewAdaptiveTypeInline 类型,它们才能正常运行。

内嵌自适应 MREC 默认覆盖整个应用程序窗口宽度,但您也可以指定自定义宽度 (以 points 为单位)。该高度可变,如果您未指定最大高度,则该变量会超出标准的 MREC 广告尺寸,最高可达设备屏幕的完整高度。 按照以下示例,配置内嵌自适应 MREC:

- (void)createInlineAdaptiveMRecAd
{
// Set a custom width, in points, for the inline adaptive MREC. Otherwise stretch to screen width by using CGRectGetWidth(UIScreen.mainScreen.bounds)
CGFloat width = 400;
// Set a maximum height, in points, for the inline adaptive MREC. Otherwise use standard MREC height of 250 points
// Google recommends a height greater than 50 points, with a minimum of 32 points and a maximum equal to the screen height
// The value must also not exceed the height of the MAAdView
CGFloat height = 300;
MAAdViewConfiguration *config = [MAAdViewConfiguration configurationWithBuilderBlock:^(MAAdViewConfigurationBuilder *builder) {
builder.adaptiveType = MAAdViewAdaptiveTypeInline;
builder.adaptiveWidth = width; // Optional: The adaptive ad will span the width of the application window if you do not set a value
builder.inlineMaximumHeight = height; // Optional: The maximum height will be the screen height if you do not set a value
}];
self.adView = [[MAAdView alloc] initWithAdUnitIdentifier: @"«ad-unit-ID»" adFormat: MAAdFormat.mrec configuration: config];
self.adView.delegate = self;
self.adView.frame = CGRectMake(x, y, width, height);
// Set background color for adaptive MRECs to be fully functional
self.adView.backgroundColor = «background-color»;
[self.view addSubview: self.adView];
// Load the ad
[self.adView loadAd];
}

处理自适应广告尺寸

您加载的自适应广告可能小于您请求的尺寸。您可能希望根据所展示的自适应广告的尺寸,配置 UI 以实现相应的适配。那么请使用如下代码,获取已加载广告的宽度和高度 (以 point 为单位):

- (void)didLoadAd:(MAAd *)ad
{
CGSize adViewSize = ad.size;
CGFloat width = adViewSize.width;
CGFloat height = adViewSize.height;
}

停止和启动自动刷新

您可能想要停止广告的自动刷新。 例如,当您隐藏横幅广告或想要手动刷新时,您可能想要这样做。 使用以下代码停止横幅或 MREC 广告的自动刷新:

// Set this extra parameter to work around SDK bug that ignores calls to stopAutoRefresh()
[adView setExtraParameterForKey: @"allow_pause_auto_refresh_immediately" value: @"true"];
[adView stopAutoRefresh];

使用以下调用启动横幅或 MREC 广告的自动刷新:

[adView startAutoRefresh];

使用以下调用手动刷新内容。 在调用 loadAd() 之前您必须停止自动刷新。

[adView loadAd];