コンテンツにスキップ

ネイティブ広告(Native ads)

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

手動

この 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 Biddingと Google AdMob20.5.0.2
Inmobi10.0.5.3
LINE2021.5.11.9
Meta Audience Network6.8.0.3
Mintegral15.8.1.1
Moloco3.5.0.0
Pangle4.1.1.5.2
Smaato21.6.7.1
VK Ad Network5.14.4.2
Yandex5.3.0.1

星評価

You can access and render the star rating for the advertised app. This value, when available, is a floating point number in the range of [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 Biddingと Google AdMob20.5.0.2
Inmobi10.1.2.3
Mintegral16.3.41.1

Ad Placer

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

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

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

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

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

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

2. Ad Placer設定を作成する

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

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

広告の位置を設定する

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

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

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

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

    settings.addFixedPosition( 3 );

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

    settings.resetFixedPositions();

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

    settings.setRepeatingInterval( 5 );

追加設定

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

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

3. Ad Placer を設定する

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. 広告レンダリング設定を構成

広告をロードする前に、Ad PlacerでsetNativeAdViewBinderを呼び出します。 必ず広告サイズを設定してください。これにより、レンダリングが最適化されます。

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

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

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