コンテンツにスキップ

ネイティブ広告(Native ads)

ネイティブ広告を使用すると、既存のデザインと一貫性のある方法でアプリを収益化できます。AppLovin MAX SDKは、広告の個々のアセットへのアクセスを提供します。これにより、広告のレイアウトをアプリのルック&フィールに合わせてデザインできます。SDK は、画像を自動的にキャッシュし、メトリクスを追跡します。そのため、広告をいつ、どこで、どのように表示するかに集中できます。

テンプレート

ネイティブ広告をアプリに連携する最も簡単な方法は、テンプレートAPIを使用することです。 AppLovin MAX SDKでは、ネイティブ広告のアセットがあらかじめ準備されたandroid.view.Viewをロードできます。 APIテンプレートを使用するには、Create New Ad Unit画面で「Small」(360×120dp)または「Midium」(300×250dp)のサイズのテンプレートを選択してください。 「Small」テンプレートのメディアビューの範囲は、テンプレート幅の3分の1と、テンプレートの高さまでを占めます。 「Medium」テンプレートのメディアビューでは、メディアコンテンツの幅と高さは上限までを占め、コンテンツのアスペクト比が維持されます。 必要に応じて最適なサイズを選んでください。 メディアコンテンツが正しく表示されるように、ネイティブ広告のコンテナビューの高さを設定します。 SDKが自動的にビューのレイアウトを処理します。

スモール:テスト広告:フラッドイット! Flood-Itアプリを無料で! 無料人気...取り付ける。 メディア: テスト広告: Flood-It! Flood-Itアプリを無料で! 無料の人気のカジュアルゲーム。 取り付ける。

ネイティブ広告の読み込み

ネイティブ広告をロードするには、広告ユニットに対応するMaxNativeAdLoaderをインスタンス化し、そのloadAd()メソッドを呼び出します。 ネイティブ広告の準備が完了した際に通知されるように、MaxNativeAdLoadListenerを実装します。その他の広告関連イベントの通知を受けるには、MaxAdListenerを実装します。

destroy()メソッドを呼び出して、ネイティブ広告の使用されていないインスタンスをクリーンアップします。

public class ExampleActivity extends Activity
{
private MaxNativeAdLoader nativeAdLoader;
private MaxAd nativeAd;
void createNativeAd()
{
FrameLayout nativeAdContainer = findViewById( R.id.native_ad_layout );
nativeAdLoader = new MaxNativeAdLoader( "«ad-unit-ID»", this );
nativeAdLoader.setNativeAdListener( new MaxNativeAdListener()
{
@Override
public void onNativeAdLoaded(final MaxNativeAdView nativeAdView, final MaxAd ad)
{
// Clean up any pre-existing native ad to prevent memory leaks.
if ( nativeAd != null )
{
nativeAdLoader.destroy( nativeAd );
}
// Save ad for cleanup.
nativeAd = ad;
// Add ad view to view.
nativeAdContainer.removeAllViews();
nativeAdContainer.addView( nativeAdView );
}
@Override
public void onNativeAdLoadFailed(final String adUnitId, final MaxError error)
{
// AppLovin recommends that you retry with exponentially higher delays up to a maximum delay
}
@Override
public void onNativeAdClicked(final MaxAd ad)
{
// Optional click callback
}
} );
nativeAdLoader.loadAd();
}
@Override
protected void onDestroy()
{
// Destroy the native ad and native ad loader to prevent memory leaks.
if ( nativeAd != null )
{
nativeAdLoader.destroy( nativeAd );
}
nativeAdLoader.destroy();
super.onDestroy();
}
}

アセットサイズ

AppLovin Exchangeデマンドの場合、タイトル、説明文、CTAに使用できる最大文字数は以下のとおりです。

アセット最大文字数数
タイトル50文字
説明150文字。149文字の後に省略記号()を150番目の文字として追加できます。
CTA15文字

SDKメディエーションネットワークの場合、ネットワークが最大文字数を設定します。

メディアコンテンツのアスペクト比を取得する方法

