詳細設定

Ad placements

広告ユニットごとに placement 名を設定できます(例:「Rewarded VideoLevels」、「INTER_levelEnd」、「RewardedVideoCoinStore」)。 これにより、さまざまな placement カテゴリの統計情報を収集するのに役立ちます。 以下のスニペットは、さまざまな広告フォーマットで placement 名を設定する方法を示しています。

Banners / MRECs

banner および MREC の場合は、banner または MREC をロードする前に placement 名を設定する必要があります。

adView.setPlacement( "«placement»" );
adView.loadAd();

Interstitials

interstitial.showAd( "«placement»" );

Rewarded ads

rewardedAd.showAd( "«placement»" );

Native ads

nativeAdLoader.setPlacement( "«placement»" );

Native ads (ad placer)

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

Mute audio

アプリの起動時に、一部のメディエーション対象のSDKネットワークで音声をミュートに設定できます。 AppLovin SDK経由でこの機能をサポートしているネットワークは以下の通りです。

  • AppLovin
  • Bigo (nativeのみ)
  • DT Exchange
  • Google Ad Manager
  • Google biddingおよびGoogle AdMob
  • LINE
  • Mintegral

その他のネットワークについては、この機能が利用可能かどうか、およびアクセス方法について、各ネットワークのアカウントチームにお問い合わせください。

以下のコードスニペットは、この機能をサポートしているネットワークで音声をミュートにする方法を示しています。

AppLovinSdk sdk = AppLovinSdk.getInstance( context );
sdk.getSettings().setMuted( true );  // ミュートにする場合
sdk.getSettings().setMuted( false ); // ミュートを解除する場合

広告をロードする前にミュート状態を設定してください。 一部のネットワーク(Google biddingやGoogle AdMobなど)は、広告ロード前のミュート状態に応じて、ミュートまたはミュート解除された動画を返します。

注意:広告をミュートにすると、広告収益が低下する可能性があります。

Enable verbose logging

SDKの設定オブジェクトでブーリアンフラグを設定することで、詳細ログ(verbose logs)を有効にできます。

プログラムによる設定

AppLovinSdk.getInstance( context ).getSettings().setVerboseLogging( true );

Android manifest

アプリケーションのAndroid Manifestファイルを編集することでも、詳細ログを有効にできます。 以下のように <meta-data> 要素を追加してください。

<application>
⋮
  <meta-data android:name="applovin.sdk.verbose_logging" android:value="true" />
⋮
</application>

検証

詳細ログが有効になっていることを確認するには、AppLovin SDKログの初期化セクションで Verbose Logging On: true と表示されている行を確認してください。

AppLovin SDK
Version: 12.4.2
⋮
Verbose Logging On: true
⋮

AppLovin SDKは、ログに「/AppLovinSdk: [AppLovinSdk]」というタグを付与します。

Creative ID and network name

メディエーション対象ネットワークから、表示された広告のcreative IDとネットワーク名を取得できます。 詳細については、Creative Debuggerのドキュメントを参照してください。

DSP name

AppLovin Exchangeから配信されたMAX広告のDSP名を取得するには、広告の getDspName() メソッドを呼び出します。

@Override
public void onAdLoaded(final MaxAd ad)
{
  System.out.println( "AppLovin Exchange DSP name: " + ad.getDspName() );
}

Impression-level user revenue API

クライアント側でインプレッションレベルのユーザー収益データにアクセスできます。 このデータを使用して、異なるソースやキャンペーンを比較できます。 また、MAXのuser revenue APIを使用してこのデータにアクセスすることもできます。 このデータへのアクセスを希望するMMPは、MMP向けインプレッションレベルユーザー収益APIのドキュメントをご確認ください。

サポートされているすべてのネットワークについて、Adjustなど、選択したモバイル計測パートナー(MMP)とインプレッションレベルの広告収益データを共有できます。

収益額は、すべての広告ライフサイクルコールバックで取得できます。 これを行うには、MaxAdRevenueListener を作成し、その onAdRevenuePaid() メソッドを実装して、そのリスナーを setRevenueListener() に渡します。 以下の例は、このような「広告収益支払い(ad revenue paid)」コールバックを実装する方法を示しています。

@Override
public void onAdRevenuePaid(final MaxAd ad)
{
  double revenue = ad.getRevenue(); // 米ドル(USD)表記

  // その他のデータ
  String countryCode = AppLovinSdk.getInstance( context ).getConfiguration().getCountryCode(); // 米国の場合は "US" など - 注意:通貨コードである "USD" と混同しないでください
  String networkName = ad.getNetworkName(); // 広告を表示したネットワークの表示名
  String adUnitId = ad.getAdUnitId(); // MAX広告ユニットID
  MaxAdFormat adFormat = ad.getFormat(); // 広告の広告フォーマット(例:BANNER, MREC, INTERSTITIAL, REWARDED)
  String placement = ad.getPlacement(); // この広告のポストバックが紐付けられている placement
  String networkPlacement = ad.getNetworkPlacement(); // 広告を表示したネットワーク側の placement ID
}

エラーが発生した場合、ad.getRevenue()/ad.revenue の値は -1 になることがあります。

以下の例に示すように、収益値の精度評価(precision)を取得することもできます。

String revenuePrecision = ad.getRevenuePrecision();

この精度(precision)は、以下のいずれかの値をとります。

"publisher_defined"
収益額はパブリッシャーによって割り当てられた価格です
"exact"
収益額はリアルタイムオークションの結果です
"estimated"
収益額はAuto-CPMまたはFB Biddingの予測値に基づいています
"undefined"
収益額が定義されておらず、予測するための十分なデータがありません
""
収益および精度が無効です(テストモード時など)

