모바일 자산에 서드파티 SDK를 연동할 때, 해당 연동에 대한 책임은 전적으로 귀하에게 있습니다. 귀하와 서드파티 SDK 제공업체는 사용자 기준 또는 기기 기준의 개인정보 보호 선택 사항이나 플래그를 준수하여 데이터를 처리하고 다루어야 합니다.
앱에 MAX 미디에이션 어댑터를 다운로드하고 연동하는 방법은 두 가지가 있습니다:
어댑터의 이름이나 패키지 이름을 변경하지 마십시오. 변경할 경우, 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:applovin-sdk:+'
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:applovin-sdk:+")
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의 투명성 및 동의 프레임워크(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 플러그인 버전 4.2.0 이상 및 Gradle 버전 6.7.1 이상을 요구합니다. 다음과 같은 오류가 발생하는 경우, Android Gradle 플러그인 및 Gradle 버전을 업데이트하십시오:
AAPT: error: unexpected element <property> found in <manifest><application>.
compileSdkVersionGoogle Mobile Ads SDK 버전 23.1.0 이상은 최소 34의 compileSdkVersion을 요구합니다.
앱의 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 광고의 경우, 광고를 한 번만 로드하면 됩니다.
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()를 호출하여 수행할 수 있습니다.
세션당 한 번만 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();
}
}
}
class ExampleActivity : Activity()
{
private var interstitialAd: MaxInterstitialAd? = null // 단 하나의 인스턴스만 존재하도록 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()를 호출하여 수행할 수 있습니다.
세션당 한 번만 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();
}
}
}
class ExampleActivity : Activity()
{
private var interstitialAd: MaxInterstitialAd? = null // 단 하나의 인스턴스만 존재하도록 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()를 호출하여 수행할 수 있습니다.
세션당 한 번만 DTBAdResponse 또는 AdError를 MaxRewardedAd 인스턴스에 로드하여 전달해야 합니다.
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();
}
}
}
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();
}
}
}
AppLovin은 Amazon SDK의 테스트 모드를 활성화할 것을 권장합니다. 이를 통해 테스트 광고를 수신할 수 있습니다. 다음 호출을 수행하여 테스트 모드를 활성화하십시오:
AdRegistration.enableTesting( true );
AdRegistration.enableLogging( true );
Amazon 광고만 포함하도록 waterfall을 필터링할 수 있습니다. 이렇게 하려면 Mediation Debugger에서 Select Live Network로 이동하여 Amazon 네트워크를 선택하십시오.
제한적 데이터 사용(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 초기화
Google UMP를 CMP로 사용하는 경우, 사용자가 Meta에 동의했는지 여부를 확인할 수 있습니다. 이를 위해 다음과 같은 코드를 사용하십시오:
Boolean hasMetaConsent = AppLovinPrivacySettings.getAdditionalConsentStatus( 89 );
if ( hasMetaConsent != null )
{
// 이에 따라 Meta 데이터 처리 옵션을 설정합니다.
}
else
{
// 디스크에서 AC String을 사용할 수 없습니다. 사용자가 CMP 플로우를 완료한 후 동의 상태를 확인하십시오.
}
val hasMetaConsent = AppLovinPrivacySettings.getAdditionalConsentStatus(89)
if ( hasMetaConsent != null )
{
// 이에 따라 Meta 데이터 처리 옵션을 설정합니다.
}
else
{
// 디스크에서 AC String을 사용할 수 없습니다. 사용자가 CMP 플로우를 완료한 후 동의 상태를 확인하십시오.
}
캘리포니아에서 Meta Audience Network의 “제한적 데이터 사용” 플래그를 구현하는 방법을 알아보려면 Meta for Developers 문서를 방문하십시오.
코드 난독화 또는 리소스 축소를 사용하는 경우, Pangle의 난독화 가이드라인을 따르십시오.
일부 네트워크 SDK는 번들로 제공되는 Android Manifest 파일에 <queries> 요소를 포함합니다.
호환되지 않는 버전의 Android Gradle 플러그인을 사용하는 경우, 다음과 같은 빌드 오류 중 하나가 발생합니다:
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
이 오류를 해결하려면 <queries> 요소를 지원하는 다음 버전 중 하나의 Android Gradle 플러그인으로 업그레이드하십시오:
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+ |