メディエーションネットワークの準備

サードパーティSDKをモバイルプロパティに統合する場合、その統合に関する責任はすべてお客様自身が負うものとします。 お客様およびサードパーティSDKプロバイダーは、ユーザーベースまたはデバイスベースのプライバシーの選択やフラグに準拠したデータ処理および取り扱いを確実に行う必要があります。

    Android

    MAX mediationアダプターをダウンロードしてアプリに統合する方法は2つあります。

    Gradle
    AppLovinはこの方法でのアダプター統合を推奨しています。 AppLovinのアダプターのPOMファイルは、仲介ネットワークのSDKとその依存関係を自動的に統合します。
    オープンソースアダプター
    統合においてより高い柔軟性が必要な場合は、AppLovinのオープンソースアダプターを統合できます。 この場合、仲介SDKとその依存関係の統合はお客様自身の責任となります。 これらのアダプターは、AppLovin-MAX-SDK-Android GitHubリポジトリで確認できます。

    アダプターの名前やパッケージ名を変更しないでください。 変更すると、MAX SDKがアダプターを認識できなくなり、広告がロードされなくなります。

    Gradle

    以下のチェックボックスをオンにして、統合する仲介広告ネットワークを選択してください。 チェックを入れると、このページにそれらのネットワークに特化した手順が表示されます。

    また、このページはお客様向けにカスタマイズされたGradleスクリプトを生成します。 以下のカスタマイズされたGradleスクリプトを、アプリレベルのbuild.gradleにコピーしてください。

  • Amazon
  • BidMachine
  • BIGO Ads
  • Chartboost
  • DT Exchange
  • Google Ad Manager
  • Google Bidding and Google AdMob
  • HyprMX
  • InMobi
  • ironSource
  • Liftoff Monetize
  • LINE
  • Maio
  • Meta Audience Network
  • Mintegral
  • MobileFuse
  • Moloco
  • Ogury
  • Pangle
  • PubMatic
  • Smaato
  • Unity Ads
  • Verve
  • VK Ad Network
  • Yandex
  • YSO Network
  • // 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:+'
    
    }

    AndroidXへの移行

    AndroidXライブラリをプロジェクトに統合します。 プロジェクトの移行方法に関する詳細については、AndroidXへの移行ガイドを参照してください。

    Google AdSense、AdManager、またはAdMobを使用するデベロッパーおよびパブリッシャーは、Googleが認定した同意管理プラットフォーム(CMP)を使用する必要があります。 欧州経済領域(EEA)または英国のユーザーに広告を配信する場合、CMPはIABのTransparency and Consent Framework(TCF)と統合されている必要があります。 詳細については、プライバシー:「TCF v2同意」を参照してください。

    Google biddingおよびGoogle AdMob / Google Ad ManagerのアプリIDの追加

    アプリの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>
    

    Gradleエラー

    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>.
    

    compileSdkVersion

    Google Mobile Ads SDKバージョン23.1.0以降では、compileSdkVersionが34以上である必要があります。

    アプリのbuild.gradlecompileSdkVersion34以上に設定してください。

    最新のcompileSdkVersion要件については、Google Mobile Ads SDKリリースノートを参照してください。

    Amazon 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 SDKからのbannerまたはMREC広告のロード

    Amazon広告をMAXに統合するには、まずAmazon広告をロードする必要があります。 MAX広告をロードする前に、DTBAdResponseまたはAdErrorMaxAdViewのインスタンスに渡します。 これは、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();
          }
        } );
      }
    }
    

    Amazon SDKからのinterstitial広告のロード

    Amazon interstitial広告をMAXに統合するには、まずAmazon広告をロードする必要があります。 MAX広告をロードする前に、DTBAdResponseまたはAdErrorMaxInterstitialAdのインスタンスに渡します。 これは、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();
        }
      }
    }
    

    Amazon SDKからの動画interstitial広告のロード

    Amazon動画interstitial広告をMAXに統合するには、まずAmazon広告をロードする必要があります。 MAX広告をロードする前に、DTBAdResponseまたはAdErrorMaxInterstitialAdのインスタンスに渡します。 これは、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();
        }
      }
    }
    

    Amazon SDKからのrewarded動画広告のロード

    Amazon rewarded動画をMAXに統合するには、まずAmazon広告をロードします。 MAX広告をロードする前に、DTBAdResponseまたはAdErrorMaxRewardedAdのインスタンスに渡します。 これは、MaxRewardedAd#setLocalExtraParameter()を呼び出すことで実行できます。

    セッションごとに1回だけ、DTBAdResponseまたはAdErrorMaxRewardedAdインスタンスにロードして渡す必要があります。

    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();
        }
      }
    }
    

    Amazon Publisher Servicesのテスト

    AppLovinは、AmazonのSDKでテストモードを有効にすることを推奨しています。 これにより、テスト広告を受信できるようになります。 テストモードを有効にするには、以下のコールを行います。

    AdRegistration.enableTesting( true );
    AdRegistration.enableLogging( true );
    

    Amazon広告のみが含まれるようにウォーターフォールをフィルタリングできます。 これを行うには、Mediation DebuggerSelect Live Network に移動し、Amazonネットワークを選択します。

    Meta Audience Networkのデータ処理オプション

    Limited Data Use(LDU)モードを有効にしない場合は、SetDataProcessingOptions()に空の文字列配列を渡します。

    import com.facebook.ads.AdSettings;
    ⋮
    AdSettings.setDataProcessingOptions( new String[] {} );
    ⋮
    // MAX SDKを初期化します
    

    ユーザーに対してLDUを有効にし、ユーザーの地域を指定するには、以下のような形式でSetDataProcessingOptions()を呼び出します。

    import com.facebook.ads.AdSettings;
    ⋮
    AdSettings.setDataProcessingOptions( new String[] {"LDU"}, «country», «state» );
    ⋮
    // MAX SDKを初期化します
    

    Google UMPの使用

    CMPとしてGoogle UMPを使用している場合、ユーザーがMetaに同意したかどうかを判断できます。 そのためには、以下のようなコードを使用します。

    Boolean hasMetaConsent = AppLovinPrivacySettings.getAdditionalConsentStatus( 89 );
    if ( hasMetaConsent != null )
    {
      // それに応じてMetaのデータ処理オプションを設定します。
    }
    else
    {
      // AC文字列がディスク上に存在しません。ユーザーがCMPフローを完了した後に同意ステータスを確認してください。
    }
    

    カリフォルニア州のユーザー向けのMeta Audience Networkデータ処理オプション

    カリフォルニア州でMeta Audience Networkの「Limited Data Use」フラグを実装する方法については、Meta for Developersのドキュメントをご覧ください。

    難読化

    コードの難読化やリソースの縮小を使用する場合は、Pangleの難読化ガイドラインに従ってください。

    Androidマニフェストのマージエラー

    一部のネットワーク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>.
    

    このエラーを修正するには、以下のいずれかのバージョンの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+

    アダプターネットワーク情報

    読み込み中...

    iOS

    MAX mediationアダプターをダウンロードしてアプリに統合する方法は2つあります。

    CocoaPods
    AppLovinはこの方法でのアダプター統合を推奨しています。 AppLovinのアダプターのpodは、仲介ネットワークのSDKとその依存関係を自動的に統合します。
    オープンソースアダプター
    統合においてより高い柔軟性が必要な場合は、AppLovinのオープンソースアダプターを統合できます。 この場合、仲介SDKとそれらが必要とする依存関係の統合はお客様自身の責任となります。 これらのアダプターは、AppLovin-MAX-SDK-iOS GitHubリポジトリで確認できます。

    アダプターの名前を変更しないでください。 変更すると、MAX SDKがアダプターを認識できなくなり、広告がロードされなくなります。

    CocoaPods

    以下のチェックボックスをオンにして、統合する仲介広告ネットワークを選択してください。 選択すると、このページにそれらのネットワークに特化した手順が表示されます。 また、このページはお客様向けにカスタマイズされたCocoaPodsスクリプトを生成します。 以下のカスタマイズされたCocoaPodsスクリプトをPodfileにコピーしてください。

  • Amazon
  • BidMachine
  • BIGO Ads
  • Chartboost
  • CSJ
  • DT Exchange
  • Google Ad Manager
  • Google Bidding and Google AdMob
  • HyprMX
  • InMobi
  • ironSource
  • Liftoff Monetize
  • LINE
  • Maio
  • Meta Audience Network
  • Mintegral
  • MobileFuse
  • Moloco
  • Ogury
  • Pangle
  • PubMatic
  • Smaato
  • Tencent
  • Unity Ads
  • Verve
  • VK Ad Network
  • Yandex
  • YSO Network
  • # 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'
    
    end

    Pangle iOSアダプターバージョン4.9.1.0.0以降、Pangleは中国本土では利用できなくなりました。 中国本土のトラフィックを収益化するには、CSJネットワークを設定し、CSJアダプターを追加してください。 中国本土を除くグローバルトラフィックについては、引き続きPangleを使用して収益化を行うことができます。

    Swiftのビルド設定

    12.2未満のiOSバージョンでSwiftをサポートするには:

    1. Xcodeプロジェクトのメイン・ターゲットで、File > Build Settings を選択します。
    2. Always Embed Swift Standard LibrariesYes に設定します。

    設定:Always Embed Swift Standard Libraries。AppLovin MAXデモアプリ:Yes。

    App delegateのwindowプロパティ

    App Delegateファイルのwindowプロパティを削除しないでください。 削除すると、InMobiのSDKがクラッシュする可能性があります。

    @property (nonatomic, strong) UIWindow *window;
    

    Meta Audience Networkのデータ処理オプション

    Limited Data Use(LDU)モードを有効にしない場合は、SetDataProcessingOptions()に空の配列を渡します。

    #import <FBAudienceNetwork/FBAudienceNetwork.h>
    ⋮
    [FBAdSettings setDataProcessingOptions: @[]];
    ⋮
    // MAX SDKを初期化します
    

    ユーザーに対してLDUを有効にし、ユーザーの地域を指定するには、以下のようにSetDataProcessingOptions()を呼び出します。

    #import <FBAudienceNetwork/FBAudienceNetwork.h>
    ⋮
    [FBAdSettings setDataProcessingOptions: @[@"LDU"] country: «country» state: «state»];
    ⋮
    // MAX SDKを初期化します
    

    Google UMPの使用

    CMPとしてGoogle UMPを使用している場合、ユーザーがMetaに同意したかどうかを判断できます。 そのためには、以下のようなコードを使用します。

    NSNumber *hasMetaConsent = [ALPrivacySettings additionalConsentStatusForIdentifier: 89];
    if ( hasMetaConsent )
    {
      BOOL consentGiven = hasMetaConsent.boolValue;
      // それに応じてMetaのデータ処理オプションを設定します。
    }
    else
    {
      // AC文字列がディスク上に存在しません。ユーザーがCMPフローを完了した後に同意ステータスを確認してください。
    }
    

    カリフォルニア州のユーザー向けのMeta Audience Networkデータ処理オプション

    カリフォルニア州でMeta Audience Networkの「Limited Data Use」フラグを実装する方法については、Meta for Developersのドキュメントをお読みください。

    iOS 14.5以降に向けたMetaの準備

    Audience Network SDK 6.2.1では、以下の重要な要件が導入されています。

    • mediationの使用の有無にかかわらず、setAdvertiserTrackingEnabledフラグを実装します。 これにより、パーソナライズされた広告を配信するためにデータを使用できるかどうかがMetaに通知されます。
    • 広告主が広告キャンペーンの成果を測定できるように、Metaが推奨するSKAdNetwork IDをXcodeプロジェクトのInfo.plistに追加します。 統合手順については、SKAdNetworkのドキュメントを参照してください。
    [sdk initializeSdkWithCompletionHandler:^(ALSdkConfiguration *sdkConfiguration)
    {
       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同意」を参照してください。

    Google biddingおよびGoogle AdMob / Google Ad ManagerのアプリIDの追加

    アプリのInfo.plistに、GADApplicationIdentifierキーを追加します。 このキーに、お客様のGoogle biddingおよびGoogle AdMob / Google Ad ManagerのアプリIDの文字列値を設定します。

    GADApplicationIdentifier (String): «YOUR_ADMOB_APP_ID»

    Amazon SDKの初期化

    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 SDKからのbannerまたはMREC広告のロード

    Amazon広告をMAXに統合するには、まずAmazon広告をロードする必要があります。 MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoMAAdViewのインスタンスに渡します。 これは、-[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
    

    Amazon SDKからのinterstitial広告のロード

    Amazon interstitial広告をMAXに統合するには、まずAmazon広告をロードする必要があります。 MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoMAInterstitialAdのインスタンスに渡します。 これは、-[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
    

    Amazon SDKからの動画interstitial広告のロード

    Amazon interstitial広告をMAXに統合するには、まずAmazon広告をロードする必要があります。 MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoMAInterstitialAdのインスタンスに渡します。 これは、-[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
    

    Amazon SDKからのrewarded動画広告のロード

    Amazon rewarded動画をMAXに統合するには、まずAmazon広告をロードする必要があります。 MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoMARewardedAdのインスタンスに渡します。 これは、-[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
    

    Amazon Publisher Servicesのテスト

    AppLovinは、AmazonのSDKでテストモードを有効にすることを推奨しています。 これにより、テスト広告を受信できるようになります。 テストモードを有効にするには、以下のコールを行います。

    [[DTBAds sharedInstance] setLogLevel: DTBLogLevelAll];
    [[DTBAds sharedInstance] setTestMode: YES];
    

    Amazon広告のみが含まれるようにウォーターフォールをフィルタリングできます。 これを行うには、Mediation DebuggerSelect Live Network に移動し、Amazonネットワークを選択します。

    App Transport Securityの無効化

    App Transport Security(ATS)を無効にするには、アプリのInfo.plistNSAppTransportSecurityを追加します。 次に、NSAllowsArbitraryLoadsキーを追加し、そのBoolean値をYESに設定します。 このキーのみが存在することを確認してください。

    App Transport Security Settings (Dictionary): 1 item. Allow Arbitrary Loads (Boolean): YES.

    SKAdNetwork

    統合手順については、SKAdNetworkのドキュメントを参照してください。

    新しいpodのインストール

    コマンドラインで以下を実行します。

    pod install --repo-update
    

    アダプターネットワーク情報

    読み込み中...


search