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

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 isteyebilir ve uygulamalarınızda reklam oynatmayı yönetebilir. IMA DAI SDK'ları sayesinde uygulamalar, reklam ve içerik videosu (VOD veya canlı içerik) için akış isteğinde bulunur. SDK, daha sonra birleştirilmiş bir video akışı döndürür. Böylece, uygulamanız içinde reklam ve içerik videosu arasında geçişi yönetmeniz gerekmez.

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

DAI yayınlayan kapsül

Bu kılavuzda, basit bir video oynatıcıyla tvOS için IMA DAI SDK'sı kullanılarak canlı veya VOD akışın DAI Kapsül Yayını'nın nasıl oynatılacağı gösterilmektedir. Tamamlanmış bir örnekle devam etmek isterseniz 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 sunumunun uygulanması iki ana bileşenden oluşur:

  • StreamRequest: Google'ın reklamcılık sunucularına akış isteğini tanımlayan bir nesnedir. Kapsül sunumunu etkinleştirmek için IMAPodStreamRequest veya IMAPodVODStreamRequest kullanılarak oluşturulmalıdır. Her iki yöntem de bir Ağ Kodu gerektirir ve IMAPodStreamRequest için de bir Özel Öğe Anahtarı gerekir. API Anahtarı isteğe bağlıdır.

  • IMAStreamManager: Video akışı ile IMA DAI SDK'sı arasındaki iletişimi (izleme ping'lerini etkinleştirme ve akış etkinliklerini yayıncıya iletme gibi) işleyen bir nesnedir.

Ön koşullar

Başlamadan önce şunlara ihtiyacınız vardır:

  • Xcode 13 veya sonraki bir sürüm.
  • CocoaPods (tercih edilir), Swift Package Manager veya tvOS için IMA SDK'nın indirilen bir kopyası.
  • DAI reklamlarıyla video akışlarını oynatmak için IMA DAI SDK'sı ile oluşturulmuş bir tvOS uygulaması zaten mevcuttur. Önceden böyle bir uygulamanız yoksa başlangıç noktası olarak tvOS DAI BasicExample'i kullanmanızı öneririz. BasicExample, bu kılavuzda referans verilen kod tabanına sahiptir. IMA DAI SDK'sının nasıl uygulanacağı hakkında daha fazla bilgi edinmek için Hızlı başlangıç kılavuzunu inceleyin.

Kapsül yayınlama değişkenlerinizi ayarlayın

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

Eklenecek reklam kapsülü akış isteği sabitleri şunlardır:

  • STREAM_URL (Yalnızca canlı yayınlar için kullanılır): Manifest düzenleyiciniz veya kapsül sunumunu kullanan üçüncü taraf iş ortağı tarafından sağlanan video akışı URL'si. İstekte bulunmadan önce IMA DAI SDK'sı tarafından sağlanan akış kimliğini eklemeniz gerekir. Bu durumda, akış URL'sinde bir yer tutucu ("[[STREAMID]]") bulunur. Bu yer tutucu, istek yapılmadan önce akış kimliğiyle değiştirilir.
  • 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 sunma etkinliğinizi tanımlayan özel öğe anahtarı. Bu, manifest düzenleyiciniz veya 3. taraf kapsül sunma iş ortağınız tarafından oluşturulabilir.
  • API_KEY (Yalnızca canlı yayınlar için kullanılır): IMA DAI SDK'sından akış kimliği almak için gerekebilecek isteğe bağlı bir API anahtarı.

Ö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şturun

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

IMAPodStreamRequest özelliğini başlatarak canlı kapsül akış isteği oluşturmak için requestStream yöntemini 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

IMAPodVODStreamRequest özelliğini başlatarak requestStream yöntemini değiştirerek bir VOD kapsül akış isteği oluşturun.

  ...

  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, "[[STREAMID]]" yerine akış kimliğini STREAM_URL içine yerleştirin. Bu değişiklik yapıldıktan sonra yeni akış URL'si, videoDisplay.loadStream() kullanılarak ayarlanabilir.

  ...

  // 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, IMA'nın akış URL'sini ve TVP'niz tarafından döndürülen altyazıları yüklemesi için video teknolojisi iş ortağınızdan (VTP) bir akış URL'si isteyin ve IMAStreamManager.loadThirdPartyStream() yöntemini çağırı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
  }

İşte bu kadar. Artık tvOS için IMA DAI SDK'sı ile kapsül yayınlayan akışta reklamlar istiyor ve gösteriyorsunuz. Kullanılan IMA DAI SDK'sının diğer örneklerini görmek için GitHub'daki örnekleri inceleyin.