IMA SDKs make it easy to integrate multimedia ads into your websites and apps. IMA SDKs can request ads from any VAST-compliant ad server and manage ad playback in your apps. With IMA DAI SDKs, apps make a stream request for ad and content video—either VOD or live content. The SDK then returns a combined video stream, so that you don't have to manage switching between ad and content video within your app.
Выберите интересующее вас решение DAI.
Полный спектр услуг DAI
В этом руководстве показано, как интегрировать SDK IMA DAI в простое приложение видеоплеера. Если вы хотите посмотреть или пройтись по готовому примеру интеграции, скачайте BasicExample с GitHub.
Обзор IMA DAI
Реализация IMA DAI включает в себя четыре основных компонента SDK, как показано в этом руководстве:
-
StreamDisplayContainer: объект-контейнер, который располагается поверх элемента воспроизведения видео и содержит элементы пользовательского интерфейса рекламы. -
AdsLoader: Объект, который запрашивает потоки и обрабатывает события, запускаемые объектами запроса и ответа потока. Следует создавать только один экземпляр AdsLoader, который можно использовать повторно на протяжении всего жизненного цикла приложения. -
StreamRequest: An object that defines a stream request. Stream requests can either be for video-on-demand or live streams. Live stream requests specify an asset key, while VOD requests specify a CMS ID and video ID. Both request types can optionally include an API key needed to access specified streams, and a Google Ad Manager network code for the IMA SDK to handle ads identifiers as specified in Google Ad Manager settings. -
StreamManager: Объект, обрабатывающий потоки динамической вставки рекламы и взаимодействие с бэкэндом DAI. Менеджер потоков также обрабатывает запросы отслеживания и пересылает события потока и рекламы издателю.
Предварительные требования
- Android Studio
- Пример приложения видеоплеера для интеграции с SDK.
Загрузите и запустите демонстрационное приложение видеоплеера.
В демонстрационном приложении представлен работающий видеоплеер, воспроизводящий видео в формате HLS. Используйте его в качестве отправной точки для интеграции возможностей DAI из SDK IMA DAI.
Скачайте и распакуйте демонстрационный пример приложения видеоплеера .
Запустите Android Studio и выберите «Открыть существующий проект Android Studio» , или, если Android Studio уже запущена, выберите «Файл» > «Новый» > «Импорт проекта» . Затем выберите
SampleVideoPlayer/build.gradle.Для синхронизации Gradle выберите Инструменты > Android > Синхронизировать проект с файлами Gradle .
Убедитесь, что приложение плеера скомпилировано и запущено на физическом устройстве Android или виртуальном устройстве Android, используя команду «Запуск» > «Запустить приложение» . Загрузка видеопотока перед воспроизведением — это нормальное явление.
Изучите пример видеоплеера.
В примере видеоплеера пока отсутствует код интеграции с IMA DAI SDK. Пример приложения состоит из двух основных частей:
samplevideoplayer/SampleVideoPlayer.java: HLS-плеер на основе ExoPlayer , служащий основой для интеграции IMA DAI.videoplayerapp/MyActivity.java: Эта активность создает видеоплеер и передает емуContextиmedia3.ui.PlayerView.
Добавьте SDK IMA DAI в приложение проигрывателя.
You must also include a reference to the IMA DAI SDK. In Android Studio, add the following to your application-level build.gradle file, located at app/build.gradle . The IMA SDK requires library desugaring enabled, which you must do by setting coreLibraryDesugaringEnabled true and adding 'com.android.tools:desugar_jdk_libs' as a dependency in the build.gradle file. For details, see Java 11+ APIs available through desugaring with the nio specification .
Интегрируйте SDK IMA DAI.
Создайте новый класс с именем
SampleAdsWrapperв пакетеvideoplayerapp(вapp/java/com.google.ads.interactivemedia.v3.samples/videoplayerapp/), чтобы обернуть существующий классSampleVideoPlayerи добавить логику, реализующую интерфейс IMA DAI. Для этого необходимо сначала создать классAdsLoader, который будет использоваться для запроса потока DAI.Этот фрагмент кода содержит примеры параметров для потоков HLS и DASH, прямых трансляций и видео по запросу. Чтобы указать, какой поток воспроизводится, обновите переменную
CONTENT_TYPE.Создайте вспомогательный метод
createSampleVideoPlayerCallback()для обработки создания экземпляра интерфейсаSampleVideoPlayerCallback, который наследуетVideoStreamPlayer.VideoStreamPlayerCallback.Для работы с DAI плеер должен передавать события ID3 в SDK IMA DAI. Это делает метод
callback.onUserTextReceived(), как показано в следующем примере кода.Добавьте метод
buildStreamRequest()для создания объектаSteamRequest. Этот метод переключается между различными потоками в зависимости от того, как вы задали переменнуюCONTENT_TYPE. По умолчанию в этом руководстве используется поток VOD HLS от IMA.Для воспроизведения потока вам также потребуется класс
VideoStreamPlayer, поэтому добавьте методcreateVideoStreamPlayer(), который создаст анонимный класс, реализующий интерфейсVideoStreamPlayer.Реализуйте необходимые обработчики событий и добавьте поддержку обработки ошибок.
Обратите внимание на реализацию
AdErrorListener, поскольку она вызывает резервный URL-адрес, если воспроизведение рекламы не удается. Поскольку контент и реклама находятся в одном потоке, вы должны быть готовы вызвать резервный поток, если в потоке DAI возникнет ошибка.Добавьте код для логирования.
Измените
MyActivityвvideoplayerapp, чтобы он создавал экземплярSampleAdsWrapperи вызывал его. Также, используя вспомогательный метод, вызовите методImaSdkFactory.initialize()для создания экземпляра классаImaSdkSettings.Добавьте вспомогательный метод
getImaSdkSettings()для создания экземпляраImaSdkSettings.Измените файл разметки
activity_my.xml, добавив элементы пользовательского интерфейса для ведения журнала.
Поздравляем! Теперь вы запрашиваете и отображаете видеорекламу в своем Android-приложении. Для более точной настройки см. разделы «Закладки» , «Snapback» и документацию по API .
Поиск неисправностей
Если у вас возникли проблемы с воспроизведением видеорекламы, попробуйте загрузить готовый BasicExample . Если в BasicExample все работает корректно, то, скорее всего, проблема в коде интеграции IMA вашего приложения.
Если проблемы сохраняются, посетите форум IMA SDK .