次のコード スニペットは、ネイティブ広告のメディア コンテンツのアスペクト比を取得する方法を示しています。

@Override
public void onNativeAdLoaded(final MaxNativeAdView adView, final MaxAd ad)
{
MaxNativeAd nativeAd = ad.getNativeAd();
if ( nativeAd != null )
{
float aspectRatio = nativeAd.getMediaContentAspectRatio();
}
}

サポートされているアダプターのバージョン

アドネットワークアダプターバージョン
BidMachine1.9.4.1
Google アドマネージャー20.5.0.2
Google 入札と Google AdMob20.5.0.2
Inmobi10.0.5.3
LINE2021.5.11.9
Meta Audience Network6.8.0.3
Mintegral15.8.1.1
Pangle4.1.1.5.2
スマート21.6.7.1
VK Ad Network5.14.4.2
Yandex5.3.0.1

マニュアル

この API は、カスタムビューがあり、ネイティブ広告アセットをそれらのビューに手動で読み込む場合に使用します。この統合方法には、次の 3 つの大まかな手順が含まれます。

  1. UI コンポーネントをバインドします。
  2. ネイティブ広告を読み込みます。
  3. ネイティブ広告を破棄します。

手動APIを使用するには、Create New Ad Unit画面でManualテンプレートを選択してください。

テンプレート: ☐ Small, ☐ Medium, ☒ Manual

バインドUIコンポーネント

カスタム UI コンポーネントを MAX SDK にバインドできます。その後、ネイティブ広告アセットをそれらのコンポーネントにレンダリングできます。次の例は、レイアウトエディタを使用して作成したカスタムビューと一意のビュー ID でこれを示しています。ただし、ビューをプログラムで作成する場合は、この方法を使用することもできます。

AppLovinのポリシーでは、広告にプライバシー情報アイコンを含める必要があります。 このアイコンは、重要なプライバシー通知にリンクしており、MaxNativeAdViewBinder.Builder#setOptionsContentViewGroupId(…)経由でバインドできます。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon_image_view"
… />
<LinearLayout
android:id="@+id/ad_options_view"
… />
<TextView
android:id="@+id/title_text_view"
… />
<FrameLayout
android:id="@+id/star_rating_view"
… />
<TextView
android:id="@+id/advertiser_textView"
… />
<TextView
android:id="@+id/body_text_view"
… />
<FrameLayout
android:id="@+id/media_view_container"
… />
<Button
android:id="@+id/cta_button"
… />
</androidx.constraintlayout.widget.ConstraintLayout>

次に、一意のビューIDを使用してサブビューをMaxNativeAdViewBinderのインスタンスにバインドします。 AppLovinは、ネットワークが特定のアセットを返すことを保証しません。

public class ExampleActivity
extends Activity
implements MaxAdRevenueListener
{
private MaxNativeAdView createNativeAdView()
{
MaxNativeAdViewBinder binder = new MaxNativeAdViewBinder.Builder( R.layout.native_custom_ad_view )
.setTitleTextViewId( R.id.title_text_view )
.setBodyTextViewId( R.id.body_text_view )
.setStarRatingContentViewGroupId( R.id.star_rating_view )
.setAdvertiserTextViewId( R.id.advertiser_textView )
.setIconImageViewId( R.id.icon_image_view )
.setMediaContentViewGroupId( R.id.media_view_container )
.setOptionsContentViewGroupId( R.id.options_view )
.setCallToActionButtonId( R.id.cta_button )
.build();
return new MaxNativeAdView( binder, this );
}
}

ネイティブ広告を読み込む

プリレンダリングされた広告を読み込む

プリレンダリングされたネイティブ広告をロードするには、広告ユニットIDに対応するMaxNativeAdLoaderをインスタンス化して、そのloadAd(MaxNativeAdView)メソッドを呼び出します。 ネイティブ広告のロードステートが変更された際に通知されるように、MaxNativeAdLoadListenerを実装し、設定します。

広告の読み込みとレンダリングを別々に行う

