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를 게재하는 광고 모음

이 가이드에서는 다음을 사용하여 라이브 또는 VOD 스트림을 게재하는 DAI 광고 모음을 재생하는 방법을 보여줍니다. 간단하게 동영상 플레이어를 통해 iOS용 IMA DAI SDK에 연결할 수 있습니다. 팔로우 설정 완성된 샘플과 함께 광고 모음 게재 예

IMA DAI 광고 모음 게재 개요

iOS용 IMA DAI SDK를 사용하여 광고 모음 게재를 구현하려면 구성요소:

  • StreamRequest: 다음에 대한 스트림 요청을 정의하는 객체입니다. Google 광고 서버 다음 중 하나를 사용하여 만들어야 합니다. IMAPodStreamRequest 드림 또는 IMAPodVODStreamRequest 광고 모음 게재를 사용 설정합니다 두 방법 모두 네트워크 코드IMAPodStreamRequest에는 맞춤 애셋 키도 필요합니다. API 키는 선택사항.

  • IMAStreamManager: 동영상 스트림 및 IMA DAI SDK에 의해 실행될 수 있으며, 스트림 이벤트를 게시자에게 전달합니다.

기본 요건

시작하기 전에 다음이 필요합니다.

  • Xcode 13 이상
  • CocoaPods (권장), Swift Package Manager 또는 다운로드한 사본 iOS용 IMA DAI SDK를 사용하면 됩니다.
  • 동영상 스트림을 재생할 수 있도록 이미 IMA DAI SDK가 설정된 iOS 앱 DAI 광고 아직 이러한 앱이 없다면 iOS DAI BasicExample의 시작 지점입니다. BasicExample에는 참조하세요. IMA DAI SDK를 구현하는 방법에 대해 자세히 알아보려면 빠른 시작 가이드

광고 모음 게재 변수 설정

포드 제공에 필요한 모든 변경사항은 다음 위치의 ViewController.swift에서 수행됩니다. swift 또는 ViewController.m을 참조하세요. 이 가이드의 스니펫 기본적으로 Swift 언어를 사용합니다. 첫 번째 단계는 상수 변수를 사용해야 합니다

추가할 광고 모음 스트림 요청 상수는 다음과 같습니다.

  • STREAM_URL (라이브 스트림에만 사용): 동영상 스트림 URL은 서드 파티 파트너에게 광고 모음 추가를 요청할 수도 있습니다 또한 IMA DAI SDK에서 제공한 스트림 ID를 삽입해야 요청할 수 있습니다 이 경우 스트림 URL에는 자리표시자, "[[STREAMID]]"는 스트림을 생성하기 전에 스트림 ID로 대체됩니다. 합니다.
  • NETWORK_CODE: Ad Manager 360 계정의 네트워크 코드입니다.
  • CUSTOM_ASSET_KEY (라이브 스트림에만 사용): 사용자가 Ad Manager 360에서 광고 모음 게재 이벤트를 식별합니다 이는 다음을 통해 만들 수 있습니다. 서드 파티 광고 모음 게재 파트너에 사용하는 것이 좋습니다
  • API_KEY (라이브 스트림에만 사용): 선택사항으로 API 키이며, IMA DAI SDK에서 스트림 ID를 가져오는 데 필요합니다.

예의 변수 섹션을 다음과 일치하도록 변경합니다.

...
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 메서드를 수정하여 실시간 포드 스트림 요청을 만듭니다. 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 수정 및 설정

라이브 스트림 광고 모음 게재

streamManager.streamId를 사용하여 IMAAdsLoaderDelegate 메서드를 다음과 같이 수정합니다. 스트림 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 스트림 광고 모음 게재

streamManager.streamId를 사용하여 IMAAdsLoaderDelegate 메서드를 다음과 같이 수정합니다. 스트림 ID를 가져옵니다. 그런 다음 동영상 기술에서 스트림 URL을 요청합니다. 있습니다. 그런 다음 IMAStreamManager.loadThirdPartyStream()를 호출하여 IMA를 사용합니다. 스트림 URL과 TVP에서 반환한 자막을 로드합니다.

  ...

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

작업이 끝났습니다. 이제 iOS용 IMA DAI SDK입니다. 사용 중인 IMA DAI SDK의 다른 예를 확인하려면 GitHub의 샘플을 참고하세요.