Начало работы с пакетом Vungle SDK 5 для Android

Содержание

Требования

  • Android 3.0 (Honeycomb — API версии 11) или более поздней версии
  • Java 1.7 — для совместимости с Android 5.+ требуется наличие JDK 7
  • Java 1.8 — для совместимости с Android 7.+ требуется наличие JDK 8

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

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

Вариант 1. Добавление Vungle SDK в формате AAR через Maven

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

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

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

dependencies {
	…
	compile 'com.github.vungle:vungle-android-sdk:5.1.0'
	…
}

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

Вариант 2. Скачивание Vungle SDK и добавление в приложение

Скачайте пакет Vungle SDK и добавьте в библиотеку проекта.

image2.png

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

allprojects {
    repositories {
        jcenter()
    }
}

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

android{
...
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
...
}

dependencies {
    …
    compile 'com.squareup.retrofit2:converter-gson:2.2.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.2.0'
    compile 'com.google.android.gms:play-services-basement:11.4.0'  //use version 11.0.1 and up only
    compile 'com.google.android.gms:play-services-location:11.4.0'  //use version 11.0.1 and up only
    compile files('libs/dagger-2.7.jar')
    compile files('libs/javax.inject-1.jar')
    compile files('libs/eventbus-2.2.1.jar')
    compile files('libs/publisher-sdk-android-5.3.0.jar')
    compile files('libs/rxjava-1.2.0.jar')
    … 
}

Если вы добавляете Vungle SDK вручную, перейдите к разделу Шаг 2. Обновление AndroidManifest.xml.

Шаг 2. Обновление AndroidManifest.xml

Добавьте в файл AndroidManifest.xml следующие строки, назначающие имя элемента приложения имени класса приложения для multidex:

<!-- permissions to download and cache video ads for playback --> 
<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.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
    android:name=”.(YourApplicationName)”
    ...
<activity android:name=“com.vungle.publisher.VideoFullScreenAdActivity”
android:configChanges=“keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize”
android:theme=“@android:style/Theme.NoTitleBar.Fullscreen”/>

<activity android:name=“com.vungle.publisher.MraidFullScreenAdActivity”
android:configChanges=“keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize”
android:theme=“@android:style/Theme.Translucent.NoTitleBar.Fullscreen”/>

<activity android:name=“com.vungle.publisher.FlexViewAdActivity”
android:configChanges=“keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize”
android:theme=“@android:style/Theme.Translucent.NoTitleBar.Fullscreen”/>
>

Шаг 3. Инициализация Vungle SDK

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

Запуск приложения

Инициализируйте пакет Vungle Publisher SDK в первом классе Activity приложения, используя идентификаторы активных размещений, которые будете использовать в приложении. Пакет SDK будет инициализироваться асинхронно и направит обратный вызов в VungleInitListener, указанный в init.

public class FirstActivity extends android.app.Activity {

  // получение экземпляра VunglePub
  final VunglePub vunglePub = VunglePub.getInstance();

  // получение идентификатора с основной страницы приложения на панели управления Vungle после настройки приложения
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

       // инициализация Publisher SDK с идентификатором приложения, списком идентификаторов размещений и обработчиком обратного вызова init
  	vunglePub.init(this, app_id, new String[] { placementID1, placementID2, placementID3 }, new VungleInitListener() {

            @Override
            public void onSuccess() {
            }
            @Override
            public void onFailure(Throwable e){

            }
        });

Каждый класс Activity

Кроме того, переопределите методы onPause и onResume в каждом классе Activity (включая первый), чтобы пакет Vungle SDK для Android надлежащим образом обновлялся при получении или потере фокуса приложением.

public class EachActivity extends android.app.Activity {

  // get the VunglePub instance
  final VunglePub vunglePub = VunglePub.getInstance();
  ...
  @Override
  protected void onPause() {
      super.onPause();
      vunglePub.onPause();
  }

  @Override
  protected void onResume() {
      super.onResume();
      vunglePub.onResume();
  }
}

Шаг 4. Настройка прослушивателей

Пакет Vungle SDK формирует несколько событий, которыми можно управлять программно путем реализации классов VungleAdEventListener и регистрации их с помощью clearAndSetEventListeners. Помните, что во избежание утечек памяти следует удалить eventListener, если он больше не используется.

vunglePub.clearAndSetEventListeners(vungleDefaultListener, vungleSecondListener);

Шаг 5. Загрузка и воспроизведение рекламы

После успешной инициализации пакета Vungle SDK вы можете загрузить свое размещение и воспроизводить рекламу по готовности. Если вы указали прослушиватель VungleAdEventListener, он будет уведомлять о готовности рекламы к воспроизведению с помощью обратного вызова onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable).

public class GameActivity extends android.app.Activity {

