サードパーティSDKをモバイルプロパティに統合する場合、その統合に関する責任はすべてお客様自身が負うものとします。 お客様およびサードパーティSDKプロバイダーは、ユーザーベースまたはデバイスベースのプライバシーの選択やフラグに準拠したデータ処理および取り扱いを確実に行う必要があります。
MAX mediationアダプターをダウンロードしてアプリに統合する方法は2つあります。
アダプターの名前やパッケージ名を変更しないでください。 変更すると、MAX SDKがアダプターを認識できなくなり、広告がロードされなくなります。
以下のチェックボックスをオンにして、統合する仲介広告ネットワークを選択してください。 チェックを入れると、このページにそれらのネットワークに特化した手順が表示されます。
また、このページはお客様向けにカスタマイズされたGradleスクリプトを生成します。
以下のカスタマイズされたGradleスクリプトを、アプリレベルのbuild.gradleにコピーしてください。
// build.gradle
repositories {
google()
mavenCentral()
maven { url "https://artifactory.bidmachine.io/bidmachine" }
maven { url "https://cboost.jfrog.io/artifactory/chartboost-ads/" }
maven { url "https://imobile-maio.github.io/maven" }
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
maven { url "https://maven.ogury.co" }
maven { url "https://artifact.bytedance.com/repository/pangle" }
maven { url "https://repo.pubmatic.com/artifactory/public-repos" }
maven { url "https://s3.amazonaws.com/smaato-sdk-releases/" }
maven { url "https://verve.jfrog.io/artifactory/verve-gradle-release" }
maven { url "https://ysonetwork.s3.eu-west-3.amazonaws.com/sdk/android" }
}
dependencies {
implementation 'com.applovin.mediation:amazon-tam-adapter:+'
implementation 'com.amazon.android:aps-sdk:+'
implementation 'com.applovin.mediation:bidmachine-adapter:+'
implementation 'com.applovin.mediation:bigoads-adapter:+'
implementation 'com.applovin.mediation:chartboost-adapter:+'
implementation 'com.google.android.gms:play-services-base:16.1.0'
implementation 'com.applovin.mediation:fyber-adapter:+'
implementation 'com.applovin.mediation:google-ad-manager-adapter:+'
implementation 'com.applovin.mediation:google-adapter:+'
implementation 'com.applovin.mediation:hyprmx-adapter:+'
implementation 'com.applovin.mediation:inmobi-adapter:+'
implementation 'com.squareup.picasso:picasso:2.8'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.applovin.mediation:ironsource-adapter:+'
implementation 'com.applovin.mediation:vungle-adapter:+'
implementation 'com.applovin.mediation:line-adapter:+'
implementation 'com.applovin.mediation:maio-adapter:+'
implementation 'com.applovin.mediation:facebook-adapter:+'
implementation 'com.applovin.mediation:mintegral-adapter:+'
implementation 'com.applovin.mediation:mobilefuse-adapter:+'
implementation 'com.applovin.mediation:moloco-adapter:+'
implementation 'com.applovin.mediation:ogury-presage-adapter:+'
implementation 'com.applovin.mediation:bytedance-adapter:+'
implementation 'com.applovin.mediation:pubmatic-adapter:+'
implementation 'com.applovin.mediation:smaato-adapter:+'
implementation 'com.applovin.mediation:unityads-adapter:+'
implementation 'com.applovin.mediation:verve-adapter:+'
implementation 'com.applovin.mediation:mytarget-adapter:+'
implementation 'com.applovin.mediation:yandex-adapter:+'
implementation 'com.applovin.mediation:yso-network-adapter:+'
}// build.gradle.kts
repositories {
google()
mavenCentral()
maven { url = uri("https://artifactory.bidmachine.io/bidmachine") }
maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
maven { url = uri("https://imobile-maio.github.io/maven") }
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
maven { url = uri("https://maven.ogury.co") }
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
maven { url = uri("https://repo.pubmatic.com/artifactory/public-repos") }
maven { url = uri("https://s3.amazonaws.com/smaato-sdk-releases/") }
maven { url = uri("https://verve.jfrog.io/artifactory/verve-gradle-release") }
maven { url = uri("https://ysonetwork.s3.eu-west-3.amazonaws.com/sdk/android") }
}
dependencies {
implementation("com.applovin.mediation:amazon-tam-adapter:+")
implementation("com.amazon.android:aps-sdk:+")
implementation("com.applovin.mediation:bidmachine-adapter:+")
implementation("com.applovin.mediation:bigoads-adapter:+")
implementation("com.applovin.mediation:chartboost-adapter:+")
implementation("com.google.android.gms:play-services-base:16.1.0")
implementation("com.applovin.mediation:fyber-adapter:+")
implementation("com.applovin.mediation:google-ad-manager-adapter:+")
implementation("com.applovin.mediation:google-adapter:+")
implementation("com.applovin.mediation:hyprmx-adapter:+")
implementation("com.applovin.mediation:inmobi-adapter:+")
implementation("com.squareup.picasso:picasso:2.8")
implementation("androidx.recyclerview:recyclerview:1.1.0")
implementation("com.applovin.mediation:ironsource-adapter:+")
implementation("com.applovin.mediation:vungle-adapter:+")
implementation("com.applovin.mediation:line-adapter:+")
implementation("com.applovin.mediation:maio-adapter:+")
implementation("com.applovin.mediation:facebook-adapter:+")
implementation("com.applovin.mediation:mintegral-adapter:+")
implementation("com.applovin.mediation:mobilefuse-adapter:+")
implementation("com.applovin.mediation:moloco-adapter:+")
implementation("com.applovin.mediation:ogury-presage-adapter:+")
implementation("com.applovin.mediation:bytedance-adapter:+")
implementation("com.applovin.mediation:pubmatic-adapter:+")
implementation("com.applovin.mediation:smaato-adapter:+")
implementation("com.applovin.mediation:unityads-adapter:+")
implementation("com.applovin.mediation:verve-adapter:+")
implementation("com.applovin.mediation:mytarget-adapter:+")
implementation("com.applovin.mediation:yandex-adapter:+")
implementation("com.applovin.mediation:yso-network-adapter:+")
}AndroidXライブラリをプロジェクトに統合します。 プロジェクトの移行方法に関する詳細については、AndroidXへの移行ガイドを参照してください。
Google AdSense、AdManager、またはAdMobを使用するデベロッパーおよびパブリッシャーは、Googleが認定した同意管理プラットフォーム(CMP)を使用する必要があります。 欧州経済領域(EEA)または英国のユーザーに広告を配信する場合、CMPはIABのTransparency and Consent Framework(TCF)と統合されている必要があります。 詳細については、プライバシー:「TCF v2同意」を参照してください。
アプリのAndroidManifest.xmlで、<application>タグ内に<meta-data>タグを追加します。
以下の例は、このタグの正しい属性を示しています。
«your-admob-app-id»を、お客様のGoogle biddingおよびGoogle AdMob / Google Ad ManagerのアプリIDに置き換えてください。
<?xml version="1.0" encoding="utf-8"?>
<manifest … >
<application … >
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="«your-admob-app-id»"/>
⋮
</application>
</manifest>
Google AdMobには、Android Gradle pluginバージョン4.2.0以上およびGradleバージョン6.7.1以上が必要です。 以下のエラーが表示される場合は、Android Gradle pluginおよびGradleのバージョンをアップデートしてください。
AAPT: error: unexpected element <property> found in <manifest><application>.
compileSdkVersionGoogle Mobile Ads SDKバージョン23.1.0以降では、compileSdkVersionが34以上である必要があります。
アプリのbuild.gradleでcompileSdkVersionを34以上に設定してください。
最新のcompileSdkVersion要件については、Google Mobile Ads SDKリリースノートを参照してください。
Amazon Publisher Services SDKは、MAX SDKの外部で初期化する必要があります。
// Amazonは「Activity」インスタンスを必要とします
AdRegistration.getInstance( "AMAZON_APP_ID", this );
AdRegistration.setMRAIDSupportedVersions( new String[] { "1.0", "2.0", "3.0" } );
AdRegistration.setMRAIDPolicy( MRAIDPolicy.CUSTOM );
Amazon広告をMAXに統合するには、まずAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはAdErrorをMaxAdViewのインスタンスに渡します。
これは、MaxAdView#setLocalExtraParameter()を呼び出すことで実行できます。
自動更新されるbanner広告の場合、広告のロードは1回だけで十分です。
class ExampleActivity
extends Activity
{
⋮
private void loadAd()
{
String amazonAdSlotId;
MaxAdFormat adFormat;
if ( AppLovinSdkUtils.isTablet( getApplicationContext() ) )
{
amazonAdSlotId = "«Amazon-leader-slot-ID»";
adFormat = MaxAdFormat.LEADER;
}
else
{
amazonAdSlotId = "«Amazon-banner-slot-ID»";
adFormat = MaxAdFormat.BANNER;
}
// 端末がスマートフォンの場合はBANNER(320x50)、タブレットの場合はLEADER(728x90)が元のサイズになります
AppLovinSdkUtils.Size rawSize = adFormat.getSize();
DTBAdSize size = new DTBAdSize( rawSize.getWidth(), rawSize.getHeight(), amazonAdSlotId );
DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
adLoader.setSizes( size );
adLoader.loadAd( new DTBAdCallback()
{
@Override
public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
{
// 'adView' は MaxAdView のインスタンスです
adView.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
adView.loadAd();
}
@Override
public void onFailure(@NonNull final AdError adError)
{
// 'adView' は MaxAdView のインスタンスです
adView.setLocalExtraParameter( "amazon_ad_error", adError );
adView.loadAd();
}
} );
}
}
class ExampleActivity : Activity()
{
private val adView: MaxAdView? = null
private fun loadAd()
{
val amazonAdSlotId: String
val adFormat: MaxAdFormat
if (AppLovinSdkUtils.isTablet(applicationContext))
{
amazonAdSlotId = "«Amazon-leader-slot-ID»"
adFormat = MaxAdFormat.LEADER
}
else
{
amazonAdSlotId = "«Amazon-banner-slot-ID»"
adFormat = MaxAdFormat.BANNER
}
// 端末がスマートフォンの場合はBANNER(320x50)、タブレットの場合はLEADER(728x90)が元のサイズになります
val rawSize = adFormat.size
val size = DTBAdSize(rawSize.width, rawSize.height, amazonAdSlotId)
val adLoader = DTBAdRequest( applicationContext, DTBAdNetworkInfo( ApsAdNetwork.MAX ) )
adLoader.setSizes(size)
adLoader.loadAd(object : DTBAdCallback
{
override fun onSuccess(dtbAdResponse: DTBAdResponse)
{
// 'adView' は MaxAdView のインスタンスです
adView?.setLocalExtraParameter("amazon_ad_response", dtbAdResponse)
adView?.loadAd()
}
override fun onFailure(adError: AdError)
{
// 'adView' は MaxAdView のインスタンスです
adView?.setLocalExtraParameter("amazon_ad_error", adError)
adView?.loadAd()
}
})
}
}
class ExampleActivity
extends Activity
{
⋮
private void loadAd()
{
String amazonAdSlotId;
DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
adLoader.setSizes( new DTBAdSize( 300, 250, amazonAdSlotId ) );
adLoader.loadAd( new DTBAdCallback()
{
@Override
public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
{
// 'adView' は MaxAdView のインスタンスです
adView.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
adView.loadAd();
}
@Override
public void onFailure(@NonNull final AdError adError)
{
// 'adView' は MaxAdView のインスタンスです
adView.setLocalExtraParameter( "amazon_ad_error", adError );
adView.loadAd();
}
} );
}
}
class ExampleActivity : Activity()
{
private val adView: MaxAdView? = null
private fun loadAd()
{
val amazonAdSlotId: String
val adLoader = DTBAdRequest( applicationContext, DTBAdNetworkInfo( ApsAdNetwork.MAX ) )
adLoader.setSizes(DTBAdSize(300, 250, amazonAdSlotId))
adLoader.loadAd(object : DTBAdCallback
{
override fun onSuccess(dtbAdResponse: DTBAdResponse)
{
// 'adView' は MaxAdView のインスタンスです
adView!!.setLocalExtraParameter("amazon_ad_response", dtbAdResponse)
adView.loadAd()
}
override fun onFailure(adError: AdError)
{
// 'adView' は MaxAdView のインスタンスです
adView!!.setLocalExtraParameter("amazon_ad_error", adError)
adView.loadAd()
}
})
}
}
Amazon interstitial広告をMAXに統合するには、まずAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはAdErrorをMaxInterstitialAdのインスタンスに渡します。
これは、MaxInterstitialAd#setLocalExtraParameter()を呼び出すことで実行できます。
セッションごとに1回だけ、AmazonのDTBAdResponseまたはDTBAdErrorInfoをロードしてMaxInterstitialAdインスタンスに渡す必要があります。
class ExampleActivity
extends Activity
{
private static MaxInterstitialAd interstitialAd; // インスタンスが1つだけ存在するようにstaticにします
private static boolean isFirstLoad = true;
private void loadAd()
{
if ( isFirstLoad )
{
isFirstLoad = false;
if ( interstitialAd == null )
{
interstitialAd = new MaxInterstitialAd( "«MAX-inter-ad-unit-ID»" );
}
DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
adLoader.setSizes( new DTBAdSize.DTBInterstitialAdSize( "«Amazon-inter-slot-ID»" ) );
adLoader.loadAd( new DTBAdCallback()
{
@Override
public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
{
// 'interstitialAd' は MaxInterstitialAd のインスタンスです
interstitialAd.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
interstitialAd.loadAd();
}
@Override
public void onFailure(@NonNull final AdError adError)
{
// 'interstitialAd' は MaxInterstitialAd のインスタンスです
interstitialAd.setLocalExtraParameter( "amazon_ad_error", adError );
interstitialAd.loadAd();
}
} );
}
else
{
interstitialAd.loadAd();
}
}
}
class ExampleActivity : Activity()
{
private var interstitialAd: MaxInterstitialAd? = null // インスタンスが1つだけ存在するようにstaticにします
private var isFirstLoad = true
private fun loadAd()
{
if (isFirstLoad)
{
isFirstLoad = false
if (interstitialAd == null)
{
interstitialAd = MaxInterstitialAd("«MAX-inter-ad-unit-ID»", this)
}
val adLoader = DTBAdRequest( applicationContext, DTBAdNetworkInfo( ApsAdNetwork.MAX ) )
adLoader.setSizes(DTBAdSize.DTBInterstitialAdSize("«Amazon-inter-slot-ID»"))
adLoader.loadAd(object : DTBAdCallback
{
override fun onSuccess(dtbAdResponse: DTBAdResponse)
{
// 'interstitialAd' は MaxInterstitialAd のインスタンスです
interstitialAd!!.setLocalExtraParameter("amazon_ad_response", dtbAdResponse)
interstitialAd!!.loadAd()
}
override fun onFailure(adError: AdError)
{
// 'interstitialAd' は MaxInterstitialAd のインスタンスです
interstitialAd!!.setLocalExtraParameter("amazon_ad_error", adError)
interstitialAd!!.loadAd()
}
})
}
else
{
interstitialAd!!.loadAd()
}
}
}
Amazon動画interstitial広告をMAXに統合するには、まずAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはAdErrorをMaxInterstitialAdのインスタンスに渡します。
これは、MaxInterstitialAd#setLocalExtraParameter()を呼び出すことで実行できます。
セッションごとに1回だけ、DTBAdResponseまたはDTBAdErrorInfoをロードしてMaxInterstitialAdインスタンスに渡す必要があります。
class ExampleActivity
extends Activity
{
private static MaxInterstitialAd interstitialAd; // インスタンスが1つだけ存在するようにstaticにします
private static boolean isFirstLoad = true;
private void loadAd()
{
if ( isFirstLoad )
{
isFirstLoad = false;
if ( interstitialAd == null )
{
interstitialAd = new MaxInterstitialAd( "«MAX-inter-ad-unit-ID»" );
}
DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値(320、480)を切り替えます
adLoader.setSizes( new DTBAdSize.DTBVideo(320, 480, "«Amazon-video-inter-slot-ID»") );
adLoader.loadAd( new DTBAdCallback()
{
@Override
public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
{
// 'interstitialAd' は MaxInterstitialAd のインスタンスです
interstitialAd.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
interstitialAd.loadAd();
}
@Override
public void onFailure(@NonNull final AdError adError)
{
// 'interstitialAd' は MaxInterstitialAd のインスタンスです
interstitialAd.setLocalExtraParameter( "amazon_ad_error", adError );
interstitialAd.loadAd();
}
} );
}
else
{
interstitialAd.loadAd();
}
}
}
class ExampleActivity : Activity()
{
private var interstitialAd: MaxInterstitialAd? = null // インスタンスが1つだけ存在するようにstaticにします
private var isFirstLoad = true
private fun loadAd()
{
if (isFirstLoad)
{
isFirstLoad = false
if (interstitialAd == null)
{
interstitialAd = MaxInterstitialAd("«MAX-inter-ad-unit-iD»", this)
}
val adLoader = DTBAdRequest( applicationContext, DTBAdNetworkInfo( ApsAdNetwork.MAX ) )
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値(320、480)を切り替えます
adLoader.setSizes(DTBAdSize.DTBVideo(320, 480, "«Amazon-video-inter-slot-ID»"))
adLoader.loadAd(object : DTBAdCallback
{
override fun onSuccess(dtbAdResponse: DTBAdResponse)
{
// 'interstitialAd' は MaxInterstitialAd のインスタンスです
interstitialAd!!.setLocalExtraParameter("amazon_ad_response", dtbAdResponse)
interstitialAd!!.loadAd()
}
override fun onFailure(adError: AdError)
{
// 'interstitialAd' は MaxInterstitialAd のインスタンスです
interstitialAd!!.setLocalExtraParameter("amazon_ad_error", adError)
interstitialAd!!.loadAd()
}
})
}
else
{
interstitialAd!!.loadAd()
}
}
}
Amazon rewarded動画をMAXに統合するには、まずAmazon広告をロードします。
MAX広告をロードする前に、DTBAdResponseまたはAdErrorをMaxRewardedAdのインスタンスに渡します。
これは、MaxRewardedAd#setLocalExtraParameter()を呼び出すことで実行できます。
セッションごとに1回だけ、DTBAdResponseまたはAdErrorをMaxRewardedAdインスタンスにロードして渡す必要があります。
class ExampleActivity
extends Activity
{
private static MaxRewardedAd rewardedAd; // インスタンスが1つだけ存在するようにstaticにします
private static boolean isFirstLoad = true;
private void loadAd()
{
if ( isFirstLoad )
{
isFirstLoad = false;
if ( rewardedAd == null )
{
rewardedAd = MaxRewardedAd.getInstance( "«MAX-rewarded-ad-unit-ID»" );
}
DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値(320、480)を切り替えます
adLoader.setSizes( new DTBAdSize.DTBVideo( 320, 480, "«Amazon-video-rewarded-slot-ID»" ) );
adLoader.loadAd( new DTBAdCallback()
{
@Override
public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
{
// 'rewardedAd' は MaxRewardedAd のインスタンスです
rewardedAd.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
rewardedAd.loadAd();
}
@Override
public void onFailure(@NonNull final AdError adError)
{
// 'rewardedAd' は MaxRewardedAd のインスタンスです
rewardedAd.setLocalExtraParameter( "amazon_ad_error", adError );
rewardedAd.loadAd();
}
} );
}
else
{
rewardedAd.loadAd();
}
}
}
class ExampleActivity
extends Activity
{
private static MaxRewardedAd rewardedAd; // インスタンスが1つだけ存在するようにstaticにします
private static boolean isFirstLoad = true;
private void loadAd()
{
if ( isFirstLoad )
{
isFirstLoad = false;
if ( rewardedAd == null )
{
rewardedAd = MaxRewardedAd.getInstance( "«MAX-rewarded-ad-unit-ID»" );
}
DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値(320、480)を切り替えます
adLoader.setSizes( new DTBAdSize.DTBVideo( 320, 480, "«Amazon-video-rewarded-slot-ID»" ) );
adLoader.loadAd( new DTBAdCallback()
{
@Override
public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
{
// 'rewardedAd' は MaxRewardedAd のインスタンスです
rewardedAd.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
rewardedAd.loadAd();
}
@Override
public void onFailure(@NonNull final AdError adError)
{
// 'rewardedAd' は MaxRewardedAd のインスタンスです
rewardedAd.setLocalExtraParameter( "amazon_ad_error", adError );
rewardedAd.loadAd();
}
} );
}
else
{
rewardedAd.loadAd();
}
}
}
AppLovinは、AmazonのSDKでテストモードを有効にすることを推奨しています。 これにより、テスト広告を受信できるようになります。 テストモードを有効にするには、以下のコールを行います。
AdRegistration.enableTesting( true );
AdRegistration.enableLogging( true );
Amazon広告のみが含まれるようにウォーターフォールをフィルタリングできます。 これを行うには、Mediation Debuggerの Select Live Network に移動し、Amazonネットワークを選択します。
Limited Data Use(LDU)モードを有効にしない場合は、SetDataProcessingOptions()に空の文字列配列を渡します。
import com.facebook.ads.AdSettings;
⋮
AdSettings.setDataProcessingOptions( new String[] {} );
⋮
// MAX SDKを初期化します
import com.facebook.ads.AdSettings
⋮
AdSettings.setDataProcessingOptions( arrayOf<String>() )
⋮
// MAX SDKを初期化します
ユーザーに対してLDUを有効にし、ユーザーの地域を指定するには、以下のような形式でSetDataProcessingOptions()を呼び出します。
import com.facebook.ads.AdSettings;
⋮
AdSettings.setDataProcessingOptions( new String[] {"LDU"}, «country», «state» );
⋮
// MAX SDKを初期化します
import com.facebook.ads.AdSettings
⋮
AdSettings.setDataProcessingOptions( arrayOf("LDU"), «country», «state» )
⋮
// MAX SDKを初期化します
CMPとしてGoogle UMPを使用している場合、ユーザーがMetaに同意したかどうかを判断できます。 そのためには、以下のようなコードを使用します。
Boolean hasMetaConsent = AppLovinPrivacySettings.getAdditionalConsentStatus( 89 );
if ( hasMetaConsent != null )
{
// それに応じてMetaのデータ処理オプションを設定します。
}
else
{
// AC文字列がディスク上に存在しません。ユーザーがCMPフローを完了した後に同意ステータスを確認してください。
}
val hasMetaConsent = AppLovinPrivacySettings.getAdditionalConsentStatus(89)
if ( hasMetaConsent != null )
{
// それに応じてMetaのデータ処理オプションを設定します。
}
else
{
// AC文字列がディスク上に存在しません。ユーザーがCMPフローを完了した後に同意ステータスを確認してください。
}
カリフォルニア州でMeta Audience Networkの「Limited Data Use」フラグを実装する方法については、Meta for Developersのドキュメントをご覧ください。
コードの難読化やリソースの縮小を使用する場合は、Pangleの難読化ガイドラインに従ってください。
一部のネットワークSDKは、バンドルされているAndroid Manifestファイルに<queries>要素を含んでいます。
互換性のないバージョンのAndroid Gradle pluginを使用している場合、これが原因で以下のいずれかのビルドエラーが発生します。
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
error: unexpected element <queries> found in <manifest>.
Missing 'package' key attribute on element package at [:com.my.target.mytarget-sdk-5.11.3:]
AndroidManifest Validation failed
このエラーを修正するには、以下のいずれかのバージョンのAndroid Gradle pluginにアップグレードしてください。
これらのバージョンは<queries>要素をサポートしています。
Gradle Build Toolsではなく、Android Gradle Pluginをアップグレードしてください。
| 現在のAndroid Gradle pluginバージョン | <queries>要素をサポートするバージョン |
|---|---|
| 4.1.* | すべて |
| 4.0.* | 4.0.1+ |
| 3.6.* | 3.6.4+ |
| 3.5.* | 3.5.4+ |
| 3.4.* | 3.4.3+ |
| 3.3.* | 3.3.3+ |
MAX mediationアダプターをダウンロードしてアプリに統合する方法は2つあります。
アダプターの名前を変更しないでください。 変更すると、MAX SDKがアダプターを認識できなくなり、広告がロードされなくなります。
以下のチェックボックスをオンにして、統合する仲介広告ネットワークを選択してください。 選択すると、このページにそれらのネットワークに特化した手順が表示されます。 また、このページはお客様向けにカスタマイズされたCocoaPodsスクリプトを生成します。 以下のカスタマイズされたCocoaPodsスクリプトをPodfileにコピーしてください。
# Settings
use_frameworks!
inhibit_all_warnings!
# Pods
target 'YOUR_PROJECT_NAME' do
pod 'AmazonPublisherServicesSDK'
pod 'AppLovinMediationAmazonAdMarketplaceAdapter'
pod 'AppLovinMediationBidMachineAdapter'
pod 'AppLovinMediationBigoAdsAdapter'
pod 'AppLovinMediationChartboostAdapter'
pod 'AppLovinMediationCSJAdapter'
pod 'AppLovinMediationFyberAdapter'
pod 'AppLovinMediationGoogleAdManagerAdapter'
pod 'AppLovinMediationGoogleAdapter'
pod 'AppLovinMediationHyprMXAdapter'
pod 'AppLovinMediationInMobiAdapter'
pod 'AppLovinMediationIronSourceAdapter'
pod 'AppLovinMediationVungleAdapter'
pod 'AppLovinMediationLineAdapter'
pod 'AppLovinMediationMaioAdapter'
pod 'AppLovinMediationFacebookAdapter'
pod 'AppLovinMediationMintegralAdapter'
pod 'AppLovinMediationMobileFuseAdapter'
pod 'AppLovinMediationMolocoAdapter'
pod 'AppLovinMediationOguryPresageAdapter'
pod 'AppLovinMediationByteDanceAdapter'
pod 'AppLovinMediationPubMaticAdapter'
pod 'AppLovinMediationSmaatoAdapter'
pod 'AppLovinMediationTencentGDTAdapter'
pod 'AppLovinMediationUnityAdsAdapter'
pod 'AppLovinMediationVerveAdapter'
pod 'AppLovinMediationMyTargetAdapter'
pod 'AppLovinMediationYandexAdapter'
pod 'AppLovinMediationYSONetworkAdapter'
endPangle iOSアダプターバージョン4.9.1.0.0以降、Pangleは中国本土では利用できなくなりました。 中国本土のトラフィックを収益化するには、CSJネットワークを設定し、CSJアダプターを追加してください。 中国本土を除くグローバルトラフィックについては、引き続きPangleを使用して収益化を行うことができます。
12.2未満のiOSバージョンでSwiftをサポートするには:

