This post is also available in: Английский
Серверная часть нашего решения для доставки видеорекламы в приложение iOS представляет собой открытый рекламный сервер OpenX Source и плагин для него, позволяющий добавлять рекламные видеоролики. Чтобы начать работать с OpenX Source, необходимо загрузить его исходные коды, развернуть его на сервере и создать в веб-интерфейсе администрирования рекламную кампанию. О том, как это сделать, мы уже писали в предыдущих статьях:
- Показ рекламы в системе OpenX
- Создание высоконагруженной системы доставки рекламы на базе OpenX
- Подробнее о возможностях OpenX
Правда, существует одна особенность, о которой следует помнить и которая в этих статьях не упоминается: рекламные видеоролики должны иметь формат, подходящий для воспроизведения на мобильных устройствах Apple. Это может быть как отдельный MP4-файл, сжатый с использованием кодеков H.264 и AAC, так и плейлист для воспроизведения по технологии HTTP Live Streaming.
Клиентская часть представляет собой видеоплеер на основе фреймворка AVFoundation (см. нашу предыдущую статью Воспроизведение видео в iOS приложениях). Библиотека iOS VAST Player предоставляет iOS-разработчикам готовый класс DVIABPlayer, который расширяет функциональность стандартного компонента AVPlayer, добавляя к ней возможность загрузки VAST-шаблонов и воспроизведения видеорекламы по заранее заданному расписанию. Расписание задает время и тип воспроизведения рекламных вставок — до, после и в середине видеоролика (pre-roll, post-roll и mid-roll).
Для подключения библиотеки к своему проекту необходимо выполнить следующие действия:
- Добавьте к списку используемых приложением фреймворков AVFoundation и CoreMedia.
- Перетащите папку библиотеки в ваш проект в Xcode.
- Загрузите и добавьте к проекту библиотеку KissXML. Она необходима для парсинга VAST-шаблонов.
В поставку библиотеки включен пример проекта, демонстрирующий ее использование. Рассмотрим этот пример подробно. Пример состоит из одного элемента View Сontroller, содержащего вид-контейнер для слоя плеера, а также несколько информационных меток и кнопок для управления воспроизведением.
Класс DVIABPlayer используется аналогично AVPlayer: в методе viewDidLoad мы его инициализируем и связываем со слоем вида-контейнера; затем мы инициализируем и связываем с плеером элемент AVPlayerItem, содержащий ссылку на основной контент. По изменению свойства status этого элемента происходит автоматический запуск воспроизведения.
Отличия от AVPlayer заключаются в следующем. Во-первых, в свойство playerLayer сохраняется слой для воспроизведения видео. Это необходимо, поскольку DVIABPlayer для каждого воспроизводимого ролика создает внутри себя новый AVPlayer. Во-вторых, необходимо задать рекламное расписание DVVideoMultipleAdPlaylist, содержащее перечень рекламных пауз и соответствующих им ссылок на VAST-шаблоны:
Макрос OPENX_AD_TAG_WITH_ZONE подставляет в OpenX ссылку для получения VAST-описания рекламы, созданной для зоны с указанным идентификатором.
Приведенной последовательности действий достаточно для того, чтобы плеер начал, в ходе воспроизведения основного контента, вставлять рекламные ролики, полученные из OpenX.
-
- (BOOL)player:(DVIABPlayer *)player shouldPauseForAdBreak:(DVVideoPlayBreak *)playBreak вызывается перед началом рекламной паузы для того, чтобы дать возможность пропустить ее. По умолчанию метод возвращает значение NO.
-
- (void)player:(DVIABPlayer *)player didFailPlayBreak:(DVVideoPlayBreak *)playBreak withError:(NSError *)error вызывается, если рекламная пауза не может быть показана из-за ошибки при загрузке VAST-шаблона.
Надеемся, что классы, описанные в этой статье, пригодятся вам при разработке приложений. На текущий момент, библиотека iOS VAST Player реализует только базовую функциональность видеорекламы. Нам хотелось бы, чтобы в будущем в ней появилась более полная поддержка стандартов VAST, VMAP и, может быть, даже VPAID. Будем рады вашему участию в обсуждении и развитии проекта на его странице в GitHub.