アドバンス設定
広告プレースメント
各広告ユニットにプレースメント名を設定することができます(例:「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
You can access impression-level user revenue data on the client side. You can use this data to compare different sources and campaigns. You can also access this data by using the MAX User Revenue API. MMPs who want to access this data should review the Impression-Level User Revenue API for MMPs documentation.
サポートされているすべてのネットワークに対して、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
AppLovinSdkInitializationConfiguration
内の広告ユニットを指定してSDKを初期化できます。
このときSDKは、指定の広告ユニットに設定されたネットワークのみを初期化します。
広告ユニットを指定しない場合、SDKは現在のセッションにすべての広告ユニットが必要だと見なします。
その結果、すべての広告ユニットに設定されているネットワークがすべて初期化されます。
以下の例は、この機能の実装方法を示したものです。
AppLovinSdkInitializationConfiguration.Builder initConfigBuilder = AppLovinSdkInitializationConfiguration.builder( «your-SDK-key», this );initConfigBuilder.setMediationProvider( AppLovinMediationProvider.MAX );List<String> adUnitIds = new ArrayList<>();adUnitIds.add( "«ad-unit-ID-1»" );adUnitIds.add( "«ad-unit-ID-2»" );initConfigBuilder.setAdUnitIds( adUnitIds );
AppLovinSdk.getInstance( this ).initialize( initConfig, new AppLovinSdk.SdkInitializationListener() { @Override public void onSdkInitialized(final AppLovinSdkConfiguration sdkConfig) { ⋮ } } );
val adUnitIds = arrayListOf("«ad-unit-ID-1»", "«ad-unit-ID-2»")val initConfigBuilder = AppLovinSdkInitializationConfiguration.Builder(«your-SDK-key», this) .setMediationProvider(AppLovinMediationProvider.MAX) .setAdUnitIds(adUnitIds) .build()
AppLovinSdk.getInstance(this).initialize(initConfig) { sdkConfig -> ⋮}
SDK KeyはAppLovinダッシュボードのAccount > General > Keys のセクションにてご確認ください。
Waterfall Information API
Waterfall Information APIは、広告の現在のウォーターフォール(ロードされたもの、またはロードに失敗したもの)について通知します。APIは、ウォーターフォール内の各広告のロード状態、待ち時間、資格情報、およびメディエーションネットワーク情報を返します。 ウォーターフォール内の広告がロードに失敗した場合、APIはエラー情報を提供します。
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» )