رویدادهای سفارشی تبلیغات بینابینی

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS

پیش‌نیازها

تنظیمات رویدادهای سفارشی را تکمیل کنید.

درخواست تبلیغ بینابینی

وقتی به ردیف رویداد سفارشی در زنجیره میانجی آبشاری (waterfall mediation chain) می‌رسید، متد loadInterstitialAd() بر اساس نام کلاسی که هنگام ایجاد یک رویداد سفارشی ارائه کرده‌اید، فراخوانی می‌شود. در این حالت، آن متد در SampleCustomEvent قرار دارد که سپس متد loadInterstitialAd() را در SampleInterstitialCustomEventLoader فراخوانی می‌کند.

برای درخواست یک تبلیغ بینابینی، کلاسی ایجاد یا اصلاح کنید که Adapter برای پیاده‌سازی loadInterstitialAd() به ارث می‌برد. علاوه بر این، یک کلاس جدید برای پیاده‌سازی MediationInterstitialAd ایجاد کنید.

در مثال رویداد سفارشی ما، SampleCustomEvent کلاس Adapter ارث‌بری می‌کند و سپس آن را به SampleInterstitialCustomEventLoader واگذار می‌کند.

جاوا

package com.google.ads.mediation.sample.customevent;

import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.MediationAdConfiguration;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationInterstitialAd;
import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback;
...

public class SampleCustomEvent extends Adapter {
  private SampleInterstitialCustomEventLoader interstitialLoader;
  @Override
  public void loadInterstitialAd(
      @NonNull MediationInterstitialAdConfiguration adConfiguration,
      @NonNull
          MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback>
              callback) {
    interstitialLoader = new SampleInterstitialCustomEventLoader(adConfiguration, callback);
    interstitialLoader.loadAd();
  }
}

SampleInterstitialCustomEventLoader مسئول انجام وظایف زیر است:

  • بارگذاری تبلیغ بینابینی و فراخوانی متد MediationAdLoadCallback پس از اتمام بارگذاری.

  • پیاده‌سازی رابط MediationInterstitialAd .

  • دریافت و گزارش فراخوانی‌های رویداد تبلیغات به SDK تبلیغات موبایلی گوگل.

پارامتر اختیاری تعریف شده در رابط کاربری AdMob در پیکربندی تبلیغات گنجانده شده است. این پارامتر از طریق adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD) قابل دسترسی است. این پارامتر معمولاً یک شناسه واحد تبلیغاتی است که یک SDK شبکه تبلیغاتی هنگام نمونه‌سازی یک شیء تبلیغاتی به آن نیاز دارد.

جاوا

package com.google.ads.mediation.sample.customevent;

import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.MediationInterstitialAdConfiguration;
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
import com.google.android.gms.ads.mediation.MediationInterstitialAd;
import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback;
...

