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

Начните с выполнения инструкций из статьи об общей интеграции, а затем инструкций для каждого формата рекламы, который вы хотите интегрировать (реклама внутри передачи или реклама с вознаграждением, баннерная реклама, реклама MREC). Настоящая статья содержит дополнительную информацию, и подразумевается, что общая интеграция уже выполнена.

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

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

  • Вариант 1 (рекомендуется): Издатель контролирует процесс согласия с Общим регламентщм по защите данных (GDPR) на уровне пользователя, а затем сообщает о выборе пользователя Vungle. Для этого разработчики могут собирать данные о согласии пользователя, используя свой собственный механизм, а затем использовать API Vungle для обновления или запроса статуса согласия пользователя. Для получения дополнительной информации обратитесь к примеру кода, указанному ниже.
  • Вариант 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();

Соблюдение требований Закона штата Калифорния о защите персональных данных потребителей (CCPA)

С 1 июля 2020 г. вступит в силу Закон штата Калифорния о защите персональных данных потребителей (CCPA), и для соблюдения требований этого закона издатели должны будут выполнить обновление до SDK Android 6.7.0.

Метод 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();

Ограничение использования идентификатора устройства

Начиная с SDK Vungle для Android версии 6.4.11, вы можете ограничивать передачу используемого идентификатора Android, когда рекламный идентификатор Google недоступен.

// 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

Добавление служб Google Play в ваш проект необязательно, но рекомендуется. Это позволяет Vungle показывать конечным пользователям более персонализированную рекламу. Мы рекомендуем добавить API basement и ads-identifier, а также использовать версию служб Google Play v11.0.1 или выше.

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

  • google.android.gms:play-services-basement:16.0.0 (Рекомендуется)
  • google.android.gms:play-services-ads-identifier:16.0.0 (Требуется для AAID)

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

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

  • ProGuard: Вы можете включить функцию ProGuard, чтобы уменьшить размер кода проекта. Во время компиляции она удалит все неиспользуемые классы, чтобы общее количество методов было как можно меньше. Вы можете включить ее, задав minifyEnabled значение true в build.gradle для соответствующего типа сборки и указав правила для сохранения классов, необходимых для вашего проекта.
  • MultiDex: Если у вас все еще больше 65 000 методов, включение MultiDex может быть единственным решением, предлагаемым компанией Google. Вам необходимо настроить свой проект для использования MultiDex только один раз, но это повлияет на сборку и время запуска приложения.

ProGuard

Если вы используете 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

Установка минимального дискового пространства

В SDK Vungle версии v6.4.11 была введена конфигурация минимального дискового пространства для определения доступного пространства на устройстве пользователя до инициализации SDK Vungle и загрузки рекламы. Значение по умолчанию для setMinimumSpaceForInit составляет 51 МБ, а для setMinimumSpaceForAd — 50 МБ. Размер вводится в байтах.

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 или выше. Этот параметр должен быть включен, чтобы SDK правильно отображал рекламу с динамическим шаблоном и в формате MREC. Убедитесь, что на уровне приложения вашего проекта для этого параметра установлено значение "true":

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

Получение номера версии SDK

Для программного получения номера версии SDK в среде выполнения (полезно при внутреннем посредничестве), Vungle предоставляет следующую строку:

com.vungle.warren.BuildConfig.VERSION_NAME

Коды исключений для отладки

В InitCallback, PlayAdCallback и LoadAdCallback будет код VungleException в случае срабатывания обратного вызова onError. Вы можете использовать код для отладки или предпринять действия для программного исправления проблемы.

if (exception.getExceptionCode() == VungleException.VUNGLE_NOT_INTIALIZED) {
  // Call routine to initialize SDK
}
Код исключения Описание
CONFIGURATION_ERROR Произошла ошибка конфигурации. Проверьте свой идентификатор приложения и контрольные идентификаторы размещения и повторите попытку, когда будет доступно подключение к сети.
NO_SERVE Рекламный сервер не обнаружил рекламы для вашего текущего предложения. Повторите попытку позже. Это исключение является ожидаемым поведением.
UNKNOWN_ERROR Произошла неизвестная ошибка. Это исключение должно происходить редко.
AD_EXPIRED Срок хранения рекламы в кэше истек, и ее воспроизведение больше невозможно. Загрузите другую рекламу.
MISSING_REQUIRED_ARGUMENTS_FOR_INIT Убедитесь, что указаны все параметры для Vungle.init(), которые помечены как NonNull, поскольку они необходимы для работы SDK.
APPLICATION_CONTEXT_REQUIRED Предоставьте Context приложения, чтобы наш SDK мог и дальше поддерживать наш API по завершении жизненного цикла Activity.
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 повторит этот запрос.

Настройка автоматического резервного копирования для интеграции JAR

Параметр "разрешить резервное копирование" включен по умолчанию для вашего приложения с API версии 23 или выше. Правило резервного копирования обеспечивает резервное копирование всех данных приложения для правильной работы SDK Vungle и самого приложения. Если вы не отключили параметр "Разрешить резервное копирование" или указали собственные правила резервного копирования, необходимо предоставить дополнительные правила XML для определения файлов в нашей файловой системе SDK, которые должны быть исключены из автоматического резервного копирования.

Правила исключения Vungle

<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>

Интеграция Gradle с применением правил резервного копирования разработчика

  1. Добавьте правила исключения Vungle SDK в существующий файл XML, в котором содержатся правила исключения вашего приложения.
  2. Настройте замену fullBackupContent на уровне приложения и добавьте правило исключения SDK Vungle в существующий файл XML.

Интеграция JAR с применением правил резервного копирования разработчика

  1. Создайте новый файл XML с правилами исключения Vungle.
  2. Поместите файл XML в папку res/xml.
  3. Добавьте fullBackupContent в тег приложения AndroidManifest.xml с именем файла XML, который вы создали перед этим.
    <application
        android:fullBackupContent="@xml/vungle_backup_rule">

Отключение резервного копирования

Если для вашего приложения резервное копирование не требуется, вы можете просто отключить его в теге приложения:

<application 
    android:allowBackup="false" >

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

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

public static Collection getValidPlacements()

Questions?

Need further assistance, feel free to reach out to us, we’re here to help!

Была ли эта статья полезной?