مدیریت چندین درخواست آگهی

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

اکثر موارد استفاده از کیت توسعه نرم‌افزار IMA فقط به مدیریت یک درخواست آگهی در هر زمان نیاز دارند. بااین‌حال، برخی‌از پیاده‌سازی‌های موارد حاشیه‌ای، مانند پیش‌بار کردن داده‌های آگهی قبل‌از انتخاب ویدیو توسط کاربر، ممکن است نیاز به ایجاد چندین درخواست هم‌زمان داشته باشند. ازآنجایی‌که درخواست‌های آگهی به‌صورت ناهمزمان انجام می‌شوند، اطمینان از اینکه مدیر آگهی مناسب با زمینه صحیح مرتبط است می‌تواند کار دشواری به‌نظر برسد.

برای ساده کردن فرایند متمایز کردن چندین مدیر آگهی، «کیت توسعه نرم‌افزار IMA برای tvOS» به ناشران اجازه می‌دهد هر مقدار یا شیئی را به فیلد UserContext هر درخواست آگهی اضافه کنند. سپس می‌توان این مقدار یا شیء را در تابع نماینده AdsLoader:AdsLoadedWithData ازطریق مشخصه userContext شیء IMAAdsLoadedData بازیابی کرد.

مثال

...
  adsLoader = IMAAdsLoader(settings: nil)
  adsLoader.delegate = self

  let userContextA = {id: "Request A", element: videoElementA}
  let userContextB = {id: "Request B", element: videoElementB}
  let requestA = IMAAdsRequest(
        adTagUrl: ViewController.AdTagURLString,
        adDisplayContainer: adDisplayContainer,
        contentPlayhead: contentPlayhead,
        userContext: userContextA)
  let requestB = IMAAdsRequest(
        adTagUrl: ViewController.AdTagURLString,
        adDisplayContainer: adDisplayContainer,
        contentPlayhead: contentPlayhead,
        userContext: userContextB)
  adsLoader.requestAds(with: requestA)
  adsLoader.requestAds(with: requestB)

...

// MARK: - IMAAdsLoaderDelegate

func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
  let userContext = adsLoadedData.userContext
  print("Loaded ads for ID: " + userContext.id)
  adsManager = adsLoadedData.adsManager
  adsManager.initialize(with: nil)
}

func adsLoader(_ loader: IMAAdsLoader!, failedWith adErrorData: IMAAdLoadingErrorData!) {
  let userContext = adsLoadingErrorData.userContext
  print("Error loading ads for ID: " + userContext.id)
}

...