Vungle - Android 또는 Amazon SDK v. 6 시작하기

이 설명서를 사용하여 Android 또는 Amazon용 Vungle SDK를 통합하십시오. Android SDK의 v.5.3.0부터 Vungle은 Amazon OS 5.4 이상을 플랫폼으로 지원합니다. Amazon SDK 통합 단계는 Android와 동일하지만 Amazon 통합에는 Amazon 앱 ID를 사용해야 합니다.

이 문서의 내용:

GDPR: 권장 구현

5월 25일부터 GDPR(General Data Protection Regulation, 일반데이터보호규정)이 유럽 연합에서 시행됩니다. 개발자에게는 GDPR 준수를 위한 2가지 옵션이 있습니다.

  • 옵션 1(권장): 퍼블리셔는 사용자 수준에서 GDPR 동의 과정을 제어한 후 Vungle에 사용자의 선택을 전달합니다. 이를 위해 개발자는 자체 메커니즘을 사용하여 사용자의 동의를 수집한 다음 Vungle API를 사용하여 사용자의 동의 상태를 업데이트하거나 쿼리할 수​있습니다. 자세한 내용은 GDPR 권장 구현 지침 섹션을 참조하십시오.

  • 옵션 2: Vungle이 요구사항을 처리하도록 허용합니다. Vungle은 유럽 사용자를 위해 광고를 재생하기 전에 동의 대화 상자를 표시하고 이후 광고에 대한 해당 사용자의 동의 여부를 기억합니다.

시작하기 전에

릴리스 주요 사항

  • 빠른 속도: 초기화 및 광고 캐시 성능이 v5보다 최대5배까지 빨라졌습니다.
  • 경량: 메서드 수 감소됨
    • 핵심 SDK: 750개 메서드
    • 타사 라이브러리를 포함한 완벽한 통합: 4000개 메서드까지
  • GDPR 준수: Vungle은 사용자 동의를 얻기 위한 2가지 옵션을 제공합니다. Vungle 또는 퍼블리셔는 이 프로세스를 제어할 수 있습니다, 새 API 호출이 추가되었습니다.

요구사항

  • Android 4.0(Ice Cream Sandwich - API 버전 14) 이상
  • Android 지원 라이브러리 v26 이상
  • Android targetSdkVersion 26 이상

샘플 앱

1단계. 프로젝트에 Vungle SDK 포함

Vungle SDK는 Maven을 통해서 AAR 또는 JAR 통합으로 이용할 수 있습니다.

옵션 1. AAR 통합

프로젝트 레벨 build.gradle을 열고 모든 프로젝트 섹션에 Maven URL을 추가합니다.

allprojects {
repositories {
maven {
url 'https://jitpack.io'
}
}
}

앱에서 앱 레벨 build.gradle 파일을 열고 종속성 섹션에 컴파일 종속성을 추가합니다.

dependencies { … // Vungle SDK
compile 'com.github.vungle:vungle-android-sdk:6.2.5'
// Optional Google Play Services - Location and Basement
compile 'com.google.android.gms:play-services-basement:11.0.4'
compile 'com.google.android.gms:play-services-location:11.0.4' … }

Maven을 통해서 Vungle SDK를 포함하는 경우 "2단계. Vungle SDK 가져오기"를 건너뛸 수 있습니다.

