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ı, VAST uyumlu herhangi bir reklam sunucusundan reklam isteyebilir ve uygulamalarınızda reklam oynatmayı yönetebilir. IMA DAI SDK'larıyla uygulamalar, reklam ve içerik videosu (VOD veya canlı içerik) için akış isteğinde bulunur. Daha sonra SDK, uygulamanızın içinde reklam ve içerik videosu arasında geçişi yönetmek zorunda kalmamanız için birleştirilmiş video akışı döndürür.

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

Kapsül yayınlama DAI

Bu kılavuzda, iOS için IMA DAI SDK'sını basit bir video oynatıcıyla kullanarak DAI Kapsül Yayınlama canlı veya VOD yayınının nasıl oynatılacağı gösterilmektedir. Tamamlanmış bir örnekle birlikte devam etmek isterseniz kapsül sunma örneğini indirin.

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

iOS için IMA DAI SDK'sını kullanarak kapsül yayınlamanın uygulanması iki ana bileşen içerir:

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

  • IMAStreamManager: Video akışı ile IMA DAI SDK'sı arasındaki iletişimi (ör. izleme ping'lerini tetikleme ve akış etkinliklerini yayıncıya yönlendirme) yöneten bir nesnedir.

Ön koşullar

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

  • Xcode 13 veya sonraki sürümler.
  • CocoaPods (tercih edilen), Swift Package Manager veya iOS için IMA DAI SDK'sının indirilmiş bir kopyası.
  • DAI reklamlarıyla video akışları oynatmak için IMA DAI SDK'sı ile oluşturulmuş bir iOS uygulaması. Böyle bir uygulamanız yoksa başlangıç noktası olarak iOS DAI Temel Örneği'ni kullanmanızı öneririz. BasicExample, bu kılavuzda referans verilen kod tabanını içerir. IMA DAI SDK'sını uygulama hakkında daha fazla bilgi edinmek için Hızlı Başlangıç Kılavuzu'nu inceleyin.

Kapsül sunma değişkenlerinizi ayarlama

Kapsül yayınlama için gereken tüm değişiklikler, hızlı bir şekilde ViewController.swift veya Objective-C'deki ViewController.m öğesinde yapılır. Bu kılavuzdaki snippet'lerde varsayılan olarak Swift dili kullanılır. İlk adım, sabit değişkenleri güncellemektir.

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): Manifest düzenleyiciniz veya kapsül yayınlama 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 girmeniz gerekir. Bu durumda akış URL'si, istekte bulunmadan önce akış kimliğiyle değiştirilen bir yer tutucu ("[[STREAMID]]") içerir.
  • 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 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 gerekli olabilecek 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şturma

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

IMAPodStreamRequest özelliğini etkinleştirerek 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 tetikleyerek requestStream yöntemini değiştirerek 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]]" kısmını değiştirerek akış kimliğini STREAM_URL alanına girin. Bu değişiklik yapıldıktan sonra yeni yayın 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, video teknolojisi iş ortağınızdan (VTP) bir akış URL'si isteyin. Ardından, akış URL'sini ve TVP'niz tarafından döndürülen altyazıları IMA yüklemesini sağlamak için IMAStreamManager.loadThirdPartyStream() adlı SDK'yı ç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 iOS için IMA DAI SDK'sı ile kapsül yayınlama akışında reklam istiyor ve bu reklamları gösteriyorsunuz. Kullanılan IMA DAI SDK'sının diğer örneklerini görmek için GitHub'daki örneklere bakın.