バナーおよびMREC広告
バナーおよび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»" ); 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 color for banners to be fully functional adView.setBackgroundColor( «background-color» );
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 */ }}
class ExampleActivity : Activity(), MaxAdViewAdListener{ private var adView: MaxAdView? = null
fun createBannerAd() { adView = MaxAdView("«ad-unit-ID»", this) adView?.setListener(this)
// Stretch to the width of the screen for banners to be fully functional val width = ViewGroup.LayoutParams.MATCH_PARENT
// Banner height on phones and tablets is 50 and 90, respectively val heightPx = resources.getDimensionPixelSize(R.dimen.banner_height)
adView?.layoutParams = FrameLayout.LayoutParams(width, heightPx)
// Set background color for banners to be fully functional adView?.setBackgroundColor(«background-color»)
val rootView = findViewById(android.R.id.content) rootView.addView(adView)
// Load the ad adView?.loadAd() }
// MAX Ad Listener override fun onAdLoaded(maxAd: MaxAd) {}
override fun onAdLoadFailed(adUnitId: String?, error: MaxError?) {}
override fun onAdDisplayFailed(ad: MaxAd?, error: MaxError?) {}
override fun onAdClicked(maxAd: MaxAd) {}
override fun onAdExpanded(maxAd: MaxAd) {}
override fun onAdCollapsed(maxAd: MaxAd) {}
override fun onAdDisplayed(maxAd: MaxAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
override fun onAdHidden(maxAd: MaxAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }}
MRECs
public class ExampleActivity extends Activity implements MaxAdViewAdListener{ private MaxAdView adView;
void createMRecAd { adView = new MaxAdView( "«ad-unit-ID»", MaxAdFormat.MREC ); 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 color for MRECs to be fully functional adView.setBackgroundColor( «background-color» );
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 */ }}
class ExampleActivity : Activity(), MaxAdViewAdListener{ private var adView: MaxAdView? = null
fun createMRecAd() { adView = MaxAdView("«ad-unit-ID»", MaxAdFormat.MREC, this) adView?.setListener(this)
// MREC width and height are 300 and 250 respectively, on phones and tablets val widthPx = AppLovinSdkUtils.dpToPx(this, 300) val heightPx = AppLovinSdkUtils.dpToPx(this, 250)
adView?.layoutParams = FrameLayout.LayoutParams(widthPx, heightPx)
// Set background color for MRECs to be fully functional adView?.setBackgroundColor(«background-color»)
val rootView = findViewById(android.R.id.content) rootView.addView(adView)
// Load the ad adView?.loadAd() }
// MAX Ad Listener override fun onAdLoaded(maxAd: MaxAd) {}
override fun onAdLoadFailed(adUnitId: String?, error: MaxError?) {}
override fun onAdDisplayFailed(ad: MaxAd?, error: MaxError?) {}
override fun onAdClicked(maxAd: MaxAd) {}
override fun onAdExpanded(maxAd: MaxAd) {}
override fun onAdCollapsed(maxAd: MaxAd) {}
override fun onAdDisplayed(maxAd: MaxAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
override fun onAdHidden(maxAd: MaxAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }}
レイアウトエディターにバナーまたはMRECをロードして表示
別の方法として、ビューレイアウトXMLにMAXバナーまたはMRECを追加することもできます。
背景または背景色 (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>
<com.applovin.mediation.ads.MaxAdView xmlns:maxads="http://schemas.applovin.com/android/1.0" maxads:adUnitId="«ad-unit-ID»" maxads:adFormat="MREC" android:background="@color/mrec_background_color" android:layout_width="300dp" android:layout_height="250dp" />
この場合も、以下の方法で作成したMaxAdView
で、loadAd()
を呼び出す必要があります。
MaxAdView adView = findViewById( R.id.ad_view );adView.loadAd();
var adView: MaxAdView = findViewById(R.id.ad_view)adView.loadAd()
バナーおよびMRECを破棄
MaxAdView
インスタンスが不要になった場合は、そのdestroy()
メソッドを呼び出してリソースを解放します。
例えば、ユーザーが広告削除を購入した場合などがこれに該当します。
ただし、同じ広告ユニットIDを持つ複数のインスタンスを使用している場合は、destroy()
メソッドを呼び出さないでください。
adView.destroy();
adView.destroy()
アダプティブバナー
アダプティブバナーは、デバイスの種類や表示可能な幅に応じてディメンションが動的に調整されるレスポンシブな広告です。 アダプティブバナーにはアンカー型とインライン型の2種類があり、それぞれ異なる連携ニーズに対応しています。
MAX SDKバージョン13.2.0以降、MaxAdView
をMaxAdViewConfiguration
オブジェクトで初期化することで、アダプティブバナーを実装できるようになりました。
アンカーアダプティブバナー
アンカーアダプティブバナーは、画面の上部または下部にバナーを固定表示するものです。 デバイスの種類とバナーの幅に基づいて高さを動的に調整します。
MaxAdView
の高さは、50や90のような定数ではなく、MaxAdFormat.BANNER.getAdaptiveSize( Context ).getHeight()
が返す値を使用して設定する必要があります。
void createAnchoredAdaptiveBannerAd(){ // Stretch to the width of the screen for banners to be fully functional int width = ViewGroup.LayoutParams.MATCH_PARENT;
// Get the anchored adaptive banner height int heightDp = MaxAdFormat.BANNER.getAdaptiveSize( this ).getHeight(); int heightPx = AppLovinSdkUtils.dpToPx( this, heightDp );
MaxAdViewConfiguration config = MaxAdViewConfiguration.builder() .setAdaptiveType( MaxAdViewConfiguration.AdaptiveType.ANCHORED ) .build(); adView = new MaxAdView( "«ad-unit-ID»", config ); adView.setListener( this );
adView.setLayoutParams( new FrameLayout.LayoutParams( width, heightPx ) );
// Set background color for banners to be fully functional adView.setBackgroundColor( «background-color» );
ViewGroup rootView = findViewById( android.R.id.content ); rootView.addView( adView );
// Load the ad adView.loadAd();}
fun createAnchoredAdaptiveBannerAd(){ // Stretch to the width of the screen for banners to be fully functional val width = ViewGroup.LayoutParams.MATCH_PARENT
// Get the anchored adaptive banner height val heightDp = MaxAdFormat.BANNER.getAdaptiveSize(this).height val heightPx = AppLovinSdkUtils.dpToPx(this, heightDp)
val config = MaxAdViewConfiguration.builder() .setAdaptiveType( MaxAdViewConfiguration.AdaptiveType.ANCHORED ) .build(); adView = MaxAdView("«ad-unit-ID»", config) adView?.setListener(this)
adView?.layoutParams = FrameLayout.LayoutParams(width, heightPx)
// Set background color for banners to be fully functional adView?.setBackgroundColor(«background-color»)
val rootView = findViewById<ViewGroup>(android.R.id.content) rootView.addView(adView)
// Load the ad adView?.loadAd()}
カスタム幅を設定
より柔軟な連携を行う場合は、MaxAdViewConfiguration
ビルダーメソッドを呼び出すことで、dp単位のカスタム幅を設定できます(Googleアダプターバージョン21.5.0.3、Google Ad Managerアダプターバージョン21.5.0.2、Liftoff Monetizeアダプターバージョン7.4.3.2以降でサポート)。
カスタムのアンカーアダプティブ広告に適切な高さを取得するには、Adaptive Size APIを呼び出してください。
int widthDp = 400;
// Get the anchored adaptive banner heightint heightDp = MaxAdFormat.BANNER.getAdaptiveSize( widthDp, context ).getHeight();
MaxAdViewConfiguration config = MaxAdViewConfiguration.builder() .setAdaptiveType( MaxAdViewConfiguration.AdaptiveType.ANCHORED ) .setAdaptiveWidth( widthDp ) .build();adView = MaxAdView( "«ad-unit-ID»", config );
val widthDp = 400
// Get the anchored adaptive banner heightval heightDp = adView.adFormat.getAdaptiveSize(widthDp, context).height
val config = MaxAdViewConfiguration.builder() .setAdaptiveType(MaxAdViewConfiguration.AdaptiveType.ANCHORED) .setAdaptiveWidth(widthDp) .build()adView = MaxAdView("«ad-unit-ID»", config)
インラインアダプティブバナー
アダプティブバナーは、デフォルトで場所が固定(アンカー)されていますが、インラインアダプティブバナーを有効にすれば、スクロール可能なコンテンツ内にバナーを表示できます。 インラインアダプティブバナーは、通常アンカーアダプティブバナーよりも大きく、高さがあります。 高さは可変で、デバイス画面の高さいっぱいまで伸ばすことが可能です。
インラインアダプティブバナーは、Android Googleアダプターバージョン23.2.0.1 および Liftoff Monetize バージョン7.4.3.2以降でサポートされます。
インラインアダプティブバナーを有効化するには、以下のコードのように、MaxAdViewConfiguration
のアダプティブタイプをMaxAdViewConfiguration.AdaptiveType.INLINE
に設定します。
MaxAdViewConfiguration config = MaxAdViewConfiguration.builder() .setAdaptiveType( MaxAdViewConfiguration.AdaptiveType.INLINE ) ⋮ .build();
val config = MaxAdViewConfiguration.builder() .setAdaptiveType(MaxAdViewConfiguration.AdaptiveType.INLINE) ⋮ .build()
インラインアダプティブ広告の高さの最大値は、デフォルトでデバイス画面の高さと同じになります。
インラインアダプティブ広告を確実にMaxAdView
の高さに収めるには、広告の高さの最大値をdp単位で設定します。以下のコードの例では、最大100dpの高さに設定しています。
MaxAdViewConfiguration config = MaxAdViewConfiguration.builder() .setAdaptiveType( MaxAdViewConfiguration.AdaptiveType.INLINE ) .setInlineMaximumHeight( 100 ) ⋮ .build();
val config = MaxAdViewConfiguration.builder() .setAdaptiveType(MaxAdViewConfiguration.AdaptiveType.INLINE) .setInlineMaximumHeight( 100 ) ⋮ .build()
インラインアダプティブMREC広告
アダプティブMRECは、Android Googleアダプターバージョン23.6.0.3 およびLiftoff Monetizeバージョン 7.4.3.2以降でサポートされています。
MaxAdViewConfiguration.AdaptiveType.INLINE
タイプを正常に機能させるには、インラインアダプティブMRECを設定する必要があります。
インラインアダプティブMRECの幅は、デフォルトでアプリケーション画面の横幅と同じですが、カスタムオプションとして幅をdp単位で指定できます。 高さは可変で、最大値を指定しない場合は、標準的なMRECの高さを超えてデバイス画面の全高まで拡張される可能性があります。 以下の例のように、インラインアダプティブMRECを設定します。
void createInlineAdaptiveMRecAd(){ // Set a custom width, in dp, for the inline adaptive MREC. Otherwise stretch to screen width by using ViewGroup.LayoutParams.MATCH_PARENT int widthDp = 400; int widthPx = AppLovinSdkUtils.dpToPx( this, widthDp );
// Set a maximum height, in dp, for the inline adaptive MREC. Otherwise use standard MREC height of 250 dp // Google recommends a height greater than 50 dp, with a minimum of 32 dp and a maximum equal to the screen height // The value must also not exceed the height of the MaxAdView int heightDp = 300; int heightPx = AppLovinSdkUtils.dpToPx( this, heightDp );
MaxAdViewConfiguration config = MaxAdViewConfiguration.builder() .setAdaptiveType( MaxAdViewConfiguration.AdaptiveType.INLINE ) .setAdaptiveWidth( widthDp ) // Optional: The adaptive ad will span the width of the application window if you do not set a value .setInlineMaximumHeight( heightDp ) // Optional: The maximum height will be the screen height if you do not set a value .build(); adView = new MaxAdView( "«ad-unit-ID»", MaxAdFormat.MREC, config ); adView.setListener( this );
adView.setLayoutParams( new FrameLayout.LayoutParams( widthPx, heightPx ) );
// Set background color for adaptive MRECs to be fully functional adView.setBackgroundColor( «background-color» );
ViewGroup rootView = findViewById( android.R.id.content ); rootView.addView( adView );
// Load the ad adView.loadAd();}
fun createInlineAdaptiveMRecAd(){ // Set a custom width, in dp, for the inline adaptive MREC. Otherwise stretch to screen width by using ViewGroup.LayoutParams.MATCH_PARENT val widthDp = 400; val widthPx = AppLovinSdkUtils.dpToPx(this, widthDp);
// Set a maximum height, in dp, for the inline adaptive MREC. Otherwise use standard MREC height of 250 dp // Google recommends a height greater than 50 dp, with a minimum of 32 dp and a maximum equal to the screen height // The value must also not exceed the height of the MaxAdView val heightDp = 300; val heightPx = AppLovinSdkUtils.dpToPx( this, heightDp );
val config = MaxAdViewConfiguration.builder() .setAdaptiveType(MaxAdViewConfiguration.AdaptiveType.INLINE) .setAdaptiveWidth(widthDp) // Optional: The adaptive ad will span the width of the application window if a value is not specified .setInlineMaximumHeight(heightDp) // Optional: The maximum height will be the screen height if a value is not specified .build() adView = MaxAdView("«ad-unit-ID»", MaxAdFormat.MREC, config) adView?.setListener(this)
adView?.layoutParams = FrameLayout.LayoutParams(width, heightPx)
// Set background color for adaptive MRECs to be fully functional adView?.setBackgroundColor(«background-color»)
val rootView = findViewById(android.R.id.content) rootView.addView(adView)
// Load the ad adView?.loadAd()}
アダプティブ広告サイズを変更
ロードしたアダプティブ広告が、リクエストしたディメンションよりも小さい場合があります。 また、配信されるアダプティブ広告のサイズに合わせて柔軟に適用できるUIを構築したい場合もあるでしょう。 これに対応するには以下のようなコードを使用して、ロードする広告の幅と高さをdp単位で取得します。
@Overridepublic void onAdLoaded(final MaxAd maxAd){ AppLovinSdkUtils.Size adViewSize = maxAd.getSize(); int widthDp = adViewSize.getWidth(); int heightDp = adViewSize.getHeight(); ⋮}
override fun onAdLoaded(ad: MaxAd?){ val adViewSize = ad?.size!! val widthDp = adViewSize.width val heightDp = adViewSize.height ⋮}
自動更新の停止と開始
広告を非表示にする場合や手動で更新する場合など、自動更新を停止したいときは以下のコードを使用します。
// Set this extra parameter to work around SDK bug that ignores calls to stopAutoRefresh()adView.setExtraParameter( "allow_pause_auto_refresh_immediately", "true" );adView.stopAutoRefresh();
// 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();
adView.startAutoRefresh()
loadAd()
を呼び出して、広告コンテンツを手動で更新します。
これは、自動更新を停止している場合にのみ実行できます。
adView.loadAd();
adView.loadAd()