  // получение экземпляра VunglePub
  final VunglePub vunglePub = VunglePub.getInstance();
  final String placementIdForLevel = “your placement reference id”;
final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); private void onLevelStart() { vunglePub.loadAd(placementIdForLevel); } private void onLevelComplete() { if (vunglePub.isAdPlayable(placementIdForLevel)) { vunglePub.playAd(placementIdForLevel, globalAdConfig); } } }

Учитывайте, что для размещения с автоматическим кэшированием вам не нужно вызывать loadAd, поскольку пакет SDK будет автоматически загружать рекламу после инициализации. Рекомендуем выбирать для автоматического кэширования самое часто просматриваемое размещение.

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

Примечание. Режим тестирования пока не поддерживается в SDK v.5.1.

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

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

Включение сервисов Google Play в ваш проект позволяет Vungle обеспечить более органичное взаимодействие пользователя с рекламным объявлением, но не является обязательным. Мы рекомендуем использовать версию 8.4.0 или более позднюю.

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

  • google.android.gms:play-services-location:11.0.1
  • google.android.gms:play-services-ads:11.0.1
  • Для play-services 7.8.0 и более ранних версий: сохраните библиотеку поддержки
  • Для play-services 8.4.0 и более поздних версий: библиотека поддержки не требуется

Мы успешно скомпилировали автономный пакет SDK для компиляции со следующими версиями сервисов Google Play: 7.8.0, 8.4.0, 9.8.0, 10.2.4, 11.0.1.

65K — ограничение метода Dalvik

При добавлении Vungle Android SDK 5.1.0 в проект добавляется 6 557 методов, не считая других обязательных зависимостей. Это текущее ограничение, и мы должны как-то сократить количество методов в проекте. Ознакомьтесь с некоторыми предложениями по сокращению общего количества методов, добавляемых в проект.

  • Выборочная компиляция сборки. Пакет SDK для сервисов Google Play (GPS) включает около 20 000 методов. Если в проекте используются GPS, есть возможность выборочной компиляции пакета GPS SDK, необходимого проекту.
    • com.google.android.gms:play-services-location:11.0.1
    • com.google.android.gms:play-services-ads:11.0.1

  • ProGuard. Можно использовать ProGuard для сокращения кода проекта. Во время компиляции все неиспользуемые классы будут исключены для максимально возможного сокращения общего количества методов. Чтобы использовать эту возможность, укажите midifyEnabled true в файле build.gradle для соответствующего типа сборки и определите правила сохранения классов, необходимых проекту. 

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

Proguard

При использовании Proguard добавьте в файл конфигурации ProGuard следующие правила:

# Vungle
-dontwarn com.vungle.**
-dontnote com.vungle.**
-keep class com.vungle.** { *; }
-keep class javax.inject.*

# GreenRobot
-dontwarn de.greenrobot.event.util.**

# RxJava
-dontwarn rx.internal.util.unsafe.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
   long producerIndex;
   long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
   rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
   rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
-keep class rx.schedulers.Schedulers { public static ; }
-keep class rx.schedulers.ImmediateScheduler { public ; }
-keep class rx.schedulers.TestScheduler { public ; }
-keep class rx.schedulers.Schedulers { public static ** test(); }

# MOAT
-dontwarn com.moat.**
-keep class com.moat.** { public protected private *; }

# Retrofit
-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8

Интерфейс EventListener

Ниже перечислены доступные методы управления VungleAdEventListener.

Метод

Описание

clearAndSetEventListeners(VungleEventListener..)

Очищает зарегистрированные прослушиватели событий EventListener, затем добавляет входные прослушиватели событий eventListener.

clearEventListeners( )

Очищает все объекты EventListener.

removeEventListeners(VungleEventListener..)

Удаляет входные EventListener.

addEventListeners(VungleEventListener..)

Добавляет входные объекты EventListener.

API делегирования вызовов для VungleAdEventListener:

public class FirstActivity extends android.app.Activity {
  ...

  private final VungleAdEventListener vungleListener = new VungleAdEventListener(){

    @Override
   public void onAdEnd(String placementReferenceId, boolean wasSuccessfulView, boolean wasCallToActionClicked) {
        // Вызывается, когда пользователь закрывает объявление, и управление возвращается в приложение        
        // если для wasSuccessfulView задано true, пользователь, просмотревший объявление, должен получить вознаграждение       
        // (если это было объявление с вознаграждением).
        // если для wasCallToActionClicked задано true, пользователь щелкнул кнопку призыва к действию
        // в объявлении.    
      }

    @Override
    public void onAdStart(String placemetReferenceId) {
        // Вызывается перед воспроизведением объявления
    }

    @Override
    public void onUnableToPlayAd(String placementReferenceId, String reason) {
        // Вызывается после того, как playAd(placementId, adConfig) не удалось воспроизвести объявление       
     }

    @Override
  public void onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) {
        // Уведомляет о доступности объявления для указанного размещения
  // Здесь могут быть дубликаты уведомлений
    }
  };

  @Override
  public void onCreate(Bundle savedInstanceState) {
      ...

      vunglePub.init(this, app_id, placement_id_list, initCallback);
      vunglePub.clearAndSetEventListeners(vungleListener);

  };

 @Override
  public void onDestroy() {
      ...
      vunglePub.clearEventListeners();
      super.onDestroy();

  };
}</>pre

