معالجة طلبات إعلانات متعددة

اختيار النظام الأساسي: HTML5 Android iOS tvOS

لا تتطلّب معظم استخدامات "حزمة تطوير البرامج لإعلانات الوسائط التفاعلية" سوى إدارة طلب إعلان واحد في كل مرة. ومع ذلك، قد تتطلّب بعض حالات الاستخدام، مثل التحميل المُسبَق لبيانات الإعلان قبل أن يختار المستخدم فيديو، تقديم طلبات متزامنة متعددة. بما أنّ طلبات الإعلانات يتم إجراؤها بشكل غير متزامن، قد يبدو ضمان ربط "مدير الإعلانات" المناسب بالسياق الصحيح مهمة شاقة.

لتبسيط عملية التمييز بين العديد من مدراء الإعلانات، تتيح حزمة تطوير البرامج للإعلانات التفاعلية على 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)
}

...