跳转到内容

横幅和 MREC

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

加载横幅或 MREC

要加载横幅或 MREC 广告,请创建一个对应您广告单元的 MaxAdView 对象。 然后调用该对象的 loadAd() 方法。 要展示该广告,请将 MaxAdView 对象添加为视图层级的子视图。 实现 MaxAdViewAdListener以便在广告就绪时收到通知 (您还将收到其他广告相关事件的通知)。

如果您的集成需要在内容流中展示 MREC 广告,AppLovin 的推荐做法如下:

  • 创建尽可能少的实例。
  • 停止自动刷新。
  • 通过调用 loadAd() 手动刷新内容 (重新使用 MaxAdView 实例)。

您可以在 AppLovin 演示应用 (Java, Kotlin) 中找到应用示例。

横幅

public class ExampleActivity extends Activity
implements MaxAdViewAdListener
{
private MaxAdView adView;
void createBannerAd()
{
adView = new MaxAdView( "«ad-unit-ID»", this );
adView.setListener( this );
// Stretch to the width of the screen for banners to be fully functional
int width = ViewGroup.LayoutParams.MATCH_PARENT;
// Banner height on phones and tablets is 50 and 90, respectively
int heightPx = getResources().getDimensionPixelSize( R.dimen.banner_height );
adView.setLayoutParams( new FrameLayout.LayoutParams( width, heightPx ) );
// Set background or background color for banners to be fully functional
adView.setBackgroundColor();
ViewGroup rootView = findViewById( android.R.id.content );
rootView.addView( adView );
// Load the ad
adView.loadAd();
}
// MAX Ad Listener
@Override
public void onAdLoaded(final MaxAd maxAd) {}
@Override
public void onAdLoadFailed(final String adUnitId, final MaxError error) {}
@Override
public void onAdDisplayFailed(final MaxAd maxAd, final MaxError error) {}
@Override
public void onAdClicked(final MaxAd maxAd) {}
@Override
public void onAdExpanded(final MaxAd maxAd) {}
@Override
public void onAdCollapsed(final MaxAd maxAd) {}
@Override
public void onAdDisplayed(final MaxAd maxAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
@Override
public void onAdHidden(final MaxAd maxAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
}

MREC

public class ExampleActivity extends Activity
implements MaxAdViewAdListener
{
private MaxAdView adView;
void createMrecAd
{
adView = new MaxAdView( "«ad-unit-ID»", MaxAdFormat.MREC, this );
adView.setListener( this );
// MREC width and height are 300 and 250 respectively, on phones and tablets
int widthPx = AppLovinSdkUtils.dpToPx( this, 300 );
int heightPx = AppLovinSdkUtils.dpToPx( this, 250 );
adView.setLayoutParams( new FrameLayout.LayoutParams( widthPx, heightPx ) );
// Set background or background color for MRECs to be fully functional
adView.setBackgroundColor( ... );
ViewGroup rootView = findViewById( android.R.id.content );
rootView.addView( adView );
// Load the ad
adView.loadAd();
}
// MAX Ad Listener
@Override
public void onAdLoaded(final MaxAd maxAd) {}
@Override
public void onAdLoadFailed(final String adUnitId, final MaxError error) {}
@Override
public void onAdDisplayFailed(final MaxAd maxAd, final MaxError error) {}
@Override
public void onAdClicked(final MaxAd maxAd) {}
@Override
public void onAdExpanded(final MaxAd maxAd) {}
@Override
public void onAdCollapsed(final MaxAd maxAd) {}
@Override
public void onAdDisplayed(final MaxAd maxAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
@Override
public void onAdHidden(final MaxAd maxAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
}

在布局编辑器中加载并展示横幅或 MREC 广告

您也可以将 MAX 横幅或 MREC 广告添加到视图布局 XML 中。 设置背景或背景色 (android:background),确保广告功能齐全。 如果是横幅,请将宽度 (android:layout_width) 拉伸至与屏幕相同的宽度。 对于 MREC,请相应地设置 android:adFormat

<com.applovin.mediation.ads.MaxAdView
xmlns:maxads="http://schemas.applovin.com/android/1.0"
maxads:adUnitId="«ad-unit-ID»"
android:background="@color/banner_background_color"
android:layout_width="match_parent"
android:layout_height="@dimen/banner_height" />

res/values/attrs.xml 中声明基础横幅高度为 50dp:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="banner_height">50dp</dimen>
</resources>

res/values-sw600dp/attrs.xml 中声明平板电脑横幅高度为 90dp:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="banner_height">90dp</dimen>
</resources>

您还必须通过下列方式,在创建的 MaxAdView 上调用 loadAd():

MaxAdView adView = findViewById( R.id.ad_view );
adView.loadAd();

销毁横幅或 MREC 广告

如果您不再需要 MaxAdView 实例对象,请调用其 destroy() 方法释放资源。 例如,如果用户购买了广告移除服务,就可能发生这种情况。 如果您使用多个具有相同广告单元 ID 的实例,请不要调用 destroy() 方法。

adView.destroy();

自适应横幅

自适应横幅是响应性横幅,其高度取决于设备类型和横幅宽度。 集成自适应横幅的方法与集成常规横幅类似。 但是您必须将高度设置为由 MAAdFormat.banner.adaptiveSize.height 返回的值,而不是 50 或 90 这样的常量值。在加载广告之前,将横幅额外参数 adaptive_banner 设置为 true,如以下代码所示:

void createBannerAd()
{
adView = new MaxAdView( "«ad-unit-ID»", this );
adView.setListener( this );
// Stretch to the width of the screen for banners to be fully functional
int width = ViewGroup.LayoutParams.MATCH_PARENT;
// Get the adaptive banner height.
int heightDp = MaxAdFormat.BANNER.getAdaptiveSize( this ).getHeight();
int heightPx = AppLovinSdkUtils.dpToPx( this, heightDp );
adView.setLayoutParams( new FrameLayout.LayoutParams( width, heightPx ) );
adView.setExtraParameter( "adaptive_banner", "true" );
// Set background or background color for banners to be fully functional
adView.setBackgroundColor();
ViewGroup rootView = findViewById( android.R.id.content );
rootView.addView( adView );
// Load the ad
adView.loadAd();
}

设置自定义宽度

对于更具体的集成,您可以使用本地额外参数 API 设置来自定义宽度 (Google 适配器版本 21.5.0.3 及 Google Ad Manager 适配器版本 21.5.0.2 及更高版本)。 您可以使用自适应尺寸 API 为自定义自适应横幅调取合适的高度。

int width = 400;
int heightDp = MaxAdFormat.BANNER.getAdaptiveSize( width, context ).getHeight();
adView.setLocalExtraParameter( "adaptive_banner_width", width );

内嵌自适应横幅

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

Android 适配器 23.2.0.1 和 iOS 适配器 11.7.0.1 及更新版本均支持内嵌自适应横幅。要启用此功能,请将额外本地参数 adaptive_banner_type 设置为 inline,如以下代码所示:

adView.setLocalExtraParameter( "adaptive_banner_type", "inline" );

您可以设置内嵌自适应横幅的最大高度 (以 dp 为单位)。 您可以使用如下代码来完成此操作,以 100 dp 的高度为例:

adView.setLocalExtraParameter( "inline_adaptive_banner_max_height", 100 );

您可能需要根据自适应横幅尺寸,对 UI 进行配置。 您可以使用如下代码,获取已加载广告的宽度和高度 (以 dp 为单位):

@Override
public void onAdLoaded(final MaxAd maxAd)
{
AppLovinSdkUtils.Size adViewSize = maxAd.getSize();
int widthDp = adViewSize.getWidth();
int heightDp = adViewSize.getHeight();
}

停止和启动自动刷新

您可以停止广告的自动刷新。 当您隐藏广告或想要手动刷新时,可能会需要这个操作。 使用以下代码停止自动刷新:

// Set this extra parameter to work around SDK bug that ignores calls to stopAutoRefresh()
adView.setExtraParameter( "allow_pause_auto_refresh_immediately", "true" );
adView.stopAutoRefresh();

使用以下代码启动广告自动刷新:

adView.startAutoRefresh();

通过调用 loadAd() 手动刷新广告内容。 只有在之前已停止自动刷新的情况下,才能进行此操作。

adView.loadAd();