Плеер для 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-разработчикам готовый класс

1
DVIABPlayer

, который расширяет функциональность стандартного компонента

1
AVPlayer

, добавляя к ней возможность загрузки VAST-шаблонов и воспроизведения видеорекламы по заранее заданному расписанию. Расписание задает время и тип воспроизведения рекламных вставок — до, после и в середине видеоролика (pre-roll, post-roll и mid-roll).

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

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

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

Класс

1
DVIABPlayer

используется аналогично

1
AVPlayer

: в методе

1
viewDidLoad

мы его инициализируем и связываем со слоем вида-контейнера; затем мы инициализируем и связываем с плеером элемент

1
AVPlayerItem

, содержащий ссылку на основной контент. По изменению свойства

1
status

этого элемента происходит автоматический запуск воспроизведения.

Отличия от

1
AVPlayer

заключаются в следующем. Во-первых, в свойство

1
playerLayer

сохраняется слой для воспроизведения видео. Это необходимо, поскольку

1
DVIABPlayer

для каждого воспроизводимого ролика создает внутри себя новый

1
AVPlayer

. Во-вторых, необходимо задать рекламное расписание

1
DVVideoMultipleAdPlaylist

, содержащее перечень рекламных пауз и соответствующих им ссылок на VAST-шаблоны:


1
2
3
4
5
6
7
8
9
10
11
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;

Макрос

1
OPENX_AD_TAG_WITH_ZONE

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

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

Кроме того, ваш View Controller может реализовать некоторые необязательные методы протокола

1
DVIABPlayerDelegate

, что позволит получать оповещения о ходе воспроизведения рекламы. В текущей версии протокола реализованы следующие методы:

  • 1
    - (BOOL)player:(DVIABPlayer *)player shouldPauseForAdBreak:(DVVideoPlayBreak *)playBreak

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

  • 1
    - (void)player:(DVIABPlayer *)player didFailPlayBreak:(DVVideoPlayBreak *)playBreak withError:(NSError *)error

    вызывается, если рекламная пауза не может быть показана из-за ошибки при загрузке VAST-шаблона.

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

Напоследок предлагаем посмотреть интересное видео об использовании iOS устройств для маркетинга Land Rover Evoque.