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

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

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

برای ساده کردن فرایند متمایز کردن چندین مدیر آگهی، «کیت توسعه نرم‌افزار IMA برای iOS» به ناشران اجازه می‌دهد هر مقدار یا شیئی را به فیلد 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)
}

...