В IMA SDK для iOS входит Open Measurement (OM) SDK – отраслевой стандарт, разработанный Бюро интерактивной рекламы (IAB), который позволяет сторонним поставщикам отслеживать видимость и проверять рекламу. При использовании IMA SDK для iOS встроенный OM SDK автоматически анализирует тег <AdVerifications> в тегах объявлений VAST и отправляет данные о видимости указанным поставщикам услуг по отслеживанию с помощью OMID API. IMA SDK поддерживает OM SDK версии 1.6, расширения AdVerifications в Google Менеджере рекламы для VAST 2 и более поздних версий, а также узел AdVerifications в VAST 4 и более поздних версиях.Чтобы использовать Open Measurement, помните о следующем:
Чтобы использовать Open Measurement, у вас должна быть версия IMA SDK для iOS 3.9.0 или более поздняя.
В объявлениях, которые передаются в VAST, необходимо настроить трафик
<AdVerifications>в соответствии со спецификацией VAST 4.1, если используется VAST 4.1 или более поздняя версия. В противном случае следует использовать<Extension type="AdVerifications">.Не закрывайте
AdDisplayContainerникакими наложениями (прозрачными или непрозрачными), поскольку OM SDK будет отмечать их как препятствия, что приведет к снижению видимости.
Требования
- Если ваши объявления размещаются через Менеджер рекламы, настройте поставщика данных о видимости для сети Менеджера рекламы и назначьте его для позиции.
Тестирование
Чтобы протестировать Open Measurement с помощью IMA SDK, используйте версию IMA, которая поддерживает OM SDK, а также тестовый тег объявления.
В ответе VAST должен быть элемент <AdVerifications>.
Регистрация помех, связанных с оверлеем элементов управления видео
Элементы управления видео, такие как кнопки паузы и индикаторы выполнения, предоставляют пользователям важную информацию о воспроизведении и позволяют выполнять необходимые действия. На мобильных устройствах из-за неточных нажатий и ожиданий пользователей стало обычной практикой отрисовывать большие удобные элементы управления поверх медиаконтента. Обычно они появляются и исчезают при нажатии и не видны большую часть времени воспроизведения.
Пример наложения элементов управления видео можно посмотреть на следующем изображении, где показаны элементы управления в приложении YouTube:

При использовании IMA SDK большинство издателей реализуют эти элементы управления, добавляя над контейнером для показа объявлений прозрачную область просмотра. Обычно элементы управления являются дочерними элементами этого представления, которое полностью закрывает видеопроигрыватель. Этот прозрачный оверлей используется для регистрации нажатий и последующего показа элементов управления.
При расчете видимости объявлений с помощью SDK для отслеживания Open Measurement все элементы, перекрывающие медиаконтент, считаются препятствиями и снижают коэффициент видимости. Если прозрачный оверлей для нажатия расположен над всем контейнером объявления, инвентарь может быть объявлен полностью невидимым.
В SDK Open Measurement предусмотрены элементы управления видео, которые считаются "дружественными" препятствиями, необходимыми для удобства пользователей. После регистрации как дружественного эти элементы управления исключаются из измерений видимости объявлений.
При поддержке IAB и MRC в IMA SDK появился API для регистрации этих оверлеев в Open Measurement SDK. Эти элементы управления должны быть полностью прозрачными оверлеями или небольшими кнопками. Другие представления, не связанные с элементами управления видео, регистрировать не нужно.
| Регистрация в DO | НЕ регистрируйте |
|---|---|
|
|
В приведенном ниже образце кода показано, как зарегистрировать оверлеи элементов управления видео в контейнере для показа объявлений.
Objective-C
- (void)registerObstructionsForContainer:(IMAAdDisplayContainer *)displayContainer {
UIView *transparentTapOverlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 250)];
UIButton *myPauseButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 10)];
IMAFriendlyObstruction *overlayObstruction =
[[IMAFriendlyObstruction alloc] initWithView:transparentTapOverlay
purpose:IMAFriendlyObstructionPurposeNotVisible
detailedReason:@"This overlay is transparent"];
IMAFriendlyObstruction *pauseButtonObstruction =
[[IMAFriendlyObstruction alloc] initWithView:myPauseButton
purpose:IMAFriendlyObstructionPurposeMediaControls
detailedReason:@"This is the video player pause button"];
[displayContainer registerFriendlyObstruction:overlayObstruction];
[displayContainer registerFriendlyObstruction:pauseButtonObstruction];
}
Swift
func registerObstructions(displayContainer: IMAAdDisplayContainer) {
let transparentTapOverlay = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 250))
let myPauseButton = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 10))
let overlayObstruction = IMAFriendlyObstruction(
view: transparentTapOverlay,
purpose: .notVisible,
detailedReason: "This overlay is transparent")
let pauseButtonObstruction = IMAFriendlyObstruction(
view: myPauseButton,
purpose: .mediaControls,
detailedReason: "This is the video player pause button")
displayContainer.register(overlayObstruction)
displayContainer.register(pauseButtonObstruction)
}
Когда они больше не нужны, их можно удалить, вызвав следующий метод:
Objective-C
- (void)unregisterObstructionsForContainer:(IMAAdDisplayContainer *)displayContainer {
// This removes all previously registered friendly obstructions from the container.
[displayContainer unregisterAllFriendlyObstructions];
}
Swift
func unregisterObstructions(displayContainer: IMAAdDisplayContainer) {
// This removes all previously registered friendly obstructions from the container.
displayContainer.unregisterAllFriendlyObstructions()
}