راه‌اندازی کیت توسعه نرم‌افزار IMA برای DAI

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

کیت‌های توسعه نرم‌افزار IMA ادغام آگهی‌های چندرسانه‌ای را در وب‌سایت‌ها و برنامه‌هایتان آسان می‌کند. کیت‌های توسعه نرم‌افزار IMA می‌توانند از هر سرور آگهی سازگار با VAST درخواست آگهی کنند و بازپخش آگهی را در برنامه‌هایتان مدیریت کنند. با کیت‌های توسعه نرم‌افزار IMA DAI، برنامه‌ها درخواست جاری‌سازی برای آگهی و ویدیو محتوا—چه VOD و چه محتوای زنده—ایجاد می‌کنند. سپس کیت توسعه نرم‌افزار یک جاری‌سازی ویدیویی ترکیبی را برمی‌گرداند تا مجبور نباشید جابه‌جایی بین آگهی و محتوای ویدیویی را در برنامه‌تان مدیریت کنید.

راهکار «درج آگهی پویا» موردنظرتان را انتخاب کنید

ارائه DAI توسط واحد

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

نمای کلی ارائه واحد IMA DAI

پیاده‌سازی «ارائه واحد آگهی» بااستفاده از «کیت توسعه نرم‌افزار IMA DAI» برای tvOS شامل دو عنصر اصلی است:

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

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

پیش‌نیازها

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

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

متغیرهای «ارائه واحد آگهی» را راه‌اندازی کنید

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

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

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

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

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