ネイティブ広告をロードするには、広告ユニットIDに対応するMaxNativeAdLoaderをインスタンス化して、そのloadAd()メソッドを呼び出します。 ネイティブ広告のロードステートが変更された際に通知されるように、MaxNativeAdLoadListenerを実装し、設定します。次に、onNativeAdLoadedで返されるMaxAdを使用して広告ビューをレンダリングします。 これを行うには、MaxNativeAdLoader.render(MaxNativeAdView, MaxAd)を呼び出してください。

ネイティブ広告を破棄する

ネイティブ広告の使用を中止する場合は、destroy()メソッドを呼び出してリソースをクリーンアップします。 これを行わない場合、アプリのパフォーマンスは時間とともに低下します。 以下は、ネイティブ広告をロードして破棄する方法の例です。 これは、前の手順でUIコンポーネントをバインドした後に行います。

public class ExampleActivity
extends Activity
implements MaxAdRevenueListener
{
private ViewGroup nativeAdContainerView;
private MaxNativeAdLoader nativeAdLoader;
private MaxAd loadedNativeAd;
private void createNativeAdLoader()
{
nativeAdLoader = new MaxNativeAdLoader( "«ad-unit-ID»", this );
nativeAdLoader.setRevenueListener( this );
nativeAdLoader.setNativeAdListener( new NativeAdListener() );
}
private void loadNativeAd()
{
nativeAdLoader.loadAd( createNativeAdView() );
}
@Override
public void onAdRevenuePaid(final MaxAd ad) { }
private class NativeAdListener
extends MaxNativeAdListener
{
@Override
public void onNativeAdLoaded(final MaxNativeAdView nativeAdView, final MaxAd nativeAd)
{
// Clean up any pre-existing native ad to prevent memory leaks.
if ( loadedNativeAd != null )
{
nativeAdLoader.destroy( loadedNativeAd );
}
// Save ad for cleanup.
loadedNativeAd = nativeAd;
nativeAdContainerView.removeAllViews();
nativeAdContainerView.addView( nativeAdView );
}
@Override
public void onNativeAdLoadFailed(final String adUnitId, final MaxError error)
{
// Native ad load failed.
// AppLovin recommends retrying with exponentially higher delays up to a maximum delay.
}
@Override
public void onNativeAdClicked(final MaxAd nativeAd) { }
}
@Override
protected void onDestroy()
{
// Destroy the native ad and native ad loader to prevent memory leaks.
if ( loadedNativeAd != null )
{
nativeAdLoader.destroy( loadedNativeAd );
}
nativeAdLoader.destroy();
super.onDestroy();
}
}

アセットサイズ

AppLovinは、アプリの他の部分がどのように見えるかという文脈で適切なだけ、ネイティブ要素を組み込むことを推奨しています。これらには、タイトルとメディアビューまたはアイコンが含まれる場合があります。ユーザーに詳細情報を提供すれば、広告をクリックするかどうかをユーザーが判断しやすくなります。

AppLovin Exchangeデマンドの場合、タイトル、説明文、CTAに使用できる最大文字数は以下のとおりです。

アセット最大文字数数
タイトル50文字
説明150文字。149文字の後に省略記号()を150番目の文字として追加できます。
CTA15文字

SDKメディエーションネットワークの場合、ネットワークが最大文字数を設定します。

メディアコンテンツのアスペクト比を取得する方法

次のコード スニペットは、ネイティブ広告のメディア コンテンツのアスペクト比を取得する方法を示しています。

@Override
public void onNativeAdLoaded(final MaxNativeAdView adView, final MaxAd ad)
{
MaxNativeAd nativeAd = ad.getNativeAd();
if ( nativeAd != null )
{
float aspectRatio = nativeAd.getMediaContentAspectRatio();
}
}

サポートされているアダプターのバージョン

アドネットワークアダプターバージョン
BidMachine1.9.4.1
Google アドマネージャー20.5.0.2
Google 入札と Google AdMob20.5.0.2
Inmobi10.0.5.3
LINE2021.5.11.9
Meta Audience Network6.8.0.3
Mintegral15.8.1.1
Pangle4.1.1.5.2
スマート21.6.7.1
VK Ad Network5.14.4.2
Yandex5.3.0.1

