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 etmenizi kolaylaştırır. IMA SDK'ları, VAST uyumlu herhangi bir 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 için (VOD veya canlı içerik) 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, tvOS için IMA DAI SDK'yı bir video oynatıcıyla 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'sını kullanarak kapsül yayınlamayı uygulamak iki ana bileşenden oluşur:

  • StreamRequest: Google'ın reklam sunucularına yönelik bir yayın isteğini tanımlayan nesne. Kapsül yayınlamanın etkinleştirilmesi için IMAPodStreamRequest veya IMAPodVODStreamRequest kullanılarak oluşturulmalıdır. Her iki yöntemde de Ağ Kodu gerekir. Ayrıca IMAPodStreamRequest için Ö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 bir sürüm.
  • IMA SDK'yı yükleme yöntemi:
  • DAI reklamlarıyla video akışları oynatmak için IMA DAI SDK'sı ile önceden ayarlanmış bir tvOS uygulaması. Henüz 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 Serving ile 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üncellemektir.

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

  • STREAM_URL (Yalnızca canlı yayınlarda kullanılır): Manifest işleyiciniz veya kapsül yayınlama kullanan üçüncü taraf iş ortağınız tarafından sağlanan video akışı URL'si. İstek yapmadan önce IMA DAI SDK'nın sağladığı yayın 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ınlarda kullanılır): Ad Manager 360'ta 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 pod 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 yöntemlerini IMAAdsLoaderDelegate kullanarak 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 yöntemlerini IMAAdsLoaderDelegate kullanarak değiştirin. Ardından, video teknolojisi iş ortağınızdan (VTP) bir yayın URL'si isteyin ve IMAStreamManager.loadThirdPartyStream() numaralı telefonu arayarak IMA'nın yayın URL'sini ve TVP'niz tarafından döndürülen 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ınlama akışında reklam isteme ve görüntüleme işlemlerini başarıyla tamamladığınızda, pod yayınlama 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 göz atın.