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

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

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

پاد در حال ارائه DAI

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

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

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

  • StreamRequest : شیئی که یک درخواست جریان را به سرورهای تبلیغاتی Google تعریف می کند. برای فعال کردن سرویس دهی باید با استفاده از 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، راهنمای شروع سریع را ببینید.

متغیرهای سرویس غلاف خود را تنظیم کنید

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

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

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