Начните работу с безопасными сигналами

Защищённые сигналы — это закодированные данные, которые собираются на клиентском устройстве и передаются выбранным участникам торгов. В этом руководстве показано, как собирать и отправлять защищённые сигналы в Google Ad Manager с помощью IMA SDK.

Для API защищенных сигналов требуется версия IMA SDK 3.18.1 или выше для iOS.

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

Используйте стороннего поставщика сигналов

Чтобы использовать безопасные сигналы, необходимо развернуть в своем приложении класс адаптера сборщика сигналов для сбора сигналов, их кодирования и передачи в IMA SDK.

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

IMA SDK для iOS автоматически инициализирует каждый адаптер защищенных сигналов без внесения дополнительных изменений в ваш код.

Вот пример того, как можно добавить адаптер защищенных сигналов в свой проект:

Отправить пользовательские данные

Помимо использования стороннего поставщика сигналов, вы также можете собирать, кодировать и отправлять сигналы с пользовательскими данными. Для отправки защищённых сигналов с пользовательскими данными необходимо включить пользовательские сигналы в Менеджере рекламы.

Для каждого запроса потока выполните следующие действия:

  1. Создайте объект IMASecureSignals , содержащий закодированные пользовательские данные в виде строки.
  2. Добавьте объект IMASecureSignals в свой потоковый запрос, установив атрибут IMAStreamRequest.secureSignals :

Objective-C

app/ViewController.m

- (void)requestStream {
  // Create a stream request. Use one of "Livestream request" or "VOD request",
  //  depending on your type of stream.
  IMAStreamRequest *request;
  if (kStreamType == StreamTypeLive) {
    // Livestream request. Replace the asset key with your value.
    request = [[IMALiveStreamRequest alloc] initWithAssetKey:kLiveStreamAssetKey
                                                networkCode:kNetworkCode
                                          adDisplayContainer:self.adDisplayContainer
                                                videoDisplay:self.imaVideoDisplay
                                                userContext:nil];
  } else {
    // VOD request. Replace the content source ID and video ID with your values.
    request = [[IMAVODStreamRequest alloc] initWithContentSourceID:kVODContentSourceID
                                                          videoID:kVODVideoID
                                                      networkCode:kNetworkCode
                                                adDisplayContainer:self.adDisplayContainer
                                                      videoDisplay:self.imaVideoDisplay
                                                      userContext:nil];
  }
  
  IMASecureSignals *signals =
      [[IMASecureSignals alloc] initWithCustomData:@"My encoded signal string"];
  request.secureSignals = signals;
  
  [self.adsLoader requestStreamWithRequest:request];
}

Быстрый

app/ViewController.swift

 func requestStream() {
  // Create a stream request. Use one of "Livestream request" or "VOD request".
  let signals = IMASecureSignals(customData: "My encoded signal string")
  if ViewController.requestType == StreamType.live {
    // Livestream request.
    let request = IMALiveStreamRequest(
      assetKey: ViewController.assetKey,
      networkCode: ViewController.networkCode,
      adDisplayContainer: adDisplayContainer!,
      videoDisplay: imaVideoDisplay,
      userContext: nil)
    request.secureSignals = signals
    adsLoader?.requestStream(with: request)
  } else {
    // VOD stream request.
    let request = IMAVODStreamRequest(
      contentSourceID: ViewController.contentSourceID,
      videoID: ViewController.videoID,
      networkCode: ViewController.networkCode,
      adDisplayContainer: adDisplayContainer!,
      videoDisplay: imaVideoDisplay,
      userContext: nil)
    request.secureSignals = signals
    adsLoader?.requestStream(with: request)
  }
}