Начало работы с Vungle SDK — Android или Amazon SDK v. 6

Используйте эту статью для интеграции Vungle SDK для Android или Amazon. Начиная с версии v.5.3.0 нашего Android SDK, Vungle поддерживает Amazon OS 5.4 и выше в качестве платформы. Инструкции по интеграции Amazon SDK не отличаются от Android, но убедитесь, что для интеграции Amazon используется идентификатор приложения Amazon.

В этой статье:

GDPR: рекомендации по реализации

25 мая в Европейском союзе вступил в силу Общий регламент по защите данных (General Data Protection Regulation, GDPR). Разработчикам доступно два варианта соблюдения его требований.

  • Вариант 1 (рекомендуется): Издатель контролирует процесс согласия с GDPR на уровне пользователя, а затем сообщает о выборе пользователя Vungle. Для этого разработчики могут собирать данные о согласии пользователя, используя свой собственный механизм, а затем использовать API Vungle для обновления или запроса статуса согласия пользователя. Более подробная информация доступна в разделе «Рекомендованные инструкции по реализации GDPR».

  • Вариант 2: Разрешить Vungle обрабатывать требования. Vungle будет отображать диалоговое окно с запросом согласия перед воспроизведением рекламы для европейского пользователя и будет запоминать согласие или отказ пользователя для последующих показов.

Перед началом работы

Главное в выпуске

  • Скорость: инициализация и кэширование рекламы до 5 раз быстрее, чем в v5
  • Сниженный объем: сокращенное число методов
    • Основной SDK: 750 методов
    • Полная интеграция, включающая сторонние библиотеки: ~4000 методов
  • Соответствие требованиям GDPR: Vungle предоставляет два варианта получения согласия пользователя: этот процесс может контролироваться Vungle либо издателем. Добавлены новые вызовы API.

Требования

  • Android 4.0 (Ice Cream Sandwich — версия API 14) или более поздняя версия
  • Вспомогательная библиотека Android v26 или выше
  • Android targetSdkVersion 26 или ниже

Пример приложения

Шаг 1. Добавление Vungle SDK в проект

Получить пакет Vungle SDK можно двумя способами: в формате AAR через репозиторий Maven или посредством интеграции JAR.

Вариант 1. Интеграция AAR

Откройте файл project-level build.gradle и добавьте в раздел all projects URL-адрес maven.

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

Откройте файл app-level build.gradle для своего приложения и добавьте в раздел dependencies зависимости для компиляции.

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' … }

Если вы добавляете Vungle SDK через Maven, можете пропустить раздел «Шаг 2. Импорт Vungle SDK».

Вариант 2. Интеграция JAR

  1. Скачайте Vungle SDK v. 6, распакуйте архив, перейдите в папку libs, скопируйте все Jar-файлы и добавьте их в папку libs проекта.

    image1.png
  2. Откройте файл project-level build.gradle и внесите изменения в раздел repositories:

    allprojects {
    repositories {
    jcenter()
    }
    }
  3. Откройте файл app-level build.gradle для своего приложения и добавьте в раздел dependencies другие зависимости.

    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, добавив в файл AndroidManifest.xml следующие строки и назначив имя элемента приложения имени класса приложения для multidex:
    <!--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

Метод инициализации принимает следующие параметры:

  • Список строк использованных идентификаторов размещения
  • Идентификатор приложения Vungle
  • Контекст приложения
  • InitCallback
    • onSuccess: уведомляет об успешной инициализации SDK
    • onError: уведомляет о сбое инициализации
      • выдает IllegalArgumentException, если InitCallback имеет значение null
      • выдает VungleException, если требуемые аргументы отсутствуют или являются недействительными
    • onAutoCacheAdAvailable: уведомляет, когда в размещении с автоматическим кэшированием есть доступная для воспроизведения реклама

onAutoCacheAdAvailablecallback доступно в рамках обратного вызова инициализации, так как SDK будет непрерывно пытаться кэшировать рекламу для размещения с автоматическим кэшированием всякий раз, когда реклама не была кэширована предварительно. Сюда входят случаи, когда SDK запускается в первый раз или когда была воспроизведена предварительно кэшированная реклама для размещения. Вышесказанное остается в силе до тех пор, пока процесс не завершится, или экземпляр Vungle не будет освобожден сборкой мусора. Для всех других размещений, которые не кэшируются автоматически, loadAd должны быть явно вызваны, как описано в разделе «Шаг 5. Загрузка рекламы».

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

