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

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

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

برای ساده کردن فرایند متمایز کردن چند مدیر آگهی، IMA SDK برای 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)
}

...