Плеер для iOS с видеорекламой в стандарте VAST

This post is also available in: Английский

apple-advertising
Модель монетизации, основанная на демонстрации рекламы, очень широко используется разработчиками бесплатных приложений для iOS. Для поддержки в приложениях баннерной рекламы Apple предлагает уже готовое решение. Но если в вашем приложении центральное место занимает видеоплеер, вас может заинтересовать показ видеорекламы в паузах при воспроизведении основного видеоконтента. Насколько нам известно, для этой цели пока не существует готовых бесплатных и широко используемых решений. В этой статье мы расскажем, как вы можете легко добавить функциональность показа видеорекламы в свое приложение. Для этого нужно будет подключить к рекламному серверу OpenX нашу бесплатную библиотеку iOS VAST Player.

Серверная часть нашего решения для доставки видеорекламы в приложение iOS представляет собой открытый рекламный сервер OpenX Source и плагин для него, позволяющий добавлять рекламные видеоролики. Чтобы начать работать с OpenX Source, необходимо загрузить его исходные коды, развернуть его на сервере и создать в веб-интерфейсе администрирования рекламную кампанию. О том, как это сделать, мы уже писали в предыдущих статьях:

  1. Показ рекламы в системе OpenX
  2. Создание высоконагруженной системы доставки рекламы на базе OpenX
  3. Подробнее о возможностях OpenX

Правда, существует одна особенность, о которой следует помнить и которая в этих статьях не упоминается: рекламные видеоролики должны иметь формат, подходящий для воспроизведения на мобильных устройствах Apple. Это может быть как отдельный MP4-файл, сжатый с использованием кодеков H.264 и AAC, так и плейлист для воспроизведения по технологии HTTP Live Streaming.

Клиентская часть представляет собой видеоплеер на основе фреймворка AVFoundation (см. нашу предыдущую статью Воспроизведение видео в iOS приложениях). Библиотека iOS VAST Player предоставляет iOS-разработчикам готовый класс DVIABPlayer, который расширяет функциональность стандартного компонента AVPlayer, добавляя к ней возможность загрузки VAST-шаблонов и воспроизведения видеорекламы по заранее заданному расписанию. Расписание задает время и тип воспроизведения рекламных вставок — до, после и в середине видеоролика (pre-roll, post-roll и mid-roll).

Для подключения библиотеки к своему проекту необходимо выполнить следующие действия:

  1. Добавьте к списку используемых приложением фреймворков AVFoundation и CoreMedia.
  2. Перетащите папку библиотеки в ваш проект в Xcode.
  3. Загрузите и добавьте к проекту библиотеку KissXML. Она необходима для парсинга VAST-шаблонов.

В поставку библиотеки включен пример проекта, демонстрирующий ее использование. Рассмотрим этот пример подробно. Пример состоит из одного элемента View Сontroller, содержащего вид-контейнер для слоя плеера, а также несколько информационных меток и кнопок для управления воспроизведением.

Класс DVIABPlayer используется аналогично AVPlayer: в методе viewDidLoad мы его инициализируем и связываем со слоем вида-контейнера; затем мы инициализируем и связываем с плеером элемент AVPlayerItem, содержащий ссылку на основной контент. По изменению свойства status этого элемента происходит автоматический запуск воспроизведения.

Отличия от AVPlayer заключаются в следующем. Во-первых, в свойство playerLayer сохраняется слой для воспроизведения видео. Это необходимо, поскольку DVIABPlayer для каждого воспроизводимого ролика создает внутри себя новый AVPlayer. Во-вторых, необходимо задать рекламное расписание DVVideoMultipleAdPlaylist, содержащее перечень рекламных пауз и соответствующих им ссылок на VAST-шаблоны:

DVVideoMultipleAdPlaylist *adPlaylist = [[DVVideoMultipleAdPlaylist alloc] init];
adPlaylist.playBreaks = [NSArray arrayWithObjects:
                         [DVVideoPlayBreak playBreakBeforeStartWithAdTemplateURL:
                          OPENX_AD_TAG_WITH_ZONE(18)],
                         [DVVideoPlayBreak playBreakAtTimeFromStart:CMTimeMake(10, 1)
                          withAdTemplateURL:OPENX_AD_TAG_WITH_ZONE(19)],
                         [DVVideoPlayBreak playBreakAfterEndWithAdTemplateURL:
                          OPENX_AD_TAG_WITH_ZONE(20)],
                         nil];
self.player.adPlaylist = adPlaylist;

Макрос OPENX_AD_TAG_WITH_ZONE подставляет в OpenX ссылку для получения VAST-описания рекламы, созданной для зоны с указанным идентификатором.

Приведенной последовательности действий достаточно для того, чтобы плеер начал, в ходе воспроизведения основного контента, вставлять рекламные ролики, полученные из OpenX.

Кроме того, ваш View Controller может реализовать некоторые необязательные методы протокола DVIABPlayerDelegate, что позволит получать оповещения о ходе воспроизведения рекламы. В текущей версии протокола реализованы следующие методы:

Надеемся, что классы, описанные в этой статье, пригодятся вам при разработке приложений. На текущий момент, библиотека iOS VAST Player реализует только базовую функциональность видеорекламы. Нам хотелось бы, чтобы в будущем в ней появилась более полная поддержка стандартов VAST, VMAP и, может быть, даже VPAID. Будем рады вашему участию в обсуждении и развитии проекта на его странице в GitHub.

Обновлено Mon Jan 2 23:16:57 2017 +0300