Вы в любое время можете проверить инициализацию Vungle SDK, вызвав метод isInitialized:

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 допускается обратный вызов для каждой нагрузки вместо зависящего от глобального параметра VungleAdEventListener, как в v5. LoadAdCallback будет уведомлен о состоянии загрузки для вызова, которому был назначен. SDK V6 только ссылается на этот обратный вызов и нигде его не сохраняет; ответственность за должное управление обратным вызовом лежит на вызывающем.

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. Воспроизведение рекламы

Чтобы воспроизвести рекламу, вызовите метод playAd с идентификатором размещения, необязательным AdConfig (null, если не используется), и прослушивателем событий PlayAdCallback, который будет уведомлен об успешном выполнении или ошибках во время воспроизведения рекламы.

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

Вы всегда должны проверять доступность рекламы, вызывая метод canPlayAd перед вызовом метода playAd. Вы также должны убедиться, что дополнительный playAd не выполняется до того, как вы получите обратный вызов onAdEnd или onError от начального вызова playAd, так как реклама будет отображаться некорректно, если 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
}
});
}

Повторная инициализация SDK при onError

Иногда ресурсов может не хватать, в результате чего система освобождает часть Vungle SDK или некоторые из сторонних зависимостей, которые необходимы для SDK. В таких случаях LoadAdCallback and PlayAdCallback запускают обратный вызов onError() с объектом Throwable с кодом ‘VungleException.VUNGLE_NOT_INTIALIZED’. Это указывает на то, что SDK Vungle находится в нерабочем состоянии и требует повторной инициализации.

@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 с панели управления.

Flex-View можно закрыть программно, вызвав метод 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 необходимо настроить размещение. Свяжитесь со своим менеджером по работе с клиентами Vungle, чтобы активировать размещение 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 добавлено в представление вашего контейнера, его также необходимо удалить, если представление рекламы исчезает с экрана, класс Activity или фрагмент уничтожаются, или контейнер родительского представления перезапускается или уничтожается. Без закрытия рекламы такое событие приведет к неожиданному поведению в вашем приложении.

private VungleNativeAd vungleNativeAd; // Calling finishDisplayingAd when you want to finish displaying Flex-Feed Ad will  активирует onAdEnd и сообщает вам, когда можно удалить контейнер дочернего представления FlexFeed
vungleNativeAd.finishDisplayingAd(); // And removing empty ad view from container @Override public void onAdEnd(String id, boolean completed) { … parentView.remove(nativeAdView); vungleNativeAd = null; … }

Привязка и отвязка состояния рекламы Flex-Feed

Если пользователь прокручивает экран до точки, где видеореклама становится не видна на экране, издатель должен приостановить видео и возобновить его, когда оно снова станет видимым. Для управления приостановкой и возобновлением, вызовите setAdVisibility () из экземпляра VungleNativeAd и установите для него значение true, когда видео видно, и false, когда видео выходит за пределы экрана. setAdVisibility не следует путать с видимостью представления: этот метод задания информирует Vungle SDK о том, видимо ли нативное представление рекламы, и в зависимости от этого SDK приостанавливает/возобновляет воспроизведение видео.

Для приостановки рекламы Flex-Feed:

vungleNativeAd.setAdVisibility(false);

Для возобновления рекламы Flex-Feed:

vungleNativeAd.setAdVisibility(true);

Дополнительные параметры

Сервисы Google Play (необязательно)

Включение сервисов Google Play в ваш проект позволяет Vungle обеспечить более органичное взаимодействие пользователя с рекламным объявлением. Google Cloud Messaging является обязательным API, в то время как использование API Google Location and Activity Recognition и Google Location and Basement носит необязательный характер. Мы рекомендуем использовать версию 11.0.1 или более позднюю.

