با IMA DAI SDK شروع کنید

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

راه حل DAI مورد علاقه خود را انتخاب کنید

سرویس پاد DAI

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

نمای کلی سرویس IMA DAI Pod

اجرای Pod Serving با استفاده از IMA DAI SDK برای tvOS شامل دو جزء اصلی است:

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

  • IMAStreamManager : شی‌ای که ارتباط بین جریان ویدئو و IMA DAI SDK را مدیریت می‌کند، مانند شلیک پینگ‌های ردیابی و ارسال رویدادهای جریان به ناشر.

پیش نیازها

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

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

متغیرهای Pod Serving خود را تنظیم کنید

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

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

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

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

...
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 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)
  }

  ...

سرویس پاد استریم VOD

روش requestStream را برای ایجاد یک درخواست جریان pod 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 جریان را ویرایش و تنظیم کنید

پخش زنده پاد

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

برای دریافت شناسه جریان، روش‌های IMAAdsLoaderDelegate را با استفاده از streamManager.streamId تغییر دهید. سپس، از شریک فناوری ویدیوی خود (VTP) یک 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
  }

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

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

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

،

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

راه حل DAI مورد علاقه خود را انتخاب کنید

سرویس پاد DAI

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

نمای کلی سرویس IMA DAI Pod

اجرای Pod Serving با استفاده از IMA DAI SDK برای tvOS شامل دو جزء اصلی است:

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

  • IMAStreamManager : شی‌ای که ارتباط بین جریان ویدئو و IMA DAI SDK را مدیریت می‌کند، مانند شلیک پینگ‌های ردیابی و ارسال رویدادهای جریان به ناشر.

پیش نیازها

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

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

متغیرهای Pod Serving خود را تنظیم کنید

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

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

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

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

...
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 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)
  }

  ...

سرویس پاد استریم VOD

روش requestStream را برای ایجاد یک درخواست جریان pod 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 جریان را ویرایش و تنظیم کنید

پخش زنده پاد

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

برای دریافت شناسه جریان، روش‌های IMAAdsLoaderDelegate را با استفاده از streamManager.streamId تغییر دهید. سپس، از شریک فناوری ویدیوی خود (VTP) یک 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
  }

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

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

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