Vungle также предоставляет VunlgeInitListner для обновления события инициализации SDK.

public void onSuccess();
public void onFailure(Throwable error);

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

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

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

Глобальная конфигурация рекламных объявлений

После вызова init необходимо также настроить глобальный объект AdConfig. По умолчанию можно использовать объект AdConfig в каждом вызове playAd. Кроме того, этот объект позволяет задавать параметры, которые будут автоматически применяться к каждому воспроизводимому рекламному объявлению.

public class FirstActivity extends android.app.Activity {
	...
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		...
		vunglePub.init(this, app_id, placement_list, new VungleInitListener() {
	 		@Override
			public void onSuccess() {
				// получение ссылки на глобальный объект AdConfig 
				final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); 
				// Полное описание доступных параметров см. в разделе «Объект Config» 
				globalAdConfig.setSoundEnabled(true);
			}
			@Override
			public void onFailure(Throwable e){

			}
		}); 
	...
	} 
}

Конфигурация отдельных объявлений

Необходимо использовать объект Adconfig при каждом вызове playAd.  Однако вы можете дополнительно настраивать каждое отдельное воспроизводимое рекламное объявление, предоставляя новый объектAdConfig для playAd. Параметры, заданные в глобальной конфигурации рекламных объявлений, будут переопределены указанными значениями. Передайте переопределение AdConfig следующим образом:

public class GameActivity extends android.app.Activity {
  …
private void onLevelComplete() {
      // создание нового объекта AdConfig
      final AdConfig overrideConfig = new AdConfig();

      overrideConfig.setSoundEnabled(false);

      // объект overrideConfig будет влиять только на это воспроизведение объявления
      vunglePub.playAd(yourPlacementId, overrideConfig);
  }
}

Объект AdConfig

Переопределение AdConfig включает набор параметров, которые можно задать для воспроизведения отдельных объявлений. Доступные параметры указаны ниже.

Метод

По умолчанию

Описание

setOrientation

Orientation.matchVideo

Orientation.autoRotate указывает, что рекламное объявление будет самостоятельно поворачиваться в зависимости от ориентации устройства.

Orientation.matchVideo указывает, что объявление будет воспроизводиться в лучшей ориентации для видео (как правило, альбомной).

setSoundEnabled

true

Задает начальное состояние звука для рекламного объявления. Если указано true, используются громкость устройства и настройки звука. Если указано false, видео начинает воспроизводиться с отключенным звуком, но пользователь может это изменить.

setBackButtonImmediatelyEnabled

false

Если указано true, пользователь может незамедлительно закрыть объявление с помощью кнопки «Назад». Если указано false, пользователь не может использовать кнопку «Назад» для выхода из объявления, пока не покажется кнопка «Закрыть» на экране.

setImmersiveMode

false

Включает или выключает режим комфортного просмотра на устройствах KitKat+

setIncentivizedUserId

нет

Указывает, что уникальный идентификатор пользователя, который передается в ваше приложение, должен подтверждать, что этот пользователь должен быть вознагражден за просмотр стимулированной рекламы. Н/Д, если объявление не является стимулированным.

setIncentivizedCancelDialogTitle

«Закрыть видео?»

Задает заголовок диалога подтверждения при пропуске стимулированной рекламы. Н/Д, если объявление не является стимулированным.

setIncentivizedCancelDialogBodyText

«Ранее закрытие этого видео не позволит вам заработать вознаграждение. Вы уверены?»

Задает текст диалога подтверждения при пропуске стимулированной рекламы. Н/Д, если объявление не является стимулированным.

setIncentivizedCancelDialogCloseButtonText

«Закрыть видео»

Задает текст «кнопки отмены» диалога подтверждения при пропуске стимулированной рекламы. Н/Д, если объявление не является стимулированным.

setIncentivizedCancelDialogKeepWatchingButtonText

«Продолжайте просмотр»

Задает текст «кнопки продолжения просмотра» диалога подтверждения при пропуске стимулированной рекламы. Н/Д, если объявление не является стимулированным.

setTransitionAnimationEnabled

false

Включает или отключает стандартную анимацию переходов фрагментов

 

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0
Еще есть вопросы? Отправить запрос

Комментарии