미디에이션 네트워크 준비

모바일 자산에 서드파티 SDK를 연동할 때, 그에 대한 연동 책임은 전적으로 귀하에게 있습니다. 귀하와 서드파티 SDK 제공업체는 사용자 기준 또는 기기 기준의 개인정보 보호 선택 사항이나 플래그에 대해 규정을 준수하는 데이터 처리 및 취급을 보장해야 합니다.

    Android

    두 가지 방법으로 MAX mediation 어댑터를 다운로드하고 앱에 연동할 수 있습니다:

    Gradle
    AppLovin은 이 방식으로 어댑터를 연동하는 것을 권장합니다. AppLovin 어댑터의 POM 파일은 미디에이션된 네트워크의 SDK 및 해당 종속성을 자동으로 연동합니다.
    오픈 소스 어댑터
    연동 시 더 많은 유연성이 필요한 경우, AppLovin의 오픈 소스 어댑터를 연동할 수 있습니다. 미디에이션된 SDK 및 해당 종속성을 연동할 책임은 귀하에게 있습니다. 이 어댑터들은 AppLovn-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 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 플러그인 버전 4.2.0 이상 및 Gradle 버전 6.7.1 이상을 요구합니다. 다음과 같은 에러가 발생하는 경우, Android Gradle 플러그인 및 Gradle 버전을 업데이트하십시오:

    AAPT: error: unexpected element <property> found in <manifest><application>.
    

    compileSdkVersion

    Google Mobile Ads SDK 버전 23.1.0 이상은 최소 34의 compileSdkVersion을 요구합니다.

    앱의 build.gradle에서 compileSdkVersion34 이상으로 설정하십시오.

    최신 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 광고의 경우, 광고를 한 번만 로드하면 됩니다.

    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()를 호출하여 수행할 수 있습니다.

    세션당 한 번만 Amazon DTBAdResponse 또는 DTBAdErrorInfo를 로드하여 MaxInterstitialAd 인스턴스에 전달해야 합니다.

    class ExampleActivity
           extends Activity
    {
      private static MaxInterstitialAd interstitialAd; // 단 하나의 인스턴스만 존재하도록 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에서 video interstitial 광고 로드

    Amazon video interstitial 광고를 MAX에 연동하려면 먼저 Amazon 광고를 로드해야 합니다. MAX 광고를 로드하기 전에 DTBAdResponse 또는 AdErrorMaxInterstitialAd 인스턴스에 전달하십시오. 이는 MaxInterstitialAd#setLocalExtraParameter()를 호출하여 수행할 수 있습니다.

    세션당 한 번만 DTBAdResponse 또는 DTBAdErrorInfo를 로드하여 MaxInterstitialAd 인스턴스에 전달해야 합니다.

    class ExampleActivity
           extends Activity
    {
      private static MaxInterstitialAd interstitialAd; // 단 하나의 인스턴스만 존재하도록 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 video 광고 로드

    Amazon rewarded video를 MAX에 연동하려면 먼저 Amazon 광고를 로드하십시오. MAX 광고를 로드하기 전에 DTBAdResponse 또는 AdErrorMaxRewardedAd 인스턴스에 전달하십시오. 이는 MaxRewardedAd#setLocalExtraParameter()를 호출하여 수행할 수 있습니다.

    세션당 한 번만 DTBAdResponse 또는 AdErrorMaxRewardedAd 인스턴스에 로드하여 전달해야 합니다.

    class ExampleActivity
            extends Activity
    {
      private static MaxRewardedAd rewardedAd; // 단 하나의 인스턴스만 존재하도록 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 광고만 포함하도록 waterfall을 필터링할 수 있습니다. 이를 위해 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 사용하기

    Google UMP를 CMP로 사용하는 경우, 사용자가 Meta에 동의했는지 여부를 확인할 수 있습니다. 이를 위해 다음과 같은 코드를 사용하십시오:

    Boolean hasMetaConsent = AppLovinPrivacySettings.getAdditionalConsentStatus( 89 );
    if ( hasMetaConsent != null )
    {
      // 그에 맞게 Meta Data Processing Options를 설정합니다.
    }
    else
    {
      // 디스크에서 AC String을 사용할 수 없습니다. 사용자가 CMP 플로우를 완료한 후 동의 상태를 확인하십시오.
    }
    

    캘리포니아 사용자를 위한 Meta Audience Network 데이터 처리 옵션

    캘리포니아에서 Meta Audience Network의 “Limited Data Use” 플래그를 구현하는 방법을 알아보려면 Meta for Developers 문서를 방문하십시오.

    난독화

    코드 난독화 또는 리소스 축소를 사용하는 경우, Pangle의 난독화 가이드라인을 따르십시오.

    Android manifest 병합 에러

    일부 네트워크 SDK는 번들로 제공되는 Android Manifest 파일에 <queries> 요소를 포함합니다. 호환되지 않는 버전의 Android Gradle 플러그인을 사용하는 경우, 다음과 같은 빌드 에러 중 하나가 발생합니다:

    com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
    error: unexpected element <queries> found in <manifest>.
    

    이 에러를 해결하려면 다음 중 하나의 Android Gradle 플러그인 버전으로 업그레이드하십시오. 이 버전들은 <queries> 요소를 지원합니다:

    Gradle Build Tools가 아닌 Android Gradle 플러그인을 업그레이드하십시오.

    현재 Android Gradle 플러그인 버전<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+

    어댑터 네트워크 정보

    Loading…

    iOS

    두 가지 방법으로 MAX mediation 어댑터를 다운로드하고 앱에 연동할 수 있습니다:

    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 Demo App: 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 사용하기

    Google UMP를 CMP로 사용하는 경우, 사용자가 Meta에 동의했는지 여부를 확인할 수 있습니다. 이를 위해 다음과 같은 코드를 사용하십시오:

    NSNumber *hasMetaConsent = [ALPrivacySettings additionalConsentStatusForIdentifier: 89];
    if ( hasMetaConsent )
    {
      BOOL consentGiven = hasMetaConsent.boolValue;
      // 그에 맞게 Meta Data Processing Options를 설정합니다.
    }
    else
    {
      // 디스크에서 AC String을 사용할 수 없습니다. 사용자가 CMP 플로우를 완료한 후 동의 상태를 확인하십시오.
    }
    

    캘리포니아 사용자를 위한 Meta Audience Network 데이터 처리 옵션

    캘리포니아에서 Meta Audience Network의 “Limited Data Use” 플래그를 구현하는 방법을 알아보려면 Meta for Developers 문서를 읽어보십시오.

    iOS 14.5 이상을 대비하는 Meta

    Audience Network SDK 6.2.1은 다음과 같은 중요한 요구 사항을 도입합니다:

    • 미디에이션 사용 여부와 관계없이 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 v2 동의”를 참조하십시오.

    Google bidding 및 Google AdMob / Google Ad Manager 앱 ID 추가

    앱의 Info.plistGADApplicationIdentifier 키를 추가합니다. 이 키에 귀하의 Google bidding 및 Google AdMob / Google Ad Manager 앱 ID의 String 값을 부여하십시오.

    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 광고의 경우 광고를 한 번만 로드하면 됩니다.

    @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:]를 호출하여 수행할 수 있습니다.

    세션당 한 번만 Amazon DTBAdResponse 또는 DTBAdErrorInfoMAInterstitialAd 인스턴스에 로드하여 전달해야 합니다.

    #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에서 video interstitial 광고 로드

    Amazon interstitial 광고를 MAX에 연동하려면 먼저 Amazon 광고를 로드해야 합니다. MAX 광고를 로드하기 전에 DTBAdResponse 또는 DTBAdErrorInfoMAInterstitialAd 인스턴스에 전달하십시오. 이는 -[MAInterstitialAd setLocalExtraParameterForKey:value:]를 호출하여 수행할 수 있습니다.

    세션당 한 번만 Amazon DTBAdResponse 또는 DTBAdErrorInfoMAInterstitialAd 인스턴스에 로드하여 전달해야 합니다.

    #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 video 광고 로드

    Amazon rewarded video를 MAX에 연동하려면 먼저 Amazon 광고를 로드해야 합니다. MAX 광고를 로드하기 전에 DTBAdResponse 또는 DTBAdErrorInfoMARewardedAd 인스턴스에 전달하십시오. 이는 -[MARewardedAd setLocalExtraParameterForKey:value:]를 호출하여 수행할 수 있습니다.

    Amazon DTBAdResponse 또는 DTBAdErrorInfoMARewardedAd 인스턴스에 한 번만 로드하여 전달해야 합니다.

    #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 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 광고만 포함하도록 waterfall을 필터링할 수 있습니다. 이를 위해 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
    

    어댑터 네트워크 정보

    Loading…


search