IMA DAI SDK スタートガイド

IMA SDK を使用すると、ウェブサイトやアプリにマルチメディア広告を簡単に統合できます。IMA SDK は 任意のネットワークから広告をリクエストし、 <ph type="x-smartling-placeholder"></ph> VAST 準拠の広告サーバーを実装し、アプリでの広告再生を管理できます。IMA DAI SDK を使用すると、 広告およびコンテンツ動画(VOD またはライブ コンテンツ)のストリーム リクエスト。すると、SDK は 統合動画ストリームであるため、広告とコンテンツ動画の切り替えを管理する手間が省けます。 確認できます。

ご希望の DAI ソリューションを選択する

<ph type="x-smartling-placeholder"></ph>

連続広告配信 DAI

このガイドでは、 tvOS 向け IMA DAI SDK とシンプルな動画プレーヤーが必要です。フォローする 完成したサンプルと一緒に Pod Serving のサンプルアプリをダウンロードします。 (Obj C または Swift)。

IMA DAI 連続配信広告の概要

tvOS 向け IMA DAI SDK を使用して連続配信広告を実装するには、主に次の 2 つの作業を行います。 components:

  • StreamRequest: ストリーミング リクエストを定義するオブジェクト。 Google の広告サーバー。次のいずれかを使用して作成する必要があります。 IMAPodStreamRequest または IMAPodVODStreamRequest 有効にする必要がありますどちらの方法でも、ネットワーク コードIMAPodStreamRequest にはカスタム アセットキーも必要です。API キーは オプションです。

  • IMAStreamManager: 動画ストリームと IMA DAI SDK(トラッキング ping の発行や ストリーム イベントをパブリッシャーに転送できます。

前提条件

始める前に、次のものが必要になります。

  • Xcode 13 以降。
  • CocoaPods(推奨)、Swift Package Manager、または ダウンロードした tvOS 向け IMA DAI SDK
  • tvOS アプリで IMA DAI SDK がセットアップされ、 DAI 広告該当するアプリがない場合は、 tvOS DAI BasicExample を 出発点になります。BasicExample には、このデモで参照されているコードベースがあります。 ご覧くださいIMA DAI SDK の実装方法について詳しくは、 クイック スタートガイド

連続配信広告の変数を設定する

連続配信広告に必要な変更はすべて、ViewController.swift で Swift または ViewController.m(Objective-C の場合)このガイドのスニペット Swift 言語がデフォルトで使用されます。まず、Python や Curl など、 使用します。

追加する連続配信広告のストリーム リクエスト定数は次のとおりです。

  • STREAM_URLライブ配信でのみ使用): 連続配信広告を使って マニフェストマニピュレータやパートナー事業者が本来は IMA DAI SDK で提供されるストリーム ID を挿入してから、 リクエストできます。ストリーム URL にはプレースホルダが含まれており、 "[[STREAMID]]" は、ストリーム ID に置き換えてから、 リクエストできます。
  • NETWORK_CODE: アド マネージャー 360 アカウントのネットワーク コード。
  • CUSTOM_ASSET_KEYライブ配信でのみ使用): カスタム アセットキー はアド マネージャー 360 で連続配信広告の配信イベントを識別します。これを作成するには、 サードパーティの連続配信広告パートナーに依頼する必要はありません
  • API_KEYライブ配信でのみ使用): 使用可能なオプションの API キー IMA DAI SDK からストリーム ID を取得するために必要です。

この例の variable セクションを次のように変更します。

...
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?
  ...

ライブ配信リクエストまたは VOD 連続配信リクエストを作成する

ライブ配信の連続配信広告

requestStream メソッドを変更して、Pod のライブ ストリーム リクエストを作成します。 IMAPodStreamRequest をインスタンス化しています。

  ...

  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 ストリームの広告連続配信

requestStream メソッドを変更して VOD 連続配信リクエストを作成します。 IMAPodVODStreamRequest をインスタンス化しています。

  ...

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

  ...

ストリーム URL を編集して設定する

ライブ配信の連続配信広告

IMAAdsLoaderDelegate メソッドを変更し、streamManager.streamId を使用して以下を行います。 ストリーム ID を取得します。次に、ストリーム ID を STREAM_URL に挿入します。 "[[STREAMID]]"。この変更が行われると、新しいストリーム URL は videoDisplay.loadStream() を使用して設定します。

  ...

  // 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 ストリームの広告連続配信

IMAAdsLoaderDelegate メソッドを変更し、streamManager.streamId を使用して以下を行います。 ストリーム ID を取得します。次に、使用する動画テクノロジーにストリーム URL をリクエストします。 パートナー(VTP)と IMAStreamManager.loadThirdPartyStream() を呼び出して IMA を取得する TVP から返されたストリーム URL と字幕を読み込みます。

  ...

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

これで、「連続配信広告」ストリームで広告がリクエストされ、表示されました。 tvOS 向け IMA DAI SDKIMA DAI SDK のその他の使用例については、 GitHub のサンプルをご覧ください。