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

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

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

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

...