Bắt đầu sử dụng SDK IMA DAI

IMA SDK giúp bạn dễ dàng tích hợp quảng cáo đa phương tiện vào trang web và ứng dụng của mình. SDK IMA có thể yêu cầu quảng cáo từ bất kỳ máy chủ quảng cáo tuân thủ VAST nào và quản lý việc phát quảng cáo trong ứng dụng của bạn. Với SDK IMA DAI, các ứng dụng tạo ra một yêu cầu phát trực tuyến cho video quảng cáo và nội dung – VOD hoặc nội dung trực tiếp. Sau đó, SDK sẽ trả về một luồng video kết hợp để bạn không phải quản lý việc chuyển đổi giữa video quảng cáo và video nội dung trong ứng dụng của mình.

Chọn giải pháp DAI mà bạn quan tâm

DAI (Chèn quảng cáo động) phân phát nhóm

Hướng dẫn này minh hoạ cách phát trực tiếp sự kiện phân phát nhóm DAI hoặc video theo yêu cầu bằng cách sử dụng SDK IMA DAI cho tvOS với một trình phát video đơn giản. Nếu bạn muốn làm theo mẫu hoàn chỉnh, hãy tải ứng dụng ví dụ về Phân phát nhóm (Obj C hoặc Swift).

Tổng quan về việc phân phát nhóm IMA DAI

Việc triển khai tính năng phân phát nhóm bằng SDK IMA DAI cho tvOS bao gồm hai thành phần chính:

  • StreamRequest: Đối tượng xác định yêu cầu truyền đến các máy chủ quảng cáo của Google. Bạn phải tạo bằng cách sử dụng IMAPodStreamRequest hoặc IMAPodVODStreamRequest để bật tính năng phân phát nhóm. Cả hai phương thức đều yêu cầu Mã mạngIMAPodStreamRequest cũng cần có Khoá thành phần tuỳ chỉnh. Khoá API là không bắt buộc.

  • IMAStreamManager: Một đối tượng xử lý hoạt động giao tiếp giữa luồng video và SDK IMA DAI, chẳng hạn như kích hoạt ping theo dõi và chuyển tiếp các sự kiện luồng đến nhà xuất bản.

Điều kiện tiên quyết

Trước khi bắt đầu, bạn cần có:

  • Xcode 13 trở lên.
  • CocoaPods (ưu tiên), Trình quản lý gói Swift hoặc bản sao đã tải xuống của SDK IMA DAI cho tvOS.
  • Một ứng dụng tvOS đã thiết lập với SDK IMA DAI để phát luồng video bằng quảng cáo DAI. Nếu chưa có một ứng dụng như vậy, bạn nên sử dụng Ví dụ cơ bản cho chiến dịch tvOS làm điểm xuất phát. BasicExample có cơ sở mã được tham chiếu trong hướng dẫn này. Để biết thêm thông tin về cách triển khai SDK IMA DAI, hãy xem Hướng dẫn bắt đầu nhanh.

Thiết lập các biến phân phát nhóm

Bạn có thể thực hiện mọi thay đổi cần thiết để phân phát nhóm trong ViewController.swift trong Swift hoặc ViewController.m trong Objective-C. Các đoạn mã trong hướng dẫn này mặc định sử dụng ngôn ngữ Swift. Bước đầu tiên là cập nhật các biến không đổi.

Dưới đây là các hằng số yêu cầu luồng quảng cáo sẽ được thêm vào:

  • STREAM_URL (Chỉ dùng cho sự kiện phát trực tiếp): URL của luồng video do người chỉnh sửa tệp kê khai hoặc đối tác bên thứ ba cung cấp qua tính năng phân phát nhóm. Bạn nên chèn mã luồng do SDK IMA DAI cung cấp trước khi đưa ra yêu cầu. Trong trường hợp này, URL luồng sẽ bao gồm phần giữ chỗ ("[[STREAMID]]"), được thay thế bằng mã luồng trước khi đưa ra yêu cầu.
  • NETWORK_CODE: Mã mạng cho tài khoản Ad Manager 360 của bạn.
  • CUSTOM_ASSET_KEY (Chỉ dùng cho sự kiện phát trực tiếp): Khoá thành phần tuỳ chỉnh xác định sự kiện phân phát nhóm của bạn trong Ad Manager 360. Bạn có thể tạo tệp này bằng người chỉnh sửa tệp kê khai hoặc đối tác phân phát nhóm của bên thứ ba.
  • API_KEY (Chỉ dùng cho sự kiện phát trực tiếp): Một khoá API không bắt buộc có thể cần thiết để truy xuất mã luồng từ SDK IMA DAI.

Hãy thay đổi phần biến của ví dụ này sao cho khớp với phần sau:

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

Tạo yêu cầu luồng trực tiếp hoặc VOD

Phân phát nhóm trong sự kiện phát trực tiếp

Sửa đổi phương thức requestStream để tạo yêu cầu phát trực tiếp nhóm trực tiếp bằng cách tạo thực thể cho 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)
  }

  ...

Phân phát nhóm luồng VOD

Sửa đổi phương thức requestStream để tạo yêu cầu phát trực tuyến nhóm VOD bằng cách tạo thực thể cho 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)
  }

  ...

Chỉnh sửa và đặt URL của luồng

Phân phát nhóm trong sự kiện phát trực tiếp

Sửa đổi các phương thức IMAAdsLoaderDelegate, sử dụng streamManager.streamId để lấy mã nhận dạng luồng. Sau đó, chèn mã luồng vào STREAM_URL, thay thế "[[STREAMID]]". Sau khi thực hiện thay đổi này, bạn có thể đặt URL của luồng mới bằng cách sử dụng 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
  }

  ...

Phân phát nhóm luồng VOD

Sửa đổi các phương thức IMAAdsLoaderDelegate, sử dụng streamManager.streamId để lấy mã nhận dạng luồng. Sau đó, hãy yêu cầu một URL phát trực tiếp từ đối tác công nghệ video (VTP) và gọi IMAStreamManager.loadThirdPartyStream() để yêu cầu IMA tải URL của luồng và mọi phụ đề do TVP trả về.

  ...

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

Vậy là xong! Bạn hiện đang yêu cầu và hiển thị quảng cáo trong luồng phân phát nhóm bằng SDK IMA DAI cho tvOS. Để xem các ví dụ khác về cách sử dụng SDK IMA DAI, hãy tìm mẫu trên GitHub.