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ı 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. Ardından SDK, birleştirilmiş bir video akışı döndürür. Böylece uygulamanızda reklam ve içerik videosu arasında geçiş yapmanız gerekmez.

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

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ı. Tamamlanmış bir örnekle birlikte bu adımları uygulamak istiyorsanız Pod Yayınlama örnek uygulamasını (Obj C veya Swift) indirin.

IMA DAI Kapsül Yayınlama'ya genel bakış

tvOS için IMA DAI SDK'sını kullanarak kapsül yayınlama özelliğini uygulamak iki ana bileşenden oluşur:

  • StreamRequest: Google'ın reklam sunucularına bir akış isteği tanımlayan nesne. Kapsül yayınlamayı etkinleştirmek için IMAPodStreamRequest veya IMAPodVODStreamRequest kullanılarak oluşturulmalıdır. 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: Video akışı ile IMA DAI SDK'sı arasındaki iletişimi (ör. izleme ping'lerini gönderme ve yayın akışı etkinliklerini yayıncıya yönlendirme) 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.
  • CocoaPods (tercih edilir), Swift Package Manager veya bir dokümanının indirilmiş kopyasını tvOS için IMA DAI SDK'sı.
  • DAI reklamları içeren video akışlarını oynatmak için IMA DAI SDK'sı ile önceden ayarlanmış bir tvOS uygulaması. Böyle bir uygulamanız yoksa tvOS DAI Temel Örnek olarak bir başlangıç noktası olabilir. BasicExample, bu adımda referans verilen kod tabanını rehberini inceleyin. IMA DAI SDK'sını uygulama hakkında daha fazla bilgi için Hızlı başlangıç kılavuzuna bakın.

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

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

Eklenecek reklam kapsülü veri akışı istek sabitleri aşağıda verilmiştir:

  • STREAM_URL (Yalnızca canlı yayınlar için kullanılır): Manifest düzenleyiciniz veya kapsül yayınlama özelliğini kullanan üçüncü taraf iş ortağınız tarafından sağlanan video akış URL'si. Uygulama aktarmadan önce, IMA DAI SDK'sı tarafından sağlanan akış kimliğini istekte bulunabilirsiniz. Bu durumda, yayın URL'sinde bir yer tutucu ("[[STREAMID]]") bulunur. Bu yer tutucu, istek gönderilmeden önce yayın 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 yayınlama 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'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şturun

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

IMAPodVODStreamRequest sınıfını örneklendirerek VOD 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 = 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

Akış kimliğini almak için streamManager.streamId kullanarak IMAAdsLoaderDelegate yöntemlerini değiştirin. 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 tvOS için IMA DAI SDK'sını kullanarak kapsül yayınlama akışında reklam isteğinde bulunuyor ve reklamları görüntülüyorsunuz. IMA DAI SDK'sının kullanıldığı diğer örnekleri görmek için GitHub'daki örneklere göz atın.