Общие сведения
Vungle Banner в настоящее время находится на стадии бета-тестирования. Чтобы гарантировать успешный запуск, запросите доступ непосредственно у своего персонального менеджера.
Vungle поддреживает баннерную рекламу, начиная с SDK Vungle версии 6.5.1. Реклама MREC и баннерная реклама требует API версии 16 или выше.
Как и реклама MREC, баннерные рекламные ролики являются прямоугольными окнами, которые могут быть расположены в любом месте приложения, обычно вверху или внизу экрана, позволяя пользователю продолжать взаимодействовать с приложением, пока воспроизводится реклама. Размер контейнера баннера может быть 320x50, 300x50 или 728x90 (для планшетов).
Размер баннера | Размеры |
|
320x50 |
|
300x50 |
|
728x90 (для планшетов) |
Шаг 1. Выполните общую интеграцию
Для выполнения интеграции баннерной рекламы в свое приложение для Android или Amazon начните с выполнения инструкций из статьи об общей интеграции. Настоящая статья содержит дополнительную информацию, и подразумевается, что общая интеграция уже выполнена.
Шаг 2. Реализация прослушивателей событий
Вы можете использовать универсальные обратные вызовы путем реализации LoadAdCallback
для событий загрузки рекламы и PlayAdCallback
для событий воспроизведения рекламы или можете использовать встроенные обратные вызовы при вызове loadAd
и playAd
.
Реализация LoadAdCallback
private final LoadAdCallback vungleLoadAdCallback = new LoadAdCallback() {
@Override
public void onAdLoad(String id) {
// Ad has been successfully loaded for the placement
}
@Override
public void onError(String id, VungleException exception) {
// Ad has failed to load for the placement
}
};
// 6.4.x & below
private final LoadAdCallback vungleLoadAdCallback = new LoadAdCallback() {
@Override
public void onAdLoad(String id) {
// Ad has been successfully loaded for the placement
}
@Override
public void onError(String id, Throwable throwable) {
// Ad has failed to load for the placement
}
};
Переопределяемые методы | Описание |
---|---|
onAdLoad(String id) |
Вызывается, когда реклама успешно загружена и должна быть воспроизведена для размещения |
onError(String id) |
Вызывается, когда при попытке воспроизведения рекламы возникает ошибка. Вы можете просмотреть сообщение об ошибке из getLocalizedMessage VungleException и использовать getExceptionCode для отладки. |
Реализация PlayAdCallback
private final PlayAdCallback vunglePlayAdCallback = new PlayAdCallback() {
@Override
public void onAdStart(String id) {
// Ad experience started
}
@Override
public void onAdEnd(String id) {
// Ad experience ended
}
@Override
public void onAdClick(String id) {
// User clicked on ad
}
@Override
public void onAdRewarded(String id) {
// User earned reward for watching an ad
}
@Override
public void onAdLeftApplication(String id) {
// User has left app during an ad experience
}
@Override
public void onError(String id, VungleException exception) {
// Ad failed to play
}
};
// 6.5.x & below
private final PlayAdCallback vunglePlayAdCallback = new PlayAdCallback() {
@Override
public void onAdStart(String placementReferenceId) {
// Ad experience started
}
// Deprecated
@Override
public void onAdEnd(String placementReferenceId, boolean completed, boolean isCTAClicked) {
// Invoked when the ad experience is completed
// isCTAClicked flag indicates whether CTA download button has been triggered
// completed flag will indicate whether user has watched 80% of video or longer.
}
@Override
public void onError(String placementReferenceId, VungleException exception) {
// Ad failed to play
}
};
Переопределяемые методы | Описание |
---|---|
onAdStart(String id) |
Вызывается при успешном запуске и отображении рекламы на устройстве. |
onAdEnd(String id) |
Вызывается после завершения показа рекламы, непосредственно перед возвращением управления основному приложению. |
onAdClick(String id) |
Вызывается, когда пользователь нажимает на видеорекламу или кнопку загрузки. |
onAdRewarded(String id) |
Вызывается, когда пользователь просмотрел 80% видео с вознаграждением и должен его получить. Здесь должно происходить вознаграждение пользователя, и оно будет активироваться только для размещения с вознаграждением. |
onAdLeftApplication(String id) |
Вызывается, когда пользователь выходит из приложения до завершения показа рекламы, например при открытии страницы магазина в рекламе. |
onAdError(String id, VungleException exception) |
Вызывается, когда при попытке воспроизведения рекламы возникает ошибка. Вы можете просмотреть сообщение об ошибке из getLocalizedMessage VungleException и использовать getExceptionCode для отладки. |
Шаг 3. Загрузка, отображение и закрытие баннерной рекламы
Загрузка баннерной рекламы
Загрузка баннерной рекламы выполняется иначе, чем в других форматах рекламы. Для загрузки, воспроизведения и проверки наличия рекламы используется специальный API Banners
. Вы должны указать размер баннера, который нужно загрузить, а SDK будет автоматически обновлять его через промежутки времени, заданные на панели инструментов. Вы также должны настроить размещение для поддержки канала баннеров, поэтому обратитесь к своему персональному менеджеру Vungle, чтобы включить баннерную рекламу для размещения.
- Загрузите баннерную рекламу, вызвав метод
loadBanner
:Banners.loadBanner("BANNER_ID", AdConfig.AdSize.BANNER, vungleLoadAdCallback);
- Проверьте наличие баннерной рекламы, вызвав метод
canPlayAd
:Banners.canPlayAd(ad.placementReferenceId, AdConfig.AdSize.BANNER);
Отображение баннерной рекламы
Так как размер окна просмотра фиксированный, необходимо указать контейнер, используемый для отображения баннерной рекламы, который должен иметь один из поддерживаемых размеров: 320x50, 300x50 или 728x90 (для планшетов). Окно просмотра можно разместить в любом месте экрана. Этот контейнер — это LayOut
. Его размер должен быть равен размеру используемого вами баннера или больше. Вы можете разместить данный LayOut
в любом месте экрана. Затем вы должны передать размер используемого вами баннера через API Banners
.
Передайте этот объект при вызове Banners.loadBanner
, чтобы указать отображаемый размер, и используйте Banners.getBanner
, чтобы получить рекламный объект Banners
. В конце вызовите метод addView
, чтобы связать контейнер с баннерной рекламой.
private RelativeLayout bannerContainer = findViewById(...);
// Check for banner ad availability and display
if (Banners.canPlayAd("BANNER_ID", AdConfig.AdSize.BANNER)) {
VungleBanner vungleBanner = Banners.getBanner("BANNER_ID", AdConfig.AdSize.BANNER, vunglePlayAdCallback);
bannerContainer.addView(vungleBanner);
}
Закрытие баннерной рекламы
Поскольку окно просмотра баннерной рекламы добавлено в окно просмотра вашего контейнера, его также необходимо удалить на случай выхода окна просмотра рекламы за пределы экрана, удаления действия или фрагмента или перезапуска или удаления родительского контейнера окна просмотра. При попытке воспроизведения другой баннерной рекламы, не закрыв предыдущую, вы можете столкнуться с неожиданным поведением своего приложения.
vungleBanner.destroyAd();
Шаг 4. Использование API VungleBanner
для расширенного управления (необязательно)
В большинстве случаев описанной выше интеграции достаточно, и VungleBanner
является управляемым. Однако, если окно просмотра VungleBanner
находится внутри списка или RecyclerView
, управляемый VungleBanner
будет работать неправильно. Если пользователь прокрутит рекламу за пределы экрана и назад, она закончится и исчезнет. Для таких случаев мы предоставляем расширенный API для более точного контроля VungleBanner
.
VungleBanner
API класса
Эти API предоставляют разработчикам точный контроль VungleBanner
при различных событиях жизненного цикла в приложении разработчика. В большинстве случаев использования разработчикам не нужно вызывать эти методы. Достаточно просто добавить VungleBanner
в родительское окно просмотра.
Однако в редких случаях может либо произойти перезапуск окна просмотра (например, RecyclerView
, ListView
и пр.), либо нам понадобится контролировать видимость вручную (в некоторых старых устройствах Android WebView
не приостанавливается автоматически при выходе за пределы экрана).
Имя | Функция | Примечания |
disableLifeCycleManagement(boolean disabled) |
Вызывается для отключения автоматического управления баннером | Чтобы renderAd и setAdVisibility работали, необходимо установить значение true |
renderAd* |
Отображает рекламу, если ее не видно | Также может загружать новую рекламу |
setAdVisibility* |
Сообщает контейнеру окна просмотра, когда баннер виден на экране | Приостанавливает и возобновляет воспроизведение баннера |
destroyAd |
Отправляет вызов на удаление, когда баннер больше не требуется; контейнер окна просмотра больше не используется | Освобождает ресурсы баннера |
finishAd* |
Останавливает текущую рекламу, отправляет отчет и разрешает после этого загрузку следующей рекламы (применимо только для определенной интеграции в RecyclerView или ListView) | Освобождает ресурсы баннера |
*Прежде чем использовать этот API, вы должны вызвать vungleBannerAd.disableLifeCycleManagement(true)
.
Управляемые и неуправляемые окна просмотра VungleBanner
При получении VungleBanner
оно по умолчанию является управляемым окном просмотра VungleBanner
. Это означает, что в момент добавления этого окна просмотра в родительский контейнер, Vungle контролирует время отображения рекламы, ее удаления и время отправления отчета. Также контролируются события видимости, и разработчикам не требуется уведомлять SDK, находится ли объект просмотра баннера на экране. В случаях, когда у разработчика нет окна просмотра VungleBanner
внутри перезапускаемого окна просмотра или шаблона ViewHolder
, этот способ использования VungleBanner
предпочтительный.
Когда окно просмотра VungleBanner
находится внутри ListView
или RecyclerView
, управляемый VungleBanner
будет работать неправильно. В момент, когда пользователь прокрутит рекламу за пределы экрана и назад, она закончится и исчезнет.
Для таких случаев мы добавили API disableLifeCycleManagement(boolean disable)
, чтобы разработчики могли управлять жизненным циклом VungleBanner
вручную.
Прежде чем добавить VungleBanner
в окно просмотра или привязать окно просмотра при установке:
vungleBannerAd.disableLifeCycleManagement(boolean disabled)
Необходимо вызвать:
-
VungleBanner.renderAd()
— когда окно просмотра привязано -
VungleBanner.setAdVisibility(true|false)
— когда реклама перезапускается или больше не отображается -
VungleBanner.destroyAd()
— когда объектVungleBanner
больше не требуется
Шаг 5. Настройка баннерной рекламы (необязательно)
Вы можете настроить отдельные воспроизводимые вами рекламные ролики, указав в playAd
новый объект adConfig
. Когда объект AdConfig
имеет неопределенное значение, реклама воспроизводится с параметрами конфигурации по умолчанию; если значение определено, его настройки переопределяют настройки установщика AdConfig
. Ниже приводится пример использования AdConfig
:
Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);
В приведенном выше примере используется объект adConfig
, который содержит настраиваемые параметры конфигурации. Настройте объект AdConfig
следующим образом:
AdConfig adConfig = new AdConfig();
adConfig.setAdOrientation(AdConfig.AUTO_ROTATE);
adConfig.setMuted(true);
Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);
В таблице ниже перечислены доступные параметры AdConfig
баннерной рекламы:
Параметр | Описание |
|
"false", если видео должно начинаться с настройками звука, соответствующими настройкам вашего внешнего приложения; "true", если видео всегда должно начинаться без звука |
|
принимает целое значение порядкового номера для отслеживания количества рекламных роликов, воспроизведенных за один сеанс |
Примечание. Вы можете использовать один и тот же объект AdConfig
для нескольких рекламных роликов.
Рекомендации
- Прежде чем пытаться показать баннерную рекламу, всегда проверяйте, завершено ли родительское действие, перед привязкой
VungleBanner
к окну просмотра.if (activity != null && activity.isFinishing()) { return; }
- Не изменяйте
LayoutParams
VungleBanner
. Это может негативно повлиять на отображение баннера, и вашу рекламу может быть не видно. - Не помещайте рекламу в контейнер размером меньше запрашиваемой рекламы. Если вы запрашиваете стандартный баннер (320x50), убедитесь, что размер родительского контейнера составляет не менее 320dp x 50dp.