Establishing ad request callbacks

広告リクエストをリッスンするには、MaxAdRequestListener を設定し、その onAdRequestStarted() メソッドを実装して、そのリスナーを setRequestListener() に渡します。 以下の例は、このような「広告リクエスト開始(ad request started)」コールバックを実装する方法を示しています。

@Override
public void onAdRequestStarted(final String adUnitId)
{
  // ここで広告リクエストが開始されます
}

Selective init

AppLovinSdkInitializationConfiguration で広告ユニットを指定することにより、特定の広告ユニットでSDKを初期化できます。 これを行うと、SDKは指定された広告ユニット用に設定されたネットワークのみを初期化します。 広告ユニットを指定しない場合、SDKは現在のセッションですべての広告ユニットが必要であると想定します。 その場合、それらの広告ユニット用に設定されたすべてのネットワークを初期化します。 以下の例は、この機能を実装する方法を示しています。

AppLovinSdkInitializationConfiguration.Builder initConfigBuilder = AppLovinSdkInitializationConfiguration.builder( «your-SDK-key» );
initConfigBuilder.setMediationProvider( AppLovinMediationProvider.MAX );
List<String> adUnitIds = new ArrayList<>();
adUnitIds.add( "«ad-unit-ID-1»" );
adUnitIds.add( "«ad-unit-ID-2»" );
initConfigBuilder.setAdUnitIds( adUnitIds ).build();

AppLovinSdk.getInstance( this ).initialize( initConfigBuilder, new AppLovinSdk.SdkInitializationListener()
  {
    @Override
    public void onSdkInitialized(final AppLovinSdkConfiguration sdkConfig)
    {
      ⋮
    }
  } );

SDKキーは、AppLovinダッシュボードの Account > General > Keys セクションで確認できます。

Selective initを使用する場合、MAXは、明示的に指定しなかった広告ユニットを現在のセッションでの広告配信から除外します。

テストモードを有効にしている場合、Selective initは効果がありません。

Waterfall information API

Waterfall Information APIは、広告(ロードされた広告、またはロードに失敗した広告)の現在のwaterfallに関する情報を提供します。 このAPIは、waterfall内の各広告の広告ロード状態、レイテンシ、認証情報、およびメディエーション対象ネットワーク情報を返します。 waterfall内の広告のロードが失敗した場合、APIはエラー情報を提供します。

AdLoadStateの値

説明
0広告ロード未試行 (Ad Load Not Attempted)
1広告ロード完了 (Ad Loaded)
2広告ロード失敗 (Ad Failed To Load)

@Override
public void onAdLoaded(final MaxAd ad)
{
  MaxAdWaterfallInfo waterfall = ad.getWaterfall();
  if ( waterfall == null ) return;
  System.out.println( "Waterfall Name: " + waterfall.getName() + " and Test Name: " + waterfall.getTestName() );
  System.out.println( "Waterfall latency was: " + waterfall.getLatencyMillis() + " milliseconds" );

  String waterfallInfoStr;
  for ( MaxNetworkResponseInfo networkResponse : waterfall.getNetworkResponses() )
  {
    waterfallInfoStr = "Network -> " + networkResponse.getMediatedNetwork() +
            "\n...adLoadState: " + networkResponse.getAdLoadState() +
            "\n...latency: " + networkResponse.getLatencyMillis() + " milliseconds" +
            "\n...credentials: " + networkResponse.getCredentials();
    if ( networkResponse.getError() != null )
    {
      waterfallInfoStr += "\n...error: " + networkResponse.getError();
    }
    System.out.println( waterfallInfoStr );
  }
}

@Override
public void onAdLoadFailed(final String adUnitId, final MaxError error)
{
  MaxAdWaterfallInfo waterfall = error.getWaterfall();
  if ( waterfall == null ) return;
  System.out.println( "Waterfall Name: " + waterfall.getName() + " and Test Name: " + waterfall.getTestName() );
  System.out.println( "Waterfall latency was: " + waterfall.getLatencyMillis() + " milliseconds" );

  for ( MaxNetworkResponseInfo networkResponse : waterfall.getNetworkResponses() )
  {
    System.out.println( "Network -> " + networkResponse.getMediatedNetwork() +
                        "...latency: " + networkResponse.getLatencyMillis() +
                        "...credentials: " + networkResponse.getCredentials() + " milliseconds" +
                        "...error: " + networkResponse.getError() );
  }
}

waterfallが空の場合、MaxError.getWaterfall()null を返します。 その場合、waterfallのプロパティを調査することはできません。 ただし、以下のように getRequestLatencyMillis() メソッドを呼び出すことで、空のwaterfallに対する広告ロードレイテンシを取得できます。

@Override
public void onAdLoaded(final MaxAd ad)
{
  System.out.println("Successful ad load latency: " + ad.getRequestLatencyMillis() + " ms");
}

@Override
public void onAdLoadFailed(final String adUnitId, final MaxError error)
{
  System.out.println("Failed ad load latency: " + error.getRequestLatencyMillis() + " ms");
}

Customize banner / MREC ad refresh

広告ユニットUIで設定できるのと同様に、APIを介してbannerおよびMRECの広告更新(refresh)間隔をカスタマイズできます。 許容される最小および最大の更新間隔は、それぞれ10秒と120秒です。 MAXはこれらの制限外の値を無視します。 以下のコードサンプルは、これらの更新間隔をカスタマイズする方法を示しています。

// adView が MaxAdView のインスタンスである場合
adView.setExtraParameter( "ad_refresh_seconds", «ad-refresh-rate» );

search