public class SampleInterstitialCustomEventLoader extends SampleAdListener
    implements MediationInterstitialAd {

  /** A sample third-party SDK interstitial ad. */
  private SampleInterstitial sampleInterstitialAd;

  /** Configuration for requesting the interstitial ad from the third-party network. */
  private final MediationInterstitialAdConfiguration mediationInterstitialAdConfiguration;

  /** Callback for interstitial ad events. */
  private MediationInterstitialAdCallback interstitialAdCallback;

  /** Callback that fires on loading success or failure. */
  private final MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback>
      mediationAdLoadCallback;

  /** Constructor. */
  public SampleInterstitialCustomEventLoader(
      @NonNull MediationInterstitialAdConfiguration mediationInterstitialAdConfiguration,
      @NonNull MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback>
              mediationAdLoadCallback) {
    this.mediationInterstitialAdConfiguration = mediationInterstitialAdConfiguration;
    this.mediationAdLoadCallback = mediationAdLoadCallback;
  }

  /** Loads the interstitial ad from the third-party ad network. */
  public void loadAd() {
    // All custom events have a server parameter named "parameter" that returns
    // back the parameter entered into the UI when defining the custom event.
    Log.i("InterstitialCustomEvent", "Begin loading interstitial ad.");
    String serverParameter = mediationInterstitialAdConfiguration.getServerParameters().getString(
        MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD);
    Log.d("InterstitialCustomEvent", "Received server parameter.");

    sampleInterstitialAd =
        new SampleInterstitial(mediationInterstitialAdConfiguration.getContext());
    sampleInterstitialAd.setAdUnit(serverParameter);

    // Implement a SampleAdListener and forward callbacks to mediation.
    sampleInterstitialAd.setAdListener(this);

    // Make an ad request.
    Log.i("InterstitialCustomEvent", "start fetching interstitial ad.");
    sampleInterstitialAd.fetchAd(
        SampleCustomEvent.createSampleRequest(mediationInterstitialAdConfiguration));
  }

public SampleAdRequest createSampleRequest(
      MediationAdConfiguration mediationAdConfiguration) {
    SampleAdRequest request = new SampleAdRequest();
    request.setTestMode(mediationAdConfiguration.isTestRequest());
    request.setKeywords(mediationAdConfiguration.getMediationExtras().keySet());
    return request;
  }
}

بسته به اینکه آیا تبلیغ با موفقیت دریافت می‌شود یا با خطا مواجه می‌شود، می‌توانید onSuccess() یا onFailure() را فراخوانی کنید. onSuccess() با ارسال نمونه‌ای از کلاسی که MediationInterstitialAd پیاده‌سازی می‌کند، فراخوانی می‌شود.

معمولاً این متدها درون فراخوانی‌های برگشتی از SDK شخص ثالثی که آداپتور شما پیاده‌سازی می‌کند، پیاده‌سازی می‌شوند. برای این مثال، Sample SDK دارای یک SampleAdListener با فراخوانی‌های مربوطه است:

جاوا

@Override
public void onAdFetchSucceeded() {
  interstitialAdCallback = mediationAdLoadCallback.onSuccess(this);
}

@Override
public void onAdFetchFailed(SampleErrorCode errorCode) {
  mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode));
}

MediationInterstitialAd برای نمایش تبلیغ نیاز به پیاده‌سازی متد showAd() دارد:

جاوا

@Override
public void showAd(@NonNull Context context) {
  sampleInterstitialAd.show();
}

رویدادهای میانجیگری را به SDK تبلیغات موبایلی گوگل منتقل کنید

پس از فراخوانی onSuccess() ، شیء MediationInterstitialAdCallback برگردانده شده می‌تواند توسط آداپتور برای ارسال رویدادهای ارائه از SDK شخص ثالث به SDK تبلیغات موبایل گوگل استفاده شود. کلاس SampleInterstitialCustomEventLoader رابط SampleAdListener را برای ارسال تماس‌های برگشتی از شبکه تبلیغات نمونه به SDK تبلیغات موبایل گوگل بسط می‌دهد.

مهم است که رویداد سفارشی شما تا حد امکان این فراخوانی‌های برگشتی را ارسال کند، به طوری که برنامه شما این رویدادهای معادل را از SDK تبلیغات موبایلی گوگل دریافت کند. در اینجا مثالی از استفاده از فراخوانی‌های برگشتی آورده شده است:

جاوا

@Override
public void onAdFullScreen() {
  interstitialAdCallback.reportAdImpression();
  interstitialAdCallback.onAdOpened();
}

@Override
public void onAdClosed() {
  interstitialAdCallback.onAdClosed();
}

این، پیاده‌سازی رویدادهای سفارشی برای تبلیغات بینابینی را تکمیل می‌کند. مثال کامل در GitHub موجود است. می‌توانید از آن با یک شبکه تبلیغاتی که از قبل پشتیبانی می‌شود استفاده کنید یا آن را برای نمایش تبلیغات بینابینی با رویدادهای سفارشی تغییر دهید.