windowプロパティApp Delegateファイルのwindowプロパティを削除しないでください。
削除すると、InMobiのSDKがクラッシュする可能性があります。
@property (nonatomic, strong) UIWindow *window;
var window: UIWindow?
Limited Data Use(LDU)モードを有効にしない場合は、SetDataProcessingOptions()に空の配列を渡します。
#import <FBAudienceNetwork/FBAudienceNetwork.h>
⋮
[FBAdSettings setDataProcessingOptions: @[]];
⋮
// MAX SDKを初期化します
import FBAudienceNetwork
⋮
FBAdSettings.setDataProcessingOptions([])
⋮
// MAX SDKを初期化します
ユーザーに対してLDUを有効にし、ユーザーの地域を指定するには、以下のようにSetDataProcessingOptions()を呼び出します。
#import <FBAudienceNetwork/FBAudienceNetwork.h>
⋮
[FBAdSettings setDataProcessingOptions: @[@"LDU"] country: «country» state: «state»];
⋮
// MAX SDKを初期化します
import FBAudienceNetwork
⋮
FBAdSettings.setDataProcessingOptions(["LDU"], country: «country», state: «state»)
⋮
// MAX SDKを初期化します
CMPとしてGoogle UMPを使用している場合、ユーザーがMetaに同意したかどうかを判断できます。 そのためには、以下のようなコードを使用します。
NSNumber *hasMetaConsent = [ALPrivacySettings additionalConsentStatusForIdentifier: 89];
if ( hasMetaConsent )
{
BOOL consentGiven = hasMetaConsent.boolValue;
// それに応じてMetaのデータ処理オプションを設定します。
}
else
{
// AC文字列がディスク上に存在しません。ユーザーがCMPフローを完了した後に同意ステータスを確認してください。
}
let hasMetaConsent = ALPrivacySetting.additionalConsentStatus(forIdentifier: 89)
if let consentGiven = hasMetaConsent?.boolValue
{
// それに応じてMetaのデータ処理オプションを設定します。
}
else
{
// AC文字列がディスク上に存在しません。ユーザーがCMPフローを完了した後に同意ステータスを確認してください。
}
カリフォルニア州でMeta Audience Networkの「Limited Data Use」フラグを実装する方法については、Meta for Developersのドキュメントをお読みください。
Audience Network SDK 6.2.1では、以下の重要な要件が導入されています。
setAdvertiserTrackingEnabledフラグを実装します。
これにより、パーソナライズされた広告を配信するためにデータを使用できるかどうかがMetaに通知されます。Info.plistに追加します。
統合手順については、SKAdNetworkのドキュメントを参照してください。[sdk initializeSdkWithCompletionHandler:^(ALSdkConfiguration *sdkConfiguration)
{
if ( @available(iOS 14.5, *) )
{
// App transparency trackingの認証は `sdkConfiguration.appTrackingTransparencyStatus` を介して確認できます
// 1. ここでMeta ATEフラグを設定し、その後:
}
// 2. 広告をロードします
}];
sdk.initializeSdk { (sdkConfiguration: ALSdkConfiguration) in
if #available(iOS 14.5, *)
{
// App transparency trackingの認証は `sdkConfiguration.appTrackingTransparencyStatus` を介して確認できます
// 1. ここでMeta ATEフラグを設定し、その後:
}
// 2. 広告をロードします
}
Google AdSense、AdManager、またはAdMobを使用するデベロッパーおよびパブリッシャーは、Googleが認定した同意管理プラットフォーム(CMP)を使用する必要があります。 欧州経済領域(EEA)または英国のユーザーに広告を配信する場合、CMPはIABのTransparency and Consent Framework(TCF)と統合されている必要があります。 詳細については、プライバシー:「TCF v2同意」を参照してください。
アプリのInfo.plistに、GADApplicationIdentifierキーを追加します。
このキーに、お客様のGoogle biddingおよびGoogle AdMob / Google Ad ManagerのアプリIDの文字列値を設定します。

