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

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

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

برای ساده کردن فرایند متمایز کردن چندین مدیر آگهی، «کیت توسعه نرم‌افزار IMA برای Android» به ناشران اجازه می‌دهد هر مقدار یا شیئی را به فیلد UserRequestContext هر درخواست آگهی ارسال کنند. سپس می‌توان این مقدار یا شیء را بااستفاده از روش getUserRequestContext() در مدیریت‌کننده AdsManagerLoadedEvent بازیابی کرد.

مثال

...

adsLoader = sdkFactory.createAdsLoader(context, imaSdkSettings, adDisplayContainer);

Map<String, String> userContextA = new HashMap<String, String>();
Map<String, String> userContextB = new HashMap<String, String>();
userContextA.put("id", "Request A");
userContextB.put("id", "Request B");
userContextA.put("element", "videoElementA");
userContextB.put("element", "videoElementB");
adRequestA.setUserRequestContext(userContextA);
adRequestB.setUserRequestContext(userContextB);

adsLoader.addAdsLoadedListener(
    new AdsLoader.AdsLoadedListener() {
      @Override
      public void onAdsManagerLoaded(AdsManagerLoadedEvent adsManagerLoadedEvent) {
        Map<String, String> context = adsManagerLoadedEvent.getUserRequestContext();
        adsManager = adsManagerLoadedEvent.getAdsManager();
        Log.i("ImaExample", "Successfully loaded ID: " + context.get("id"));
      }
    });

adsLoader.addAdErrorListener(
    new AdErrorEvent.AdErrorListener() {
      @Override
      public void onAdError(AdErrorEvent adErrorEvent) {
        Map<String, String> context = adErrorEvent.getUserRequestContext();
        Log.i("ImaExample", "Error with AdRequest. ID: " + context.get("id"));
        Log.i("ImaExample", "Ad Error: " + adErrorEvent.getError().getMessage());
      }
    });

adsLoader.requestAds(adRequestA);
adsLoader.requestAds(adRequestB);

...