옵션 2. JAR 통합

  1. Vungle SDK v.6을 다운로드하여 압축을 해제하고 libs 폴더로 이동한 후 jar를 모두 복사하고 프로젝트 libs 폴더에 추가합니다.

    image1.png
  2. 프로젝트 레벨 build.gradle을 열고 저장소 섹션을 업데이트합니다.

    allprojects {
    repositories {
    jcenter()
    }
    }
  3. 앱에서 앱 레벨 build.gradle 파일을 열고 종속성 섹션에 기타 종속성을 추가합니다.

    dependencies { … // Vungle SDK compile files('libs/vungle-android-sdk-6.2.5.jar') // Required Third-party Dependencies compile files('libs/android-job-1.2.0.jar') compile files('libs/cat-1.0.5.jar') compile files('libs/converter-gson-2.2.0.jar') compile files('libs/fetch-1.1.5.jar') compile files('libs/gson-2.7.jar') compile files('libs/logging-interceptor-3.7.0.jar') compile files('libs/okhttp-3.7.0.jar') compile files('libs/okio-1.12.0.jar') compile files('libs/retrofit-2.2.0.jar') compile files('libs/VNG-moat-mobile-app-kit-2.2.0.jar') // Google Play Services compile 'com.google.android.gms:play-services-gcm:11.0.4' // Required compile 'com.google.android.gms:play-services-basement:11.0.4' // Optional compile 'com.google.android.gms:play-services-location:11.0.4' // Optional // Support libraries compile 'com.android.support:support-v4:26.0.1' … } 
  4. Vungle SDK를 수동으로 포함하는 경우 "2단계. Vungle SDK 가져오기"를 계속 진행합니다.

  5. 다음 행을 AndroidManifest.xml에 추가하고 multidex에 대한 어플리케이션 클래스 이름에 어플리케이션 항목 이름을 지정하여 AndroidManifest.xml을 업데이트합니다.
    <!--Required Permissions-->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <!--Optional Permissions-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:networkSecurityConfig="@xml/network_security_config" >

    <activity android:name=".MainActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>

    <!-- Google Play Services -->
    <meta-data android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

    <!-- Vungle -->
    <activity
    android:name="com.vungle.warren.ui.VungleActivity"
    android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <!-- android-job -->
    <service
    android:name="com.evernote.android.job.v21.PlatformJobService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />
    <service
    android:name="com.evernote.android.job.v14.PlatformAlarmService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />
    <service
    android:name="com.evernote.android.job.v14.PlatformAlarmServiceExact"
    android:exported="false" />
    <receiver
    android:name="com.evernote.android.job.v14.PlatformAlarmReceiver"
    android:exported="false" >
    <intent-filter>
    <!-- Keep the filter for legacy intents -->
    <action android:name="com.evernote.android.job.v14.RUN_JOB" />
    <action android:name="net.vrallev.android.job.v14.RUN_JOB" />
    </intent-filter>
    </receiver>
    <receiver
    android:name="com.evernote.android.job.JobBootReceiver"
    android:exported="false" >
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    <action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
    <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
    </intent-filter>
    </receiver>
    <service
    android:name="com.evernote.android.job.gcm.PlatformGcmService"
    android:enabled="true"
    tools:replace="android:enabled"/>
    <intent-filter>
    <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
    </intent-filter>
    </service>
    <service
    android:name="com.evernote.android.job.JobRescheduleService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />

    </application>

2단계. Vungle SDK 가져오기

import com.vungle.warren.Vungle; import com.vungle.warren.AdConfig; // Custom ad configurations import com.vungle.warren.InitCallback; // Initialization callback import com.vungle.warren.LoadAdCallback; // Load ad callback import com.vungle.warren.PlayAdCallback; // Play ad callback import com.vungle.warren.VungleNativeAd; // Flex-Feed ad

3단계. Vungle SDK 초기화

초기화 메서드는 다음 매개 변수를 사용합니다.

  • 사용된 플레이스먼트 참조 ID의 문자열 목록
  • Vungle 어플리케이션 ID
  • 어플리케이션 컨텍스트
  • InitCallback
    • onSuccess: SDK 초기화가 완료되면 알림
    • onError: SDK 초기화가 실패하면 알림
      • InitCallback이 null인 경우 IllegalArgumentException 발생
      • 필수 인수가 누락되었거나 잘못된 경우 VungleException 발생
    • onAutoCacheAdAvailable: 자동 캐시된 플레이스먼트에 재생 가능한 광고가 있으면 알림

광고가 사전 캐시되지 않을 때마다 SDK가 자동 캐시된 플레이스먼트에 대해 광고 캐시를 시도하므로 onAutoCacheAdAvailablecallback을 초기화 콜백의 일부로 사용할 수 있습니다. SDK가 처음 시작되거나 플레이스먼트에 대해 사전 캐시된 광고가 재생되는 경우가 여기에 포함됩니다. 이는 프로세스가 중단되거나 Vungle 인스턴스가 가비지 수집에 의해 회수될 때까지 true로 유지됩니다. 자동 캐시된 플레이스먼트가 아닌 다른 모든 플레이스먼트의 경우 반드시 “5단계. 광고 로드”의 설명에 따라 loadAd를 발행해야 합니다.

private final List placement_collection = Arrays.asList("PLACEMENT_1", "PLACEMENT_2", "PLACEMENT_3"); Vungle.init(placement_collection, app_id, this.getApplicationContext(), new InitCallback() { @Override public void onSuccess() { // Initialization has succeeded and SDK is ready to load an ad or play one if there // is one pre-cached already } @Override public void onError(Throwable throwable) { // Initialization error occurred - throwable.getLocalizedMessage() contains error message } @Override public void onAutoCacheAdAvailable(String placementId) { // Callback to notify when an ad becomes available for the auto-cached placement // // NOTE: This callback works only for the auto-cached placement. Otherwise, please use // LoadAdCallback with loadAd API for loading placements. } }; 

isInitialized 메서드를 호출하여 Vungle SDK 초기화 여부를 언제든지 확인할 수 있습니다.

public static boolean isInitialized()

4단계. 이벤트 리스너

모든 이벤트에 일반 콜백을 사용하려는 경우 이제 광고 로드 이벤트용 LoadAdCallback 및 광고 재생 이벤트용 PlayAdCallback을 구현합니다. 그렇지 않은 경우 “5단계. 광고 로드”로 건너뛰어 인라인 콜백을 구현합니다.

// Implement LoadAdCallback
private final LoadAdCallback vungleLoadAdCallback = new LoadAdCallback() {
@Override
public void onAdLoad(String placementReferenceId) {
// Placement reference ID for the placement to load ad assets
}

@Override
public void onError(String placementReferenceId, Throwable throwable) {
// Placement reference ID for the placement that failed to download ad assets
// Throwable contains error message
}
};
// Implement PlayAdCallback
private final PlayAdCallback vunglePlayAdCallback = new PlayAdCallback() {
@Override
public void onAdStart(String placementReferenceId) {
// Placement reference ID for the placement to be played
}

@Override
public void onAdEnd (String placementReferenceId, boolean completed, boolean isCTAClicked) {
// Placement reference ID for the placement that has completed ad experience
// completed has value of true or false to notify whether video was
// watched for 80% or more
// isCTAClkcked has value of true or false to indicate whether download button
// of an ad has been clicked by the user
}

@Override
public void onError(String placementReferenceId, Throwable throwable) {
// Placement reference ID for the placement that failed to play an ad
// Throwable contains error message
}
};

5단계. 광고 로드

Vungle Android SDK v6에서는 대신 로드당 콜백이 v5의 글로벌 VungleAdEventListener에 따라 허용됩니다. LoadAdCallback은 할당된 호출의 로드 상태에 대한 알림을 받습니다. v6 SDK는 이 콜백을 참조만 하며 저장하지 않습니다. 콜백을 적절하게 관리하는 것은 호출자의 책임입니다.

public static void loadAd(@NonNull final String id, @Nullable LoadAdCallback callback) 

SDK는 자동 캐시된 플레이스먼트에 대한 광고 자산 다운로드를 관리하므로 자동 캐시된 플레이스먼트에 대해 이 메서드를 호출할 필요가 없습니다. 기타 모든 플레이스먼트의 경우 loadAd 메서드가 반드시 호출되고 성공적으로 완료되어야 SDK가 해당 플레이스먼트에 대해 광고를 재생할 수 있습니다. 이런 경우 onAdLoad 콜백이 트리거됩니다.

// Load Ad Implementation
if (Vungle.isInitialized()) {
Vungle.loadAd("PLACEMENT_ID", new LoadAdCallback() {
@Override
public void onAdLoad(String placementReferenceId) { }

@Override
public void onError(String placementReferenceId, Throwable throwable) {
// Load ad error occurred - throwable.getLocalizedMessage() contains error message
}
};
}

6단계. 광고 가용성 확인

canPlayAdmethod 정적 메서드를 사용하여 playAd() method 를 호출하기 전에 해당 플레이스먼트에 대해 재생할 수 있는 광고가 있는지 확인합니다.

public static boolean canPlayAd(@NonNull String id)

7단계. 광고 재생

광고를 재생하려면 플레이스먼트 참조 ID, AdConfig 옵션(사용되지 않는 경우 null) 및 PlayAdCallback 이벤트 리스너가 포함된 playAd 메서드를 호출하여 광고가 재생되는 동안 성공 또는 오류에 대한 알림을 수신합니다.

public static void playAd(@NonNull final String id, final AdConfig settings, @Nullable final PlayAdCallback listener) 

playAd 메서드를 호출하기 전에 canPlayAd 메서드를 호출하여 광고 가용성을 항상 확인해야 합니다. 또한 playAd가 반복적으로 잇달아 호출되는 경우 광고가 적절하게 렌더링되지 않으므로 초기 playAd 호출의 onAdEnd 또는 onError 콜백을 수신하기 전에 추가 playAd가 발행되지 않는지 확인해야 합니다.

if (Vungle.canPlayAd("PLACEMENT_ID")) {
Vungle.playAd("PLACEMENT_ID", new AdConfig, new PlayAdCallback() {
@Override
public void onAdStart(String placementReferenceId) { }

@Override
public void onAdEnd(String placementReferenceId, boolean completed, boolean isCTAClicked) { }

@Override
public void onError(String placementReferenceId, Throwable throwable) {
// Play ad error occurred - throwable.getLocalizedMessage() contains error message
}
});
}

onError의 경우 SDK 다시 초기화

드물게 발생하는 경우 리소스가 제한되어 시스템이 Vungle SDK의 부분 또는 SDK에 필요한 일부 타사 종속성의 할당이 취소됩니다. 이러한 경우 LoadAdCallback and PlayAdCallback‘VungleException.VUNGLE_NOT_INTIALIZED’의 코드가 포함된 Throwable 개체를 사용하여 onError() 콜백을 실행합니다. 이는 Vungle SDK가 작동 불가 상태이며 다시 초기화해야 함을 의미합니다.

@Override public void onError(String placementReferenceID, Throwable throwable) { try { VungleException ex = (VungleException) throwable; if (ex.getExceptionCode() == VungleException.VUNGLE_NOT_INTIALIZED) { initializeVungleSDK(); } } catch (ClassCastException cex) { Log.d(LOG_TAG, cex.getMessage()); } } 

Native Flex 광고

Flex-View 광고

Flex-View 광고는 일반적인 전체 화면 광고와 같은 방식으로 로드 및 재생됩니다. 대시보드에서 'Flex-View' 플레이스먼트 유형으로 구성된 플레이스먼트 참조 ID을 호출하기만 하면 됩니다.

현재 Flex-View 광고를 재생 중인 플레이스먼트 참조 ID를 사용해 closeFlexViewAd 메서드를 발행하여 Flex-View를 프로그래밍 방식으로 닫을 수 있습니다.

public static boolean closeFlexViewAd(@NonNull final String placementReferenceId)

지정된 시간 간격 동안 Flex-View 광고를 표시한 후 자동으로 닫을 수 있는 또 다른 옵션이 있습니다. 광고 구성 옵션 섹션을 참조하십시오.

Flex-Feed 광고

Flex-Feed 광고 형식의 경우 전체 화면을 표시할 필요가 없습니다. 대신, 퍼블리셔가 앱 내 광고 컨테이너의 정확한 크기와 위치를 결정합니다. 이러한 광고 컨테이너는 컬렉션 뷰 또는 테이블/목록 뷰에 위치할 수 있습니다.

Flex-Feed 광고 로드

퍼블리셔는 반드시 Flex-Feed 컨테이너에 대한 광고를 로드해야 합니다. Flex-Feed 광고를 로드하는 방식은 전체 화면 또는 전면 광고 로드 방식과 동일하지만 플레이스먼트는 Flex-Feed를 지원하도록 구성되어야 합니다. Flex-Feed에 대해 플레이스먼트를 사용하도록 설정하려면 계정 관리자에게 문의하십시오.

Flex-Feed 광고 표시

Flex-Feed 광고를 표시하는 방법은 전체 화면 광고 표시 방법과 다릅니다. Flex-Feed 광고에서는 광고 컨테이너를 먼저 생성해야 합니다. 이 컨테이너는 레이아웃입니다. 해당 RelativeLayout은 화면 어느 곳에나 배치할 수 있습니다. 광고는 컨테이너의 크기에 맞게 조정되지만 해상도가 너무 낮으면 광고의 가시성이 저하됩니다. 그런 다음 Vungle.getNativeAd를 호출하여 Flex-Feed 광고 개체를 가져오고 addView 함수를 호출하여 컨테이너를 Flex-Feed 광고에 연결해야 합니다.

private RelativeLayout flexfeed_container = findViewById(...); VungleNativeAd vungleNativeAd = Vungle.getNativeAd("FLEXFEED_ID", vunglePlayAdCallback); View nativeAdView = vungleNativeAd.renderNativeView(); flexfeed_container.addView(nativeAdView); 

Flex-Feed 광고 닫기

Flex-Feed 광고 뷰는 컨테이너 뷰에 추가되어 있으므로 광고 뷰가 화면에서 사라지거나 활동 또는 조각이 삭제되거나 상위 뷰 컨테이너가 재사용 또는 삭제되는 경우 반드시 제거되어야 합니다. 광고를 닫지 않으면 이러한 이벤트로 인해 앱에서 예상치 못한 동작이 발생합니다.

하위 FlexFeed 뷰 컨테이너를 제거할 수 있는 경우 private VungleNativeAd vungleNativeAd; // Calling finishDisplayingAd when you want to finish displaying Flex-Feed Ad will 이(가) onAdEnd를 트리거되고 알림이 전송됩니다.
vungleNativeAd.finishDisplayingAd(); // And removing empty ad view from container @Override public void onAdEnd(String id, boolean completed) { … parentView.remove(nativeAdView); vungleNativeAd = null; … }

Flex-Feed 광고 상태 첨부 및 분리

사용자가 동영상 광고가 화면에 더 이상 표시되지 않는 지점까지 스크롤한 경우 퍼블리셔는 반드시 동영상을 일시 중지하고 동영상이 다시 표시되면 재개해야 합니다. 일시 중지 및 재개 상태를 제어하려면 VungleNativeAd 인스턴스에서 setAdVisibility()를 호출하고 동영상이 표시되는 경우 ‘true’로, 동영상이 화면에서 사라지는 경우 ‘false’로 설정합니다. setAdVisibility를 뷰 가시성과 혼동하지 마십시오. 이 setter는 Vungle SDK에 Native 광고 뷰가 되는지, 이에 따라 SDK가 동영상 재생을 일시 중지/재개하는지 여부를 알려줍니다.

Flex-Feed 광고를 닫으려면:

vungleNativeAd.setAdVisibility(false);

Flex-Feed 광고를 재개하려면:

vungleNativeAd.setAdVisibility(true);

고급 설정

Google Play Services(선택사항)

프로젝트에 Google Play Services를 포함하면 Vungle에서 보다 강화된 맞춤형 광고 경험을 최종 사용자에게 제공할 수 있습니다. Google Cloud Messaging는 필수 API이지만 Google Location 및 Activity Recognition과 Google Location 및 Basement API는 선택 사항입니다. 버전 11.0.1 이상을 사용하는 것이 좋습니다.

Google Play Services를 포함하려면 Google의 설치 설명서를 읽어 보시기 바랍니다. 앱에서 해당 장치에 최신 버전의 Google Play Services가 설치되어 있는지 확인합니다. Vungle SDK는 Google Play Services의 위치 및 광고 API를 선택적으로 사용합니다.

  • google.android.gms:play-services-gcm:11.0.1 // Required
  • google.android.gms:play-services-basement:11.0.1 // Recommended
  • google.android.gms:play-services-location:11.0.1 // Recommended

메서드 수 감소

Vungle Android SDK v6을 프로젝트에 추가하면 모든 추이적 종속성을 제외한 약 750개의 핵심 Vungle 메서드가 추가됩니다. 타사 라이브러리를 포함하는 완전한 통합의 경우 평균 4000개 미만의 메서드가 추가될 것으로 예상됩니다. 프로젝트에 추가되는 총 메서드 수를 줄이려면 다음 제안 사항을 고려하십시오.

  • ProGuard: ProGuard를 활성화하여 프로젝트 코드를 줄일 수 있습니다. ProGuard는 컴파일 시 사용되지 않는 모든 클래스를 버려 총 메서드 수를 최대한 작게 만듭니다. 적절한 빌드 유형에 대한 build.gradle에서 minifyEnabled true를 지정하고 프로젝트에 필요한 클래스를 유지하기 위한 규칙을 제공하여 ProGuard를 활성화할 수 있습니다.

  • Multidex: 메서드 수가 여전히 65K를 초과하는 경우, multiDex를 활성화하는 것만이 Google에서 제공된 유일한 해결책일 수 있습니다. multiDex에서 단 한 번만 프로젝트를 구성하면 되지만 빌드 및 앱 시작 시간에 영향을 줍니다.

Proguard

Proguard를 사용하는 경우 ProGuard 구성 파일에 다음과 같은 규칙을 추가합니다.

# Vungle -keep class com.vungle.warren.** { *; } # Evernote -dontwarn com.evernote.android.job.gcm.** -dontwarn com.evernote.android.job.GcmAvailableHelper -dontwarn com.google.android.gms.ads.identifier.** -keep public class com.evernote.android.job.v21.PlatformJobService -keep public class com.evernote.android.job.v14.PlatformAlarmService -keep public class com.evernote.android.job.v14.PlatformAlarmReceiver -keep public class com.evernote.android.job.JobBootReceiver -keep public class com.evernote.android.job.JobRescheduleService -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -keep class com.google.android.gms.internal.** { *; } # Moat SDK -keep class com.moat.** { *; } -dontwarn com.moat.**

UI 스레드 노트

콜백은 배경 스레드에서 실행되므로 이벤트 콜백에 의한 UI 상호 작용/업데이트는 실행 이전에 기본 UI 스레드로 전달되어야 합니다. UI 스레드에서 코드를 실행하는 대표적인 두 가지 방법은 다음과 같습니다.

광고 구성 옵션

광고 구성

adConfig 개체를 playAd에 추가하여 재생하는 광고를 개별적으로 사용자 지정할 수 있는 옵션이 있습니다. AdConfig는 개체로서 광고가 기본 구성으로 재생되는 경우 null이 될 수 있습니다. 또는 AdConfig setter에 대한 재지정을 통해 null이 아닌 개체가 될 수도 있습니다. 다음은 AdConfig 사용 방법에 대한 예입니다.

Vungle.playAd(placementReferenceID, null, vunglePlayAdCallback);

위에서는 null을 adConfig 개체로 사용합니다. 어떤 추가 구성도 설정하고 싶지 않은 경우 사용할 수 있습니다. AdConfig 개체를 여기에 표시된 것처럼 사용합니다.

AdConfig adConfig = new AdConfig(); adConfig.setAutoRotate(true); adConfig.setMuted(true); Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);

다음 표는 사용 가능한 모든 AdConfig 옵션을 보여줍니다.

옵션

설명

setBackButtonImmediatelyEnabled

광고 종료 버튼이 표시되기 전에 뒤로 버튼이 활성화되어야 하는 경우 true, 그렇지 않은 경우 false

setFlexViewCloseTime

Flex-View 광고가 자동으로 닫힐 때까지의 시간(초)을 지정하는 0보다 크거나 같은 정수 값을 사용

setImmersiveMode

몰입형 모드가 KitKat+ 장치에 대해 활성화되는 경우 true, 그렇지 않은 경우 false

setAutoRotate

동영상 광고가 자동 회전하도록 되어 있는 경우 true, 동영상 광고 방향을 따르도록 되어 있는 경우 false

setMuted

동영상이 주변의 어플리케이션의 설정 중 일치하는 오디오 설정으로 시작되어야 하는 경우 true, 음소거로 시작되어야 하는 경우 false

setOrdinal

동일한 세션에서 재생되는 광고의 수를 추적하려면 서수의 정수 값을 사용합니다.

setTransitionAnimationEnabled

동영상 전환 애니메이션이 활성화되어야 하는 경우 true, 비활성화되어야 하는 경우 false

재생하는 여러 플레이스먼트 참조 ID에 대해 동일한 AdConfig 개체를 사용할 수 있습니다.

추가 보상형 광고 구성

Vungle 개체를 사용해 보상형 동영상 설정을 지정할 수 있습니다.

옵션

설명

setIncentivizedFields(@Nullable String userID, @Nullable String title, @Nullable String body, @Nullable String keepWatching, @Nullable String close)

사용자가 보상형 동영상을 닫으려고 할 때 닫기를 원하는지 확인하는 팝업이 표시됩니다. 이 설정을 사용해 해당 팝업을 사용자 지정할 수 있습니다. 예를 들어 사용자 ID만 변경하려는 경우 기본 값을 수정하지 않으려면 null을 사용하십시오.

보상형 광고 구성을 다음과 같이 설정합니다.

Vungle.setIncentivizedFields("user1","title1","body1","keepwatching1","close1"); Vungle.playAd("YOUR_APP_ID", AdConfig, vunglePlayAdCallback);

올바른 플레이스먼트 목록

현재 세션에 대해 올바른 플레이스먼트 참조 ID를 모두 포함하는 문자열 집합을 반환하는 도우미 메서드

public static Collection getValidPlacements()

GDPR 권장 구현 지침

Vungle API를 사용하여 업데이트하거나 사용자 동의 상태를 쿼리하려면(GDPR: 권장 구현의 옵션 1 참조) 다음 함수를 사용하십시오.

 // To set the user's consent status to opted in: Vungle.updateConsentStatus(Vungle.Consent.OPTED_IN); // To set the user's consent status to opted out: Vungle.updateConsentStatus(Vungle.Consent.OPTED_OUT); // To find out what the user's current consent status is: Vungle.Consent currentStatus = Vungle.getConsentStatus(); 

하드웨어 가속

대상 API 수준이 14 이상으로 설정되어 있으면 하드웨어 가속이 기본적으로 활성화되어 있습니다. 다이나믹 템플릿 및 Native Flex 광고를 적절하게 표시하려면 SDK에 대해 이 옵션을 사용하도록 설정해야 합니다. 이 옵션이 프로젝트에서 'true'로 설정되어 있는지 확인하십시오.

<application android:hardwareAccelerated="true" ...>

SDK 버전 번호 검색

런타임 시 SDK 버전 번호를 프로그래밍 방식으로 검색하기 위해(내부 미디에이션에 유용) Vungle은 다음 문자열을 제공합니다.

com.vungle.warren.BuildConfig.VERSION_NAME

추가 정보

Android Studios에는 다음과 같은 충돌이 발생할 수 있는 알려진 문제가 있습니다. 최신 Android Studios Instant Run을 사용 중인 경우 Android Studios Instant Run을 비활성화하여 이러한 충돌을 제거하십시오.

1-20 13:53:03.649 27642-27828/com.publisher.sample W/GooglePlayServicesUtil: Google Play services out of date. Requires 10240000 but found 9879438 11-20 13:53:03.659 27642-27828/com.publisher.sample W/VungleDevice: Google Play Services not available: SERVICE_VERSION_UPDATE_REQUIRED 11-20 13:53:05.679 27642-27642/com.publisher.sample D/Event: No subscribers registered for event class com.vungle.publisher.lu 11-20 13:53:05.679 27642-27642/com.publisher.sample D/Event: No subscribers registered for event class de.greenrobot.event.NoSubscriberEvent
또 다른 질문이 있으십니까? 문의 등록

댓글