Начните с выполнения инструкций из статьи об общей интеграции, а затем инструкций для каждого формата рекламы, который вы хотите интегрировать (реклама внутри передачи или реклама с вознаграждением, баннерная реклама, реклама MREC). Настоящая статья содержит дополнительную информацию, и подразумевается, что общая интеграция уже выполнена.
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();
С 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 в ваш проект необязательно, но рекомендуется. Это позволяет 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:
# 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 в среде выполнения (полезно при внутреннем посредничестве), 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 повторит этот запрос. |
Параметр "разрешить резервное копирование" включен по умолчанию для вашего приложения с API версии 23 или выше. Правило резервного копирования обеспечивает резервное копирование всех данных приложения для правильной работы SDK Vungle и самого приложения. Если вы не отключили параметр "Разрешить резервное копирование" или указали собственные правила резервного копирования, необходимо предоставить дополнительные правила XML для определения файлов в нашей файловой системе SDK, которые должны быть исключены из автоматического резервного копирования.
<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 SDK в существующий файл XML, в котором содержатся правила исключения вашего приложения.
- Настройте замену
fullBackupContent
на уровне приложения и добавьте правило исключения SDK Vungle в существующий файл XML.
- Создайте новый файл XML с правилами исключения Vungle.
- Поместите файл XML в папку
res/xml
. - Добавьте
fullBackupContent
в тег приложенияAndroidManifest.xml
с именем файла XML, который вы создали перед этим.<application android:fullBackupContent="@xml/vungle_backup_rule">
Если для вашего приложения резервное копирование не требуется, вы можете просто отключить его в теге приложения:
<application
android:allowBackup="false" >