アドバンス設定
広告プレースメント
各広告ユニットにプレースメント名を設定することができます(例:「Rewarded VideoLevels」、「INTER_levelEnd」、「RewardedVideoCoinStore」など)。 これにより、異なるプレースメントカテゴリーの統計を集計することができます。 以下のスニペットは、さまざまな広告フォーマットのプレースメント名を設定する方法を示しています。
バナー / MREC
adView.setPlacement( "«placement»" );adView.loadAd();
adView.setPlacement( "«placement»" )adView.loadAd()
インタースティシャル広告
interstitial.showAd( "«placement»" );
interstitial.showAd( "«placement»" )
リワード広告
rewardedAd.showAd( "«placement»" );
rewardedAd.showAd( "«placement»" )
ネイティブ広告
nativeAdLoader.setPlacement( "«placement»" );
nativeAdLoader.setPlacement( "«placement»" )
ネイティブ広告(Ad Placer)
MaxAdPlacerSettings settings = new MaxAdPlacerSettings( "«ad-unit-ID»" );settings.setPlacement( "«placement»" );
val settings = MaxAdPlacerSettings( "«ad-unit-ID»" )settings.placement = "«placement»"
音声をミュート
アプリを起動する際に、一部のメディエーションSDKネットワークの音声をミュートすることができます。 AppLovin SDKをとおしてこの機能をサポートしているネットワークは、Google Bidding、 Google AdMob 、AppLovin、DT Exchange、 Google アド マネージャー、LINE、Mintegral、Tencent、Verveです。 他のネットワークについては、この機能が利用可能かどうか、またそのアクセス方法について、ネットワークのアカウントチームにお問い合わせください。
以下のコードスニペットは、この機能をサポートするネットワークで音声をミュートする方法を示しています。
AppLovinSdk sdk = AppLovinSdk.getInstance( context );sdk.getSettings().setMuted( true ); // to mutesdk.getSettings().setMuted( false ); // to unmute
val sdk = AppLovinSdk.getInstance( context )sdk.settings.setMuted( true ) // to mutesdk.settings.setMuted( false ) // to unmute
Verboseログを有効化
SDKの設定オブジェクトでブーリアンフラグを設定し、verboseログを有効にします。
プログラムで
AppLovinSdk.getInstance( context ).getSettings().setVerboseLogging( true );
AppLovinSdk.getInstance( context ).settings.setVerboseLogging( true )
Androidマニフェスト
アプリケーションのAndroidマニフェストファイルを編集することで、verboseログを有効にすることも可能です。
これには、以下のように<meta-data>
要素を追加します。
<application>⋮ <meta-data android:name="applovin.sdk.verbose_logging" android:value="true" />⋮</application>
検証
Verboseログを正常に有効化したことを確認するには、AppLovin SDKのログの初期化セクションに、Verbose Logging On: true
と表示される行を確認してください。
AppLovin SDKVersion: 11.4.2⋮Verbose Logging On: true⋮
AppLovin SDKは、そのログに「/AppLovinSdk: [AppLovinSdk]
」というタグを付けます。
クリエイティブIDとネットワーク名
さまざまなメディエーションネットワークから表示された広告のクリエイティブIDとネットワーク名を取得できます。 詳細については、the Creative Debugger documentation を参照してください。
DSP名
AppLovin Exchangeから配信されたMAX広告のDSP(デマンドサイドプラットフォーム)の名前を取得するには、広告のgetDspName()
メソッド呼び出します。
@Overridepublic void onAdLoaded(final MaxAd ad){ System.out.println( "AppLovin Exchange DSP name: " + ad.getDspName() );}
override fun onAdLoaded(maxAd: MaxAd){ println( "AppLovin Exchange DSP Name: " + maxAd.getDspName() )}
インプレッションレベルのユーザー収益API
SDKバージョン10.3.0より、クライアント側のインプレッションレベルのユーザー収益データにアクセスできるようになりました。 このデータは、異なるソースやキャンペーンの比較に利用できます。 また、MAXの ユーザー収益APIを使用して、このデータにアクセスすることも可能です。 このデータへのアクセスを希望するMMPは、必ずMMP向けのインプレッションレベルのユーザー収益APIページを参照してください。
サポートされているすべてのネットワークに対して、Adjust などのモバイル計測パートナーとインプレッションレベルの広告収益データを共有できます。
すべての広告ライフサイクルコールバックで収益額を取得できます。
これを行うには、MaxAdRevenueListener
を作成して、そのonAdRevenuePaid()
メソッドを実装し、そのリスナーをsetRevenueListener()
に渡します。
以下の例は、このような「広告収益支払い済み」コールバックの実装方法を示したものです。
@Overridevoid onAdRevenuePaid(final MaxAd ad){ double revenue = ad.getRevenue(); // In USD
// Miscellaneous data String countryCode = AppLovinSdk.getInstance( context ).getConfiguration().getCountryCode(); // "US" for the United States, etc - Note: Do not confuse this with currency code which is "USD" String networkName = ad.getNetworkName(); // Display name of the network that showed the ad String adUnitId = ad.getAdUnitId(); // The MAX Ad Unit ID MaxAdFormat adFormat = ad.getFormat(); // The ad format of the ad (e.g. BANNER, MREC, INTERSTITIAL, REWARDED) String placement = ad.getPlacement(); // The placement this ad's postbacks are tied to String networkPlacement = ad.getNetworkPlacement(); // The placement ID from the network that showed the ad}
override fun onAdRevenuePaid(ad: MaxAd){ val revenue = ad.revenue // In USD
// Miscellaneous data val countryCode = AppLovinSdk.getInstance( context ).configuration.countryCode // "US" for the United States, etc - Note: Do not confuse this with currency code which is "USD" val networkName = ad.networkName // Display name of the network that showed the ad val adUnitId = ad.adUnitId // The MAX Ad Unit ID val adFormat = ad.format // The ad format of the ad (e.g. BANNER, MREC, INTERSTITIAL, REWARDED) val placement = ad.placement // The placement this ad's postbacks are tied to val networkPlacement = ad.networkPlacement // The placement ID from the network that showed the ad}
以下の例のように、収益値の精度評価を取得することもできます。
String revenuePrecision = ad.getRevenuePrecision();
val revenuePrecision = ad.revenuePrecision
この精度は、以下のいずれかの値を取ります。
"publisher_defined"
- 収益額はパブリッシャーによって指定された価格です
"exact"
- 収益額はリアルタイムオークションによって算出されます
"estimated"
- 収益額はAuto-CPMまたはFBビディングの推定に基づいています
"undefined"
- 収益額が定義されておらず、推定するのに十分なデータがありません
""
- 収益と精度が有効ではありません(テストモードなど)
広告リクエストコールバックの設定
広告リクエスト開始を待機するには、MaxAdRequestListener
を設定し、そのonAdRequestStarted()
メソッドを実装して、そのリスナーをsetRequestListener()
に渡します。
以下の例は、このような「広告リクエスト開始」コールバックの実装方法を示したものです。
@Overridepublic void onAdRequestStarted(final String adUnitId){ // Ad request started here}
override fun onAdRequestStarted(adUnitId: String){ // Ad request started here}
Selective Init
特定の広告ユニットを使用してSDKを初期化できます。 このときSDKは、指定の広告ユニットに設定されたネットワークのみを初期化します。 広告ユニットを指定しない場合、SDKは、現在のセッションにすべての広告ユニットが必要だと見なします。 その結果、すべての広告ユニットに設定されているネットワークがすべて初期化されます。 以下の例は、この機能の実装方法を示したものです。
AppLovinSdkSettings settings = new AppLovinSdkSettings( context );List<String> adUnitIds = new ArrayList<>();adUnitIds.add( "«ad-unit-ID-1»" );adUnitIds.add( "«ad-unit-ID-2»" );settings.setInitializationAdUnitIds( adUnitIds );
AppLovinSdk sdk = AppLovinSdk.getInstance( settings, context );sdk.setMediationProvider( "max" );sdk.initializeSdk( new AppLovinSdk.SdkInitializationListener() { @Override public void onSdkInitialized(final AppLovinSdkConfiguration config) { ⋮ }} );
val settings = AppLovinSdkSettings( context )settings.initializationAdUnitIds = arrayListOf( "«ad-unit-ID-1»", "«ad-unit-ID-2»" )
val sdk = AppLovinSdk.getInstance( settings, context );sdk.mediationProvider = "max"sdk.initializeSdk({ config -> ⋮})
Waterfall Information API
Waterfall Information APIは、広告の現在のウォーターフォール(ロードされたもの、またはロードに失敗したもの)について通知します。APIは、ウォーターフォール内の各広告のロード状態、待ち時間、資格情報、およびメディエーションネットワーク情報を返します。 ウォーターフォール内の広告がロードに失敗した場合、APIはエラー情報を提供します。
このAPIは、Android SDKバージョン10.3.5以降でサポートされます。
AdLoadStateの値
値 | 説明 |
---|---|
0 | Ad Load Not Attempted |
1 | Ad Loaded |
2 | Ad Failed To Load |
例
- Java
- Kotlin
- アウトプット
@Overridepublic 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 ); }}
@Overridepublic 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() ); }}
override fun onAdLoaded(ad: MaxAd?) { val waterfall = ad?.waterfall ?: return println( "Waterfall Name: " + waterfall.name + " and Test Name: " + waterfall.testName ) println( "Waterfall latency was: " + waterfall.latencyMillis + " milliseconds" )
var waterfallInfoStr: String for ( networkResponse in waterfall.networkResponses ) { waterfallInfoStr = "Network -> ${ networkResponse.mediatedNetwork }" + "\n...adLoadState: ${ networkResponse.adLoadState }" + "\n...latency: ${ networkResponse.latencyMillis } milliseconds" + "\n...credentials: ${ networkResponse.credentials }" if ( networkResponse.error != null ) { waterfallInfoStr += "\n...error: ${ networkResponse.error }" } println( waterfallInfoStr ) }}
override fun onAdLoadFailed(adUnitId: String?, error: MaxError?) { val waterfall = error?.waterfall ?: return println( "Waterfall Name: " + waterfall.name + " and Test Name: " + waterfall.testName ) println( "Waterfall latency was: " + waterfall.latencyMillis + " milliseconds" )
for ( networkResponse in waterfall.networkResponses ) { println( "Network -> ${ networkResponse.mediatedNetwork }" + "...latency: ${ networkResponse.latencyMillis } milliseconds" + "...credentials: ${ networkResponse.credentials }" + "...error: ${ networkResponse.error }" ) }}
Waterfall Name: Default Waterfall and Test Name: ControlWaterfall latency was: 6668 millisecondsNetwork -> MaxMediatedNetworkInfo{name=ironSource, adapterClassName=com.applovin.mediation.adapters.IronSourceMediationAdapter, adapterVersion=7.1.10.1.0, sdkVersion=7.1.10.1} ...adLoadState: FAILED_TO_LOAD ...latency: 1542 milliseconds ...credentials: Bundle[{app_key=88a0872d, placement_id=0}] ...error: MaxAdapterError{errorCode=-5200, errorMessage="Unspecified Error", thirdPartySdkErrorCode=510, thirdPartySdkErrorMessage="Load failed - Failed to load Interstitial ad"}
Network -> MaxMediatedNetworkInfo{name=Mintegral, adapterClassName=com.applovin.mediation.adapters.MintegralMediationAdapter, adapterVersion=15.7.61.0, sdkVersion=MAL_15.7.61} ...adLoadState: AD_LOADED ...latency: 4676 milliseconds ...credentials: Bundle[{app_id=118244, app_key=57205cd060e7e051e5bcccaae6bd2b64, placement_id=515486}]
Network -> MaxMediatedNetworkInfo{name=ironSource, adapterClassName=com.applovin.mediation.adapters.IronSourceMediationAdapter, adapterVersion=7.1.10.1.0, sdkVersion=7.1.10.1} ...adLoadState: AD_LOAD_NOT_ATTEMPTED ...latency: -1 milliseconds ...credentials: Bundle[{app_key=88a0872d, placement_id=1171359}]
バナー広告 / MREC広告のリフレッシュをカスタマイズ
バナーとミディアムレクタングル(MREC)広告のリフレッシュ間隔は、広告ユニットUIによる設定と同様に、API経由でカスタマイズできます。 リフレッシュ間隔の最小値は10秒、最大値は120秒で、この範囲以外の値は無視されます。 以下のコードサンプルは、リフレッシュ間隔をカスタマイズする方法を示すものです。
// Where adView is an instance of MaxAdViewadView.setExtraParameter( "ad_refresh_seconds", «ad-refresh-rate» );
// Where adView is an instance of MaxAdViewadView.setExtraParameter( "ad_refresh_seconds", «ad-refresh-rate» )