먼저 기본 통합 문서의 지침을 따릅니다. 그다음 통합하고자 하는 광고의 유형(전면 광고 또는 보상형 광고, 배너 광고, MREC 광고)별 지침을 따릅니다. 이 문서에는 추가 정보가 포함되어 있으며 기본 통합을 완료했다고 가정하고 설명을 진행합니다.
2019년 5월 25일부터 GDPR(General Data Protection Regulation, 일반데이터보호규정)이 유럽 연합에서 시행됩니다. GDPR을 준수하기 위해 개발자에게는 두 가지 옵션이 있습니다.
- 옵션 1(권장): 퍼블리셔는 사용자 수준에서 GDPR 동의 과정을 제어한 후 Vungle에 사용자의 선택을 전달합니다. 이를 위해 개발자는 자체 메커니즘을 사용하여 사용자의 동의를 수집한 다음 Vungle API를 사용하여 사용자의 동의 상태를 업데이트하거나 쿼리할 수있습니다. 자세한 내용은 아래의 샘플 코드를 참조하십시오.
- 옵션 2: Vungle이 요구사항을 처리하도록 허용합니다. Vungle은 유럽 사용자를 위해 광고를 재생하기 전에 동의 대화 상자를 표시하고 이후 광고에 대한 해당 사용자의 동의 여부를 기억합니다.
updateConsentStatus
메서드(옵션 1에서 권장됨)는 사용자의 동의 상태와 동의 메시지 버전을 매개 변수로 사용합니다.
public static void updateConsentStatus(@NonNull Consent status, @NonNull String consentMessageVersion)
동의 상태는 표시하는 메시지 버전에 대하여 사용자의 OPTED_IN
또는 OPTED_OUT
여부를 지정합니다. consentMessageVersion
은(는) 퍼블리셔가 제어하는 동의 정책 버전을 지정합니다. 이를 통해 메시지 버전별로 사용자를 풀링하여 GDPR 정책이 변경될 때 다시 동의를 구할 수 있습니다.
// Usage example of GDPR API
// To set the user's consent status to opted in:
Vungle.updateConsentStatus(Vungle.Consent.OPTED_IN, “1.0.0”);
// To set the user's consent status to opted out:
Vungle.updateConsentStatus(Vungle.Consent.OPTED_OUT, “1.0.0”);
// To find out what the user's current consent status is:
// This will return null if the GDPR Consent status has not been set
// Otherwise, it will return Vungle.Consent.OPTED_IN or Vungle.Consent.OPTED_OUT
Vungle.Consent currentGDPRStatus = Vungle.getConsentStatus();
String consentMessageVersion = Vungle.getConsentMessageVersion();
2020년 7월 1일부터 시행되는 캘리포니아 소비자 개인정보 보호법 (CCPA)에 따라 퍼블리셔는 Android SDK 6.7.0으로 업데이트하여 CCPA를 준수해야 합니다.
updateCCPAStatus
메서드는 사용자의 동의 상태를 사용하여 사용자의 OPTED_IN
또는 OPTED_OUT
상태 여부 및 getCCPAStatus()
메서드의 현재 사용자 CCPA 상태 반환 여부를 지정합니다.
public static void updateCCPAStatus(@NonNull final Consent status)
public static Consent getCCPAStatus()
// Usage example of CCPA API
// To set the user's CCPA status to opted in:
Vungle.updateCCPAStatus(Consent.OPTED_IN);
// To set the user's CCPA status to opted out:
Vungle.updateCCPAStatus(Consent.OPTED_OUT);
// To find out what the user's current consent status is:
Consent currentCCPAStatus = Vungle.getCCPAStatus();
Vungle Android SDK v6.4.11부터 이제 Google Advertising ID 사용 불가 시 사용되는 Android ID로의 전송을 제한할 수 있습니다.
// Set true to opt out for Android ID collection by SDK or false (default) to opt in
VungleSettings vungleSettings = new VungleSettings.Builder()
.setAndroidIdOptOut(true)
.build();
Vungle.init(appId, getApplicationContext(), initCallback, vungleSettings);
프로젝트에 Google Play Services를 포함하는 것은 선택 사항이지만, 권장됩니다. Vungle에서 보다 강화된 맞춤형 광고 경험을 최종 사용자에게 제공할 수 있기 때문입니다. basement 및 광고 식별자 API를 포함하고, Google Play Services v11.0.1 이상을 사용하는 것을 권장합니다.
Google Play Services를 포함하려면 Google의 설치 설명서를 참조하시기 바랍니다. 기기의 Google Play Services가 지원되는 버전으로 업데이트되어 있는지 앱에서 확인합니다. Vungle SDK는 Google Play Services의 위치와 광고 API를 선택적으로 사용합니다.
-
google.android.gms:play-services-basement:16.0.0
(권장) -
google.android.gms:play-services-ads-identifier:16.0.0
(AAID에 필요)
Vungle Android SDK v6을 프로젝트에 추가하면 모든 추이적 종속성을 제외한 약 700개의 핵심 Vungle 메서드가 추가됩니다. 타사 라이브러리를 포함하는 완전한 통합의 경우 평균 4000개 미만의 메서드가 추가될 것으로 예상됩니다. 프로젝트에 추가되는 총 메서드 수를 줄이려면 다음 제안 사항을 고려하십시오.
-
ProGuard: ProGuard를 활성화하여 프로젝트 코드를 줄일 수 있습니다. ProGuard는 컴파일 시 사용되지 않는 모든 클래스를 버려 총 메서드 수를 최대한 작게 만듭니다. 적절한 빌드 유형에 대한
build.gradle
에서minifyEnabled
를true
로 설정하고 프로젝트에 필요한 클래스를 유지하기 위한 규칙을 제공하여 ProGuard를 활성화할 수 있습니다. - MultiDex: 메서드 수가 여전히 65K를 초과하는 경우, MultiDex를 활성화하는 것만이 Google에서 제공된 유일한 해결책일 수 있습니다. MultiDex에서 프로젝트를 구성하는 것은 단 한 번이면 되지만 빌드 및 앱 시작 시간에 영향을 줍니다.
ProGuard를 사용하는 경우 ProGuard 구성 파일에 다음과 같은 규칙을 추가합니다.
# Vungle
# Vungle
-dontwarn com.vungle.warren.downloader.DownloadRequestMediator$Status
-dontwarn com.vungle.warren.error.VungleError$ErrorCode
# Google
-dontwarn com.google.android.gms.common.GoogleApiAvailabilityLight
-dontwarn com.google.android.gms.ads.identifier.AdvertisingIdClient
-dontwarn com.google.android.gms.ads.identifier.AdvertisingIdClient$Info
# Moat SDK
-keep class com.moat.** { *; }
-dontwarn com.moat.**
# GSON
-keepattributes *Annotation*
-keepattributes Signature
# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
# OkHttp + Okio
-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform
Vungle SDK에서 광고를 초기화하고 가져오기 전에 사용자 기기에서 사용 가능한 공간의 제한을 결정하기 위해 Vungle SDK v6.4.11에 최소 디스크 공간 구성이 도입되었습니다. setMinimumSpaceForInit
코드의 기본값은 51MB이고 setMinimumSpaceForAd
코드는 50MB입니다. 크기는 바이트 단위로 입력됩니다.
VungleSettings vungleSettings = new VungleSettings.Builder()
.setMinimumSpaceForInit(51L * 1024L * 1024L) // 51 MB
.setMinimumSpaceForAd(50L * 1024L * 1024L) // 50 MB
.build();
Vungle.init(appId, getApplicationContext(), initCallback, vungleSettings);
대상 API 수준이 14 이상으로 설정되어 있으면 하드웨어 가속이 어플리케이션에 기본적으로 활성화되어 있습니다. 다이나믹 템플릿 및 MREC 광고를 적절하게 표시하려면 SDK에 대해 이 옵션을 사용하도록 설정해야 합니다. 이 옵션이 프로젝트의 어플리케이션 레벨에서 'true'로 설정되어 있는지 확인하십시오.
<application android:hardwareAccelerated="true" ...>
런타임 시 SDK 버전 번호를 프로그래밍 방식으로 검색하기 위해(내부 미디에이션에 유용) Vungle은 다음 문자열을 제공합니다.
com.vungle.warren.BuildConfig.VERSION_NAME
InitCallback
, PlayAdCallback
, LoadAdCallback
및 onError
콜백이 실행될 때 VungleException
코드가 있습니다. 코드를 사용하여 프로그래밍 방식으로 문제를 디버깅하거나 조치를 취하여 문제를 해결할 수 있습니다.
if (exception.getExceptionCode() == VungleException.VUNGLE_NOT_INTIALIZED) {
// Call routine to initialize SDK
}
예외 코드 | 설명 |
CONFIGURATION_ERROR |
구성 오류가 발생했습니다. 앱 ID 및 플레이스먼트 참조 ID를 확인하고 네트워크 연결을 사용할 수 있을 때 다시 시도하십시오. |
NO_SERVE |
광고 서버가 현재 입찰에 대한 광고를 찾지 못했습니다. 나중에 다시 시도해 주십시오. 이 예외는 예상된 동작입니다. |
UNKNOWN_ERROR |
알 수 없는 오류가 발생했습니다. 이 예외는 드물게 발생합니다. |
AD_EXPIRED |
캐시의 광고가 만료되어 더 이상 재생할 수 없습니다. 다른 광고를 로드해 주십시오. |
MISSING_REQUIRED_ARGUMENTS_FOR_INIT |
NonNull로 표시된 모든 Vungle.init() 매개 변수는 SDK가 작동하는 데 필수적이므로 제공되었는지 확인해 주십시오. |
APPLICATION_CONTEXT_REQUIRED |
SDK가 Activity 수명 주기 이후에도 API를 계속 지원할 수 있도록 어플리케이션 Context 을(를) 제공해 주십시오. |
OPERATION_ONGOING |
요청한 작업에 대해 이미 진행중인 작업이 있습니다. 다른 작업을 시작하기 전에 작업이 완료될 때까지 기다려 주십시오. |
VUNGLE_NOT_INTIALIZED |
Vungle이 초기화되지 않았거나 더 이상 초기화되지 않습니다. 다시 초기화하려면 Vungle.init() 을(를) 호출해 주십시오. |
AD_UNABLE_TO_PLAY |
광고를 재생할 수 없습니다. |
AD_FAILED_TO_DOWNLOAD |
광고를 다운로드하지 못했습니다. |
PLACEMENT_NOT_FOUND |
플레이스먼트가 유효하지 않습니다. |
SERVER_RETRY_ERROR |
원격 서버가 HTTP Retry-After 응답을 보내면 SDK는 요청을 다시 보냅니다. |
"백업 허용" 설정은 API 23 이상의 어플리케이션에서 기본적으로 활성화됩니다. 백업 규칙은 Vungle SDK 및 앱 자체의 올바른 작동을 위해 모든 어플리케이션 데이터가 백업되도록 합니다. "백업 허용" 설정을 비활성화하지 않았거나 자체 백업 규칙을 지정하지 않은 경우, SDK 파일 시스템에서 자동 백업에서 제외할 파일을 정의하는 추가 XML 규칙을 제공해야 합니다.
<full-backup-content>
<exclude domain="file" path="vungle" />
<exclude domain="file" path="vungle_cache" />
<exclude domain="external" path="vungle_cache" />
<exclude domain="database" path="vungle_db" />
<exclude domain="sharedpref" path="com.vungle.sdk.xml" />
</full-backup-content>
- Vungle 제외 규칙을 사용하여 새 XML 파일을 만듭니다.
- .xml 파일을
res/xml
디렉토리 아래에 배치합니다. - 위에서 만든 .xml 파일의 파일명으로
AndroidManifest.xml
어플리케이션 태그에fullBackupContent
을(를) 추가합니다.<application android:fullBackupContent="@xml/vungle_backup_rule">
앱에 백업이 필요하지 않은 경우 어플리케이션 태그에서 간단히 이를 비활성화할 수 있습니다.
<application
android:allowBackup="false" >