Amazon Publisher Services SDKは、MAX SDKの外部で初期化する必要があります。
[[DTBAds sharedInstance] setAppKey: appId];
[DTBAds sharedInstance].mraidCustomVersions = @[@"1.0", @"2.0", @"3.0"];
[DTBAds sharedInstance].mraidPolicy = CUSTOM_MRAID;
レポートの不一致を避けるため、最新のAmazon Publisher Servicesアダプターバージョンを使用してください。
Amazon広告をMAXに統合するには、まずAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoをMAAdViewのインスタンスに渡します。
これは、-[MAAdView setLocalExtraParameterForKey:value:]を呼び出すことで実行できます。
自動更新されるbanner広告の場合、広告のロードは1回だけで十分です。
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *amazonAdSlotId;
MAAdFormat *adFormat;
if ( UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad )
{
amazonAdSlotId = @"«Amazon-leader-slot-ID»";
adFormat = MAAdFormat.leader;
}
else
{
amazonAdSlotId = @"«Amazon-banner-slot-ID»";
adFormat = MAAdFormat.banner;
}
CGSize rawSize = adFormat.size;
DTBAdSize *size = [[DTBAdSize alloc] initBannerAdSizeWithWidth: rawSize.width
height: rawSize.height
andSlotUUID: amazonAdSlotId];
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
[adLoader setAdSizes: @[size]];
[adLoader loadAd: self];
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'adView' は MAAdView のインスタンスです
[self.adView setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[self.adView loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'adView' は MAAdView のインスタンスです
[self.adView setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[self.adView loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
let amazonAdSlotId: String
let adFormat: MAAdFormat
if UIDevice.current.userInterfaceIdiom == .pad
{
amazonAdSlotId = "«Amazon-leader-slot-ID»"
adFormat = MAAdFormat.leader
}
else
{
amazonAdSlotId = "«Amazon-banner-slot-ID»"
adFormat = MAAdFormat.banner
}
let rawSize = adFormat.size
let size = DTBAdSize(bannerAdSizeWithWidth: Int(rawSize.width),
height: Int(rawSize.height),
andSlotUUID: amazonAdSlotId)!
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([size])
adLoader.loadAd(self)
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
adView.loadAd()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_error", value:dtbAdErrorInfo)
adView.loadAd()
}
}
import AppLovinSDK
import DTBiOSSDK
struct ExampleSwiftUIWrapper: UIViewRepresentable
{
func makeUIView(context: Context) -> MAAdView
{
let adView = MAAdView(adUnitIdentifier: "«ad-unit-ID»")
adView.delegate = context.coordinator
let amazonAdSlotId: String
let adFormat: MAAdFormat
if UIDevice.current.userInterfaceIdiom == .pad
{
amazonAdSlotId = "«Amazon-leader-slot-ID»"
adFormat = MAAdFormat.leader
}
else
{
amazonAdSlotId = "«Amazon-banner-slot-ID»"
adFormat = MAAdFormat.banner
}
let rawSize = adFormat.size
let size = DTBAdSize(bannerAdSizeWithWidth: Int(rawSize.width),
height: Int(rawSize.height),
andSlotUUID: amazonAdSlotId)!
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([size])
adLoader.loadAd(adView)
return adView
}
}
extension ExampleSwiftUIWrapper
{
class Coordinator: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
adView.loadAd()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
adView.loadAd()
}
}
}
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *amazonAdSlotId = @"«Amazon-MREC-slot-ID»";
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
[adLoader setAdSizes: [[DTBAdSize alloc] initBannerAdSizeWithWidth: 300
height: 250
andSlotUUID: amazonAdSlotId]];
[adLoader loadAd: self];
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'adView' は MAAdView のインスタンスです
[self.adView setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[self.adView loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'adView' は MAAdView のインスタンスです
[self.adView setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[self.adView loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
let amazonAdSlotId: String = "«Amazon-MREC-slot-ID»"
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([DTBAdSize(bannerAdSizeWithWidth: 300,
height: 250,
andSlotUUID: amazonAdSlotId)!])
adLoader.loadAd(self)
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
adView.loadAd()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_error", value:dtbAdErrorInfo)
adView.loadAd()
}
}
import AppLovinSDK
import DTBiOSSDK
struct ExampleSwiftUIWrapper: UIViewRepresentable
{
func makeUIView(context: Context) -> MAAdView
{
let adView = MAAdView(adUnitIdentifier: "«ad-unit-ID»", adFormat: MAAdFormat.mrec)
adView.delegate = context.coordinator
let amazonAdSlotId: String = "«Amazon-MREC-slot-ID»"
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([DTBAdSize(bannerAdSizeWithWidth: 300,
height: 250,
andSlotUUID: amazonAdSlotId)!])
adLoader.loadAd(adView)
return adView
}
}
extension ExampleSwiftUIWrapper
{
class Coordinator: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
adView.loadAd()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
adView.loadAd()
}
}
}
Amazon interstitial広告をMAXに統合するには、まずAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoをMAInterstitialAdのインスタンスに渡します。
これは、-[MAInterstitialAd setLocalExtraParameterForKey:value:]を呼び出すことで実行できます。
セッションごとに1回だけ、AmazonのDTBAdResponseまたはDTBAdErrorInfoをロードしてMAInterstitialAdインスタンスに渡す必要があります。
#import <AppLovinSDK/AppLovinSDK.h>
#import <DTBiOSSDK/DTBiOSSDK.h>
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
static MAInterstitialAd *interstitialAd;
static BOOL isFirstLoad;
+ (void)initialize
{
[super initialize];
interstitialAd = [[MAInterstitialAd alloc] initWithAdUnitIdentifier: @"«MAX-inter-ad-unit-ID»"];
isFirstLoad = YES;
}
- (void)loadAd
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAX用の広告をロードします
if ( isFirstLoad )
{
isFirstLoad = NO;
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
[adLoader setAdSizes: @[
[[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID: @"«Amazon-inter-slot-ID»"]
]];
[adLoader loadAd: self];
}
else
{
[interstitialAd loadAd];
}
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
[interstitialAd setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[interstitialAd loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
[interstitialAd setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[interstitialAd loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
private static var interstitialAd = MAInterstitialAd(adUnitIdentifier: "«MAX-inter-ad-unit-ID»")
private static var isFirstLoad = true
func loadAd()
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAX用の広告をロードします
if Self.isFirstLoad
{
Self.isFirstLoad = false
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([DTBAdSize(interstitialAdSizeWithSlotUUID: "«Amazon-inter-slot-ID»")!])
adLoader.loadAd(self)
}
else
{
Self.interstitialAd.load()
}
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
Self.interstitialAd.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
Self.interstitialAd.load()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
Self.interstitialAd.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
Self.interstitialAd.load()
}
}
Amazon interstitial広告をMAXに統合するには、まずAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoをMAInterstitialAdのインスタンスに渡します。
これは、-[MAInterstitialAd setLocalExtraParameterForKey:value:]を呼び出すことで実行できます。
セッションごとに1回だけ、AmazonのDTBAdResponseまたはDTBAdErrorInfoをロードしてMAInterstitialAdインスタンスに渡す必要があります。
#import <AppLovinSDK/AppLovinSDK.h>
#import <DTBiOSSDK/DTBiOSSDK.h>
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
static MAInterstitialAd *interstitialAd;
static BOOL isFirstLoad;
+ (void)initialize
{
[super initialize];
interstitialAd = [[MAInterstitialAd alloc] initWithAdUnitIdentifier: @"«MAX-inter-ad-unit-ID»"];
isFirstLoad = YES;
}
- (void)loadAd
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAX用の広告をロードします
if ( isFirstLoad )
{
isFirstLoad = NO;
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値(320、480)を切り替えます
[adLoader setAdSizes: @[
[[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth: 320 height: 480 andSlotUUID:@"«Amazon-video-inter-slot-ID»"]
]];
[adLoader loadAd: self];
}
else
{
[interstitialAd loadAd];
}
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
[interstitialAd setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[interstitialAd loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
[interstitialAd setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[interstitialAd loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
private static var interstitialAd = MAInterstitialAd(adUnitIdentifier: "«MAX-inter-ad-unit-ID»")
private static var isFirstLoad = true
func loadAd()
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAX用の広告をロードします
if Self.isFirstLoad
{
Self.isFirstLoad = false
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値(320、480)を切り替えます
adLoader.setAdSizes([DTBAdSize(videoAdSizeWithPlayerWidth: 320, height: 480, andSlotUUID: "«Amazon-video-inter-slot-ID»")!])
adLoader.loadAd(self)
}
else
{
Self.interstitialAd.load()
}
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
Self.interstitialAd.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
Self.interstitialAd.load()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
Self.interstitialAd.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
Self.interstitialAd.load()
}
}
Amazon rewarded動画をMAXに統合するには、まずAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoをMARewardedAdのインスタンスに渡します。
これは、-[MARewardedAd setLocalExtraParameterForKey:value:]を呼び出すことで実行できます。
AmazonのDTBAdResponseまたはDTBAdErrorInfoをロードしてMARewardedAdインスタンスに渡すのは、1回だけで十分です。
#import <AppLovinSDK/AppLovinSDK.h>
#import <DTBiOSSDK/DTBiOSSDK.h>
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
static MARewardedAd *rewardedAd;
static BOOL isFirstLoad;
+ (void)initialize
{
[super initialize];
rewardedAd = [MARewardedAd sharedWithAdUnitIdentifier: @"«MAX-rewarded-ad-unit-ID»"];
isFirstLoad = YES;
}
- (void)loadAd
{
// 初回ロードの場合 - Amazon's SDKから広告をロードし、その後MAX用の広告をロードします
if ( isFirstLoad )
{
isFirstLoad = NO;
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値(320、480)を切り替えます
[adLoader setAdSizes: @[
[[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth: 320 height: 480 andSlotUUID:@"«Amazon-video-rewarded-slot-ID»"]
]];
[adLoader loadAd: self];
}
else
{
[rewardedAd loadAd];
}
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'rewardedAd' は MARewardedAd のインスタンスです
[rewardedAd setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[rewardedAd loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'rewardedAd' は MARewardedAd のインスタンスです
[rewardedAd setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[rewardedAd loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
private static var rewardedAd = MARewardedAd.shared(withAdUnitIdentifier: "«MAX-rewarded-ad-unit-ID»")
private static var isFirstLoad = true
func loadAd()
{
// 初回ロードの場合 - Amazon's SDKから広告をロードし、その後MAX用の広告をロードします
if Self.isFirstLoad
{
Self.isFirstLoad = false
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値(320、480)を切り替えます
adLoader.setAdSizes([DTBAdSize(videoAdSizeWithPlayerWidth: 320, height: 480, andSlotUUID: "«Amazon-video-rewarded-slot-ID»")!])
adLoader.loadAd(self)
}
else
{
Self.rewardedAd.load()
}
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'rewardedAd' は MARewardedAd のインスタンスです
Self.rewardedAd.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
Self.rewardedAd.load()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'rewardedAd' は MARewardedAd のインスタンスです
Self.rewardedAd.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
Self.rewardedAd.load()
}
}
AppLovinは、AmazonのSDKでテストモードを有効にすることを推奨しています。 これにより、テスト広告を受信できるようになります。 テストモードを有効にするには、以下のコールを行います。
[[DTBAds sharedInstance] setLogLevel: DTBLogLevelAll];
[[DTBAds sharedInstance] setTestMode: YES];
DTBAds.sharedInstance().setLogLevel(DTBLogLevelAll)
DTBAds.sharedInstance().testMode = true
Amazon広告のみが含まれるようにウォーターフォールをフィルタリングできます。 これを行うには、Mediation Debuggerの Select Live Network に移動し、Amazonネットワークを選択します。
App Transport Security(ATS)を無効にするには、アプリのInfo.plistにNSAppTransportSecurityを追加します。
次に、NSAllowsArbitraryLoadsキーを追加し、そのBoolean値をYESに設定します。
このキーのみが存在することを確認してください。

統合手順については、SKAdNetworkのドキュメントを参照してください。
コマンドラインで以下を実行します。
pod install --repo-update