О том, как добавить сервисы Google Play, см. в руководстве по настройке Google. В приложении следует убедиться, что на устройстве имеется достаточно новая версия сервисов Google Play. Vungle SDK может дополнительно использовать API расположений и рекламных объявлений из сервисов Google Play.

  • google.android.gms:play-services-gcm:11.0.1 // Обязательно
  • google.android.gms:play-services-basement:11.0.1 // Рекомендуется
  • google.android.gms:play-services-location:11.0.1 // Рекомендуется

Сокращение числа методов

Добавление Vungle Android SDK v6 в ваш проект добавит примерно 750 основных методов Vungle, не считая транзитивных зависимостей. Ожидается, что полная интеграция, включающая сторонние библиотеки, позволит добавить в среднем менее 4000 методов. Рассмотрите следующие предложения, чтобы уменьшить общее количество методов, добавленных в ваш проект.

  • ProGuard. Вы можете включить ProGuard для сокращения кода проекта. Он будет удалять все неиспользуемые классы во время компиляции, чтобы максимально снизить суммарное число методов. Вы можете включить его, указав minifyEnabled true в build.gradle для соответствующего типа сборки и предоставив правила для сохранения классов, необходимых вашему проекту.

  • Multidex. Если общее количество методов по-прежнему превышает 65 000 (65K), Google предлагает только одно решение — включить multiDex. Вам нужно только один раз настроить проект на 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.**

Замечание о потоке пользовательского интерфейса

Обратные вызовы выполняются в фоновом потоке, поэтому любые взаимодействия или обновления пользовательского интерфейса, вызванные обратным вызовом события, должны быть переданы в основной поток пользовательского интерфейса перед выполнением. Два стандартных способа выполнения кода в потоке пользовательского интерфейса:

Параметры конфигурации рекламы

Конфигурация рекламы

У вас есть возможность настроить отдельные рекламные объявления, которые вы воспроизводите, предоставляя новый объект adConfig для playAd. AdConfig является объектом и может иметь значение null, в случае чего реклама будет воспроизводиться с настройками по умолчанию; также он может иметь значение, отличное от null, с переопределениями метода задания AdConfig. Ниже приведен пример использования 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

принимает значение целого числа, которое больше или равно 0, которое указывает время в секундах, после которого реклама Flex-View закрывается автоматически

setImmersiveMode

true, если для устройств KitKat+ будет включен режим комфортного просмотра, иначе false

setAutoRotate

true, если видеореклама должна вращаться автоматически, false, чтобы следовать ориентации видеорекламы

setMuted

true, если видео должно запускаться с настройками звука, соответствующими настройкам вашего вложенного приложения, false, если оно должно запускаться без звука

setOrdinal

Принимает значение целого числа порядкового счета для отслеживания количества рекламных объявлений, которые были воспроизведены за один сеанс

setTransitionAnimationEnabled

true, если анимация перехода видео должна быть включена, false, если она должна быть выключена

Вы можете использовать один и тот же объект AdConfig для нескольких идентификаторов размещения рекламных объявлений, которые вы воспроизводите.

Дополнительная конфигурация рекламы с вознаграждением

Вы можете использовать объект Vungle для установки параметров видео с вознаграждением.

Параметр

Описание

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

Когда пользователь попытается закрыть видео с вознаграждением, появится всплывающее окно для подтверждения намерений пользователя. Вы можете настроить всплывающее окно с помощью этого параметра. Используйте значение null, если не хотите изменять значение по умолчанию; например, если вы хотите изменить только идентификатор пользователя.

Установите следующую конфигурацию рекламы с вознаграждением:

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

Список допустимых размещений

Вспомогательный метод, который возвращает коллекцию строк, содержащую все допустимые идентификаторы размещений для текущего сеанса.

public static Collection getValidPlacements()

Рекомендованные инструкции по реализации GDPR

Чтобы использовать API Vungle для обновления или запроса статуса согласия пользователя (как рекомендовано в Варианте 1 в разделе GDPR: рекомендации по реализации Vungle), используйте следующие функции:

 // 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 или выше. Этот параметр должен быть включен, чтобы SDK правильно отображал рекламу с динамическим шаблоном и Native Flex. Убедитесь, что этот параметр имеет значение 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
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 1 из 2
Еще есть вопросы? Отправить запрос

Комментарии