راه‌اندازی با درج آگهی پویا در سرویس Pod

انتخاب پلاتفرم: HTML5 Android iOS tvOS Cast Roku

این راهنما نشان می‌دهد که چگونه بااستفاده از «کیت توسعه نرم‌افزار IMA DAI» برای tvOS با پخش‌کننده ویدیو، جاری‌سازی زنده یا «ویدیو به‌درخواست» «ارائه پاد» DAI را پخش کنید. برای مشاهده یا دنبال کردن یک ادغام نمونه تکمیل‌شده، برنامه نمونه Pod Serving را بارگیری کنید (Obj C یا Swift).

نمای کلی «ارائه پاد درج آگهی پویا» در IMA

پیاده‌سازی «ارائه غلاف» بااستفاده از IMA DAI SDK برای tvOS شامل دو مؤلفه اصلی است:

  • StreamRequest: شیئی که درخواست جاری‌سازی را برای سرورهای تبلیغاتی Google تعریف می‌کند. برای فعال کردن «ارائه Pod»، باید بااستفاده از IMAPodStreamRequest یا IMAPodVODStreamRequest ایجاد شده باشد. هر دو روش به کد شبکه نیاز دارند و IMAPodStreamRequest به کلید دارایی سفارشی نیز نیاز دارد. کلید میانای برنامه‌سازی کاربردی اختیاری است.

  • IMAStreamManager: شیئی که ارتباط بین جاری‌سازی ویدیو و کیت توسعه نرم‌افزار درج آگهی پویا در آگهی‌های رسانه‌ای تعاملی را مدیریت می‌کند، مثلاً پینگ‌های ردیابی را فعال می‌کند و رویدادهای جاری‌سازی را به ناشر بازارسال می‌کند.

پیش‌نیازها

قبل‌از شروع، به موارد زیر نیاز دارید:

  • ‫Xcode نسخه ۱۳ یا بالاتر.
  • روش نصب کیت توسعه نرم‌افزار آگهی‌های رسانه‌ای تعاملی:
  • یک برنامه tvOS که قبلاً با IMA DAI SDK راه‌اندازی شده است تا جریان‌های ویدیویی را با آگهی‌های DAI پخش کند. اگر هنوز چنین برنامه‌ای ندارید، توصیه می‌کنیم از tvOS DAI BasicExample به‌عنوان نقطه شروع استفاده کنید. BasicExample دارای پایگاه کد ارجاع‌شده در این راهنما است. برای اطلاعات بیشتر درباره نحوه پیاده‌سازی IMA DAI SDK، به راهنمای شروع سریع مراجعه کنید.

متغیرهای «ارائه پاد» را راه‌اندازی کنید

همه تغییرات مربوط به «ارائه پاد» را در ViewController.swift در Swift یا ViewController.m در Objective-C انجام دهید. قطعه‌های موجود در این راهنما به‌طور پیش‌فرض از زبان Swift استفاده می‌کنند. اولین قدم به‌روزرسانی متغیرهای ثابت است.

ثابت‌های درخواست جاری‌سازی دسته آگهی زیر را اضافه کنید:

  • STREAM_URL (فقط برای جاری‌سازی‌های زنده استفاده می‌شود): نشانی وب جاری‌سازی ویدیو که توسط دستکاری‌کننده مانیفست شما یا شریک طرف سوم بااستفاده از «ارائه پاد» ارائه شده است. باید از شما بخواهد شناسه جاری‌سازی ارائه‌شده توسط IMA DAI SDK را قبل‌از ارسال درخواست وارد کنید. دراین‌صورت، نشانی وب جاری‌سازی حاوی یک جای‌بان، "[[STREAMID]]"، است که قبل‌از درخواست، آن را با شناسه جاری‌سازی جایگزین می‌کنید.
  • NETWORK_CODE: کد شبکه برای حساب Ad Manager 360 شما.
  • CUSTOM_ASSET_KEY (فقط برای جاری‌سازی‌های زنده استفاده می‌شود): کلید دارایی سفارشی که رویداد «ارائه Pod» شما را در Ad Manager 360 شناسایی می‌کند. دستکاری‌کننده مانیفست یا شریک «ارائه پاد» طرف سوم شما می‌تواند این را ایجاد کند.
  • API_KEY (فقط برای جاری‌سازی‌های زنده استفاده می‌شود): کلید میانای برنامه‌سازی کاربردی اختیاری که می‌تواند برای بازیابی شناسه جاری‌سازی از کیت توسعه نرم‌افزار IMA DAI لازم باشد.

بخش متغیر نمونه را تغییر دهید تا با موارد زیر مطابقت داشته باشد:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl = ""
  static let networkCode = ""
  static let customAssetKey = ""
  static let APIKey = ""
  static let backupStreamURLString = ""

  var adsLoader: IMAAdsLoader?
  ...

درخواست جاری‌سازی زنده یا VOD pod ایجاد کنید

ارائه پاد جاری‌سازی زنده

روش 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)
  }

  ...

ارائه پاد جاری‌سازی ویدیو به‌درخواست

روش 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)
  }

  ...

ویرایش و تنظیم نشانی وب جاری‌سازی

ارائه پاد جاری‌سازی زنده

روش‌های IMAAdsLoaderDelegate را بااستفاده از streamManager.streamId برای دریافت شناسه جاری‌سازی اصلاح کنید. سپس شناسه جاری‌سازی را در STREAM_URL وارد کنید و آن را جایگزین "[[STREAMID]]" کنید. پس‌از انجام این تغییر، نشانی وب جاری‌سازی جدید را بااستفاده از 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
  }

  ...

ارائه پاد جاری‌سازی ویدیو به‌درخواست

روش‌های IMAAdsLoaderDelegate را بااستفاده از streamManager.streamId برای دریافت شناسه جاری‌سازی اصلاح کنید. سپس، نشانی وب جاری‌سازی را از شریک فناوری ویدیویی (VTP) خود درخواست کنید و IMAStreamManager.loadThirdPartyStream() را فراخوانی کنید تا IMA نشانی وب جاری‌سازی و هرگونه زیرنویس بازگردانده‌شده توسط 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
  }

پاک‌سازی دارایی‌های IMA DAI

وقتی درخواست و نمایش آگهی‌ها را در یک Pod Serving stream با IMA DAI SDK با موفقیت به پایان رساندید، پیشنهاد می‌کنیم پس‌از تکمیل جلسه Pod Serving، منابع را پاک کنید. برای متوقف کردن بازپخش جاری‌سازی، متوقف کردن همه ردگیری‌های آگهی، و آزاد کردن همه دارایی‌های جاری‌سازی بارشده، IMAStreamManager.destroy() را فراخوانی کنید.

برای دیدن نمونه‌های دیگر استفاده از tvOS SDK، نمونه‌ها را در GitHub ببینید.