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

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

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

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

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

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

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

پیش‌نیازها

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

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

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

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

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

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

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

روش 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 را با نمونه‌سازی 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 را ببینید.