Как включить Open Measurement

Выберите платформу: HTML5 Android iOS

В 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 НЕ регистрируйте
  • Прозрачный оверлей для регистрации нажатий пользователей
  • Временные кнопки
    • Приостановить
    • Воспроизвести
    • Полноэкранный режим
    • Cast/AirPlay
    • Свернуть
    • Перемотка
    • Другие действия, связанные с воспроизведением
  • Водяные знаки
  • Всплывающие окна
  • Диал. окна
  • Непостоянные кнопки
  • Другие виды, закрывающие обзор

В приведенном ниже образце кода показано, как зарегистрировать оверлеи элементов управления видео в контейнере для показа объявлений.

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()
}