IMA DAI SDK'sını kullanmaya başlama

IMA SDK'ları, multimedya reklamlarını web sitelerinize ve uygulamalarınıza entegre etmenizi kolaylaştırır. IMA SDK'ları herhangi birinden reklam iste VAST uyumlu reklam sunucusu oluşturup uygulamalarınızda reklam oynatmayı yönetin. IMA DAI SDK'larıyla, uygulamalar reklam ve içerik videosu (VOD veya canlı içerik) için akış isteği. SDK, daha sonra Böylece, reklam ve içerik videosu arasında geçiş yönetmek zorunda kalmazsınız. bir kontrol listesidir.

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

Kapsül yayınlama DAI

Bu kılavuzda, DAI Kapsül Yayınlama canlı veya VOD yayınının basit bir video oynatıcı ile tvOS için IMA DAI SDK'sı. Proje yönetimi planınızla ilgili tamamlanmış bir örnekle birlikte Kapsül Yayınlama örnek uygulamasını indirin (Obj C veya Swift).

IMA DAI Kapsül Yayınlamaya genel bakış

tvOS için IMA DAI SDK'sını kullanarak kapsül yayınlamanın uygulanması iki temel kavramdan ibarettir: bileşenler:

  • StreamRequest: Şu akış isteğini tanımlayan bir nesne: Google'ın reklam sunucuları. Aşağıdakilerden biri kullanılarak oluşturulmalıdır: IMAPodStreamRequest veya IMAPodVODStreamRequest kullanarak kapsül sunmayı etkinleştirin. Her iki yöntem de Ağ Kodu ve IMAPodStreamRequest için Özel Öğe Anahtarı da gereklidir. API Anahtarı isteğe bağlıdır.

  • IMAStreamManager: Şu öğeler arasındaki iletişimi işleyen bir nesne: izleme ping'lerini tetikleme ve IMA DAI SDK'sını kullanma gibi, Akış etkinliklerini yayıncıya yönlendirme.

Ön koşullar

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

Kapsül sunma değişkenlerinizi ayarlama

Kapsül yayınlama için gereken tüm değişiklikler ViewController.swift içinde gerçekleştirilir. Objective-C'de Swift veya ViewController.m. Bu kılavuzdaki snippet'ler varsayılan olarak Swift dilini kullanır. İlk adım, sabit değişkenler.

Eklenecek reklam kapsülü akış isteği sabit değerleri aşağıda verilmiştir:

  • STREAM_URL (Yalnızca canlı yayınlar için kullanılır): tarafından sağlanan video akışı URL'si manifest düzenleyiciniz veya üçüncü taraf iş ortağınız aracılığıyla hazırlayın. Uygulama aktarmadan önce IMA DAI SDK'sı tarafından sağlanan akış kimliğini girmenizi gerektirir: istekte bulunabilirsiniz. Bu durumda, akış URL'si bir yer tutucu içerir. "[[STREAMID]]" (bu veri, akış kimliğiyle değiştirilir). isteği gönderin.
  • 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'ta kapsül yayınlama etkinliğinizi tanımlar. Bu, şunlar tarafından oluşturulabilir: manifest düzenleyiciniz veya üçüncü taraf kapsül sunma iş ortağınız.
  • API_KEY (Yalnızca canlı yayınlar için kullanılır): IMA DAI SDK'sından akış kimliğini almak için gereklidir.

Ö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 =
    "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000&seg-host=dai.google.com&stream_id=[[STREAMID]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  var adsLoader: IMAAdsLoader?
  ...

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

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

Canlı kapsül akışı isteği oluşturmak için requestStream yöntemini şu tarihe kadar değiştirin: IMAPodStreamRequest örneği oluşturuluyor.

  ...

  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

VOD kapsül akış isteği oluşturmak için requestStream yöntemini şu şekilde değiştirin: IMAPodVODStreamRequest örneği oluşturuluyor.

  ...

  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

Aşağıdaki işlemler için streamManager.streamId kullanarak IMAAdsLoaderDelegate yöntemlerini değiştirin: akış kimliğini alın. Ardından akış kimliğini STREAM_URL bölümüne girin. "[[STREAMID]]". Bu değişiklik yapıldıktan sonra yeni akış URL'si videoDisplay.loadStream() kullanılarak ayarlanır.

  ...

  // 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

Aşağıdaki işlemler için streamManager.streamId kullanarak IMAAdsLoaderDelegate yöntemlerini değiştirin: akış kimliğini alın. Ardından, video teknolojinizden bir akış URL'si isteyin. iş ortağı (VTP) açın ve IMA'yı etkinleştirmek için IMAStreamManager.loadThirdPartyStream() adlı iş ortağını arayın yayın URL'sini ve TVP'niz tarafından döndürülen altyazıları yükleyin.

  ...

  // 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
  }

İşte bu kadar. Artık aşağıdakilerle kapsül yayınlama akışında reklam istiyor ve gösteriyorsunuz: tvOS için IMA DAI SDK'sı. Kullanılan IMA DAI SDK'sının diğer örneklerini görmek için GitHub'daki örneklere bakın.