DAI için IMA SDK'sını ayarlama

Platform seçin: HTML5 Android iOS tvOS Cast Roku

IMA SDK'ları, multimedya reklamları web sitelerinize ve uygulamalarınıza entegre etmeyi kolaylaştırır. IMA SDK'ları, herhangi bir VAST uyumlu reklam sunucusundan reklam isteğinde bulunabilir ve uygulamalarınızda reklam oynatmayı yönetebilir. IMA DAI SDK'ları ile uygulamalar, reklam ve içerik videosu (VOD veya canlı içerik) için bir akış isteğinde bulunur. SDK daha sonra birleşik bir video akışı döndürür. Böylece uygulamanızda reklam ve içerik videosu arasında geçişi yönetmeniz gerekmez.

İlgilendiğiniz DAI çözümünü seçin

Kapsül yayınlama DAI

Bu kılavuzda, bir video oynatıcıyla tvOS için IMA DAI SDK'yı kullanarak DAI kapsül yayınlama canlı veya VOD akışının nasıl oynatılacağı gösterilmektedir. Tamamlanmış bir örnek entegrasyonu görüntülemek veya takip etmek için kapsül yayınlama örnek uygulamasını (Obj C veya Swift) indirin.

IMA DAI Kapsül Yayınlamaya Genel Bakış

tvOS için IMA DAI SDK'yı kullanarak kapsül yayınlamayı uygulama işlemi iki ana bileşenden oluşur:

  • StreamRequest: Google'ın reklam sunucularına yönelik bir yayın isteğini tanımlayan nesne. Pod yayınlamayı etkinleştirmek için IMAPodStreamRequest veya IMAPodVODStreamRequest kullanılarak oluşturulmalıdır. Her iki yöntem için de Ağ Kodu gerekir. IMAPodStreamRequest için ayrıca Özel Öğeler Anahtarı da gerekir. API anahtarı isteğe bağlıdır.

  • IMAStreamManager: İzleme ping'lerini tetikleme ve yayın içi etkinlikleri yayıncıya yönlendirme gibi video akışı ile IMA DAI SDK arasındaki iletişimi yöneten bir nesne.

Ön koşullar

Başlamadan önce aşağıdakilere ihtiyacınız vardır:

  • Xcode 13 veya sonraki sürümler.
  • IMA SDK'yı yükleme yöntemi:
  • DAI reklamları içeren video yayınlarını oynatmak için IMA DAI SDK ile önceden ayarlanmış bir tvOS uygulaması. Böyle bir uygulamanız yoksa başlangıç noktası olarak tvOS DAI BasicExample'ı kullanmanızı öneririz. BasicExample, bu kılavuzda referans verilen kod tabanına sahiptir. IMA DAI SDK'yı uygulama hakkında daha fazla bilgi için Hızlı başlangıç kılavuzu'na bakın.

Kapsül yayınlama değişkenlerinizi ayarlama

Pod sunumuyla ilgili tüm değişiklikleri ViewController.swift Swift'te veya ViewController.m Objective-C'de yapın. Bu kılavuzdaki snippet'ler varsayılan olarak Swift dilini kullanır. İlk adım, sabit değişkenleri güncellemek.

Aşağıdaki reklam kapsülü yayın isteği sabitlerini ekleyin:

  • STREAM_URL (Yalnızca canlı yayınlar için kullanılır): Kapsül yayınlama kullanan manifest manipülatörünüz veya üçüncü taraf iş ortağınız tarafından sağlanan video akışı URL'si. İstek göndermeden önce IMA DAI SDK tarafından sağlanan akış kimliğini girmenizi gerektirmelidir. Bu durumda, yayın URL'si bir yer tutucu içerir. İsteği göndermeden önce "[[STREAMID]]" yer tutucusunu yayın kimliğiyle değiştirirsiniz.
  • NETWORK_CODE: Ad Manager 360 hesabınızın ağ kodu.
  • CUSTOM_ASSET_KEY (Yalnızca canlı yayınlar için kullanılır): Ad Manager 360'taki Pod Serving etkinliğinizi tanımlayan özel öğe anahtarı. Bu, manifest düzenleyiciniz veya üçüncü taraf kapsül yayınlama iş ortağınız tarafından oluşturulabilir.
  • API_KEY (Yalnızca canlı yayınlar için kullanılır): IMA DAI SDK'dan akış kimliği almak için gerekli olabilecek isteğe bağlı bir API anahtarıdır.

Örneğin değişken bölümünü aşağıdakiyle eşleşecek şekilde değiştirin:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl = ""
  static let networkCode = ""
  static let customAssetKey = ""
  static let APIKey = ""
  static let backupStreamURLString = ""

  var adsLoader: IMAAdsLoader?
  ...

Canlı veya VOD kapsülü akış isteği oluşturma

Canlı yayın kapsülü yayınlama

requestStream yöntemini, IMAPodStreamRequest öğesini oluşturarak canlı pod akışı isteği oluşturacak şekilde değiştirin.

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

VOD akışı kapsülü yayınlama

requestStream yöntemini, IMAPodVODStreamRequest öğesini oluşturarak VOD pod akışı isteği oluşturacak şekilde değiştirin.

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

Akış URL'sini düzenleme ve ayarlama

Canlı yayın kapsülü yayınlama

Akış kimliğini almak için streamManager.streamId kullanarak IMAAdsLoaderDelegate yöntemlerini değiştirin. Ardından, akış kimliğini STREAM_URL içine "[[STREAMID]]" yerine yerleştirin. Bu değişikliği yaptıktan sonra videoDisplay.loadStream() kullanarak yeni yayın URL'sini ayarlayın.

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

VOD akışı kapsülü yayınlama

Akış kimliğini almak için streamManager.streamId kullanarak IMAAdsLoaderDelegate yöntemlerini değiştirin. Ardından, video teknolojisi iş ortağınızdan (VTP) bir akış URL'si isteyin ve IMAStreamManager.loadThirdPartyStream() numaralı telefonu arayarak IMA'nın akış URL'sini ve TVP'niz tarafından döndürülen tüm altyazıları yüklemesini sağlayın.

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

IMA DAI öğelerini temizleme

IMA DAI SDK ile bir pod yayını akışında reklam isteme ve görüntüleme işlemlerini başarıyla tamamladığınızda, pod yayını oturumu tamamlandıktan sonra tüm kaynakları temizlemenizi öneririz. Akış oynatmayı durdurmak, tüm reklam izlemeyi durdurmak ve yüklenen tüm akış öğelerini serbest bırakmak için IMAStreamManager.destroy() işlevini çağırın.

tvOS SDK'nın kullanıldığı diğer örnekleri görmek için GitHub'daki örneklere bakın.