星評価

AppLovin MAX SDK v11.7.0以降、広告されたアプリの星評価にアクセスしてレンダリングできます。この値は、使用可能な場合、[0.0, 5.0] の範囲の浮動小数点数です。

MAX SDK は、星評価コンテナとして指定したコンテナ ビューに星を自動的にレンダリングします。ネットワークが星評価を提供していない場合、または星評価が < 3 の場合、SDK は星評価コンテナビューを埋めません。それに応じてレイアウトを調整する責任があります。

現在の広告の星評価を取得するには:

@Override
public void onNativeAdLoaded(final MaxNativeAdView adView, final MaxAd ad)
{
MaxNativeAd nativeAd = ad.getNativeAd();
if ( nativeAd != null )
{
Double starRating = nativeAd.getStarRating();
if ( starRating == null || starRating < 3 )
{
// Star rating not available, or < 3 - hide star rating container view
return;
}
// Star rating available and >= 3 - show star rating container view
}
}

サポートされているアダプターのバージョン (星評価)

アドネットワークアダプターバージョン
Google アドマネージャー20.5.0.2
Google 入札と Google AdMob20.5.0.2
Inmobi10.1.2.3
Mintegral16.3.41.1

広告プレーサー

Ad PlacerはRecyclerViewを使用して、既存のコンテンツストリームにネイティブ広告を自動的に挿入します。 このAPIを連携するには、以下の手順に従ってください。

  1. ネイティブ広告のレイアウトを設定します。
  2. 広告プレーサー設定を作成します。
  3. 広告プレーサーを設定します。
  4. 広告のレンダリング設定を構成します。
  5. 必要に応じて、listener を設定します。

これらの手順については、以下で詳しく説明します。

AppLovinのポリシーでは、広告にプライバシー情報アイコンを含める必要があります。 このアイコンは、重要なプライバシー通知にリンクしており、MaxNativeAdViewBinder.Builder#setOptionsContentViewGroupId(…)経由でバインドできます。

1. ネイティブ広告レイアウトを設定する

Ad Placerは、テンプレートまたは手動のネイティブ広告レイアウトをサポートします。 広告レイアウトの設定方法については、このページの「テンプレート」および「手動」セクションを参照してください。 Ad Placerを設定してレイアウトをサポートする方法については、以下の広告レンダリングの設定を参照してください。

2. 広告プレーサー設定を作成する

広告ユニット識別子を使用して MaxAdPlacerSettings オブジェクトを作成します。 このオブジェクトは、Ad Placerを設定し、フィード内の広告の位置情報を提供します。

MaxAdPlacerSettings settings = new MaxAdPlacerSettings( "«ad-unit-ID»" );

広告の位置を設定する

Ad placer はフィードに広告を配置します。これは、次のうち少なくとも 1 つに基づいて行われます。

  1. 広告を配置する場所を示す固定インデックス パスの一覧
  2. 広告を定期的に挿入する間隔
    • 広告プレーサーでは、最後の固定位置の後に繰り返し広告が挿入されます。固定掲載順位を設定しない場合、広告掲載枠はストリームの最初の掲載順位の後に繰り返し広告を追加します。この間隔値は 2 以上である必要があります。 間隔の値が 2 より小さいと、広告プレーサーは無効になります。

MaxAdPlacerSettingsを変更して広告位置を設定します。

  1. 新しい固定広告の掲載順位(行 1 など)を追加するには:

    settings.addFixedPosition( 3 );

  2. 既存の固定ポジションを削除するには:

    settings.resetFixedPositions();

  3. 繰り返しの間隔を変更するには(たとえば、フィードの 5 つの位置に広告を挿入する):

    settings.setRepeatingInterval( 5 );

追加設定

Ad Placerに設定を加えるには、MaxAdPlacerSettingsの設定を調整します。

