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