maxAdCount
ストリーム内の広告の最大数を設定します (デフォルト = 256)。ストリームに複数のセクションが含まれている場合は、広告セクションあたりの広告の最大数を決定します。
maxPreloadedAdCount
ストリームに配置するためにプリロードする広告の最大数に設定します(デフォルト = 4)。

3. Ad Placer を設定する

広告プレーサーを設定する際には、次の 2 つのオプションのいずれかを選択します。

  1. フィードがRecyclerViewベースの場合、MaxRecyclerAdapterを使用します。ヘルパークラスが元のアダプターをラップし、広告を自動的にレンダリングして、フィードに挿入します。 基盤となるAd Placerにアクセスするには、getAdPlacer()を呼び出します。
  2. MaxAdPlacerはサブクラス化するか、直接使用できます。これは、例えば、フィードに他のカスタムUIコンポーネントを使用する場合に利用します。

MaxRecyclerAdapter の使用

MaxRecyclerAdapter でAd Placerを設定するには、以下の手順に従ってください。

  1. MaxRecyclerAdapterの設定、元のアダプター、アクティビティを初期化します。

    adAdapter = new MaxRecyclerAdapter( settings, adapter, this );

  2. リサイクラービューのアダプターをインスタンス化された MaxRecyclerAdapterに設定してください:

    recyclerView.setAdapter(adAdapter );

  3. コードを更新して、以下を実装します。
    • ストリームに項目を追加または削除するたびに、アダプターから適切なメソッドを呼び出します。次の方法では、配信の更新を広告掲載者に通知します。
      • notifyItemInserted()
      • notifyItemRemoved()
      • notifyItemsInserted()
      • notifyItemsRemoved()
    • 元のアダプターにデータオブザーバーを登録している場合は、代わりにMaxRecyclerAdapterに登録してください。 これにより、広告挿入後にコンテンツアイテムの調整された位置を取得できます。
    • 広告挿入前のコードの他の部分がコンテンツアイテムの位置に依存している場合は、元の位置に変換してください。 これを行うには、adAdapter.getOriginalPosition()を呼び出します。
  4. loadAds()を呼び出して、広告のロードを開始します。

    adAdapter.loadAds();

以下のコードは、MaxRecyclerAdapterを使用して広告をリサイクラービューにロードする方法を示しています。

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate( savedInstanceState );
// Create your own recycler view and original adapter
// Configure ad adapter
MaxAdPlacerSettings settings = new MaxAdPlacerSettings( "«ad-unit-ID»" );
settings.setRepeatingInterval( 5 );
adAdapter = new MaxRecyclerAdapter( settings, originalAdapter, this );
// Optionally, register listener
adAdapter.setListener( this );
// Configure recycler view and load ads
recyclerView.setAdapter( adAdapter );
adAdapter.loadAds();
}
@Override
public void onDestroy()
{
adAdapter.destroy();
super.onDestroy();
}

4. 広告レンダリング設定を構成する

テンプレート

デフォルトのテンプレートを使用すると、広告ビューのサイズは「小」の場合は 360×120、「中」の場合は 360×300 に自動的に表示されます。

広告をロードする前にAd PlacerのsetAdSizeプロパティを設定することで、レンダリングされる広告のサイズをカスタマイズできます。 例えば、広告サイズを幅300、高さ200に設定するには、以下を呼び出します。

adAdapter.getAdPlacer().setAdSize( 300, 200 );

幅または高さとして、-1 (MATCH_PARENT) の値を渡すこともできます。 これを行うと、広告ビューは親ビューの対応するディメンションに表示されます。

マニュアル

手動レイアウトを使用する場合は、広告をロードする前にAd PlacerでsetNativeAdViewBinderを呼び出す必要があります。 手動テンプレートを使用する場合は、常に広告サイズを設定してください。 これにより、レンダリングが最適化されます。

5. オプションでリスナーを設定

広告プレーサーは、イベントを通知するオプションのリスナーをサポートしています。

  • onAdLoaded()
  • onAdRemoved()
  • onAdClicked()
  • onAdRevenuePaid()