Setup

Custom events let you add waterfall mediation for an ad network that isn't a supported ad network. You do this by implementing a custom event adapter for the ad network you want to integrate.

You can find a full sample custom event project in our GitHub repo.

Prerequisites

Before you can create custom events, you must first integrate one of the following ad format into your app:

Create a custom event in the UI

A custom event must first be created in the AdMob UI. See the instructions in Add a custom event.

You need to supply the following:

Class Name

The fully-qualified name of the class that implements the custom event adapter—for example, com.google.ads.mediation.sample.customevent.SampleCustomEvent. As a best practice, we recommend using a single adapter class for all custom event ad formats.

Label

A unique name defining the ad source.

Parameter

An optional string argument passed to your custom event adapter.

Initialize the adapter

When the Google Mobile Ads SDK initializes, initialize() is invoked on all supported third-party adapters and custom events configured for the app within the AdMob UI. Use this method to perform any necessary setup or initialization on the required third-party SDK for your custom event.

Java

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

import com.google.android.gms.ads.AdFormat;
import com.google.android.gms.ads.mediation.Adapter;
import com.google.android.gms.ads.mediation.InitializationCompleteCallback;
import com.google.android.gms.ads.mediation.MediationConfiguration;
...

public class SampleAdNetworkCustomEvent extends Adapter {

    private static final String SAMPLE_AD_UNIT_KEY = "parameter";

    private InitializationCompleteCallback initializationCallback;

    @Override
    public void initialize(Context context,
            InitializationCompleteCallback initializationCompleteCallback,
            List<MediationConfiguration> mediationConfigurations) {
        // This is where you will initialize the SDK that this custom
        // event is built for. Upon finishing the SDK initialization,
        // call the completion handler with success.
        initializationCompleteCallback.onInitializationSucceeded();
    }
}

Report version numbers

All custom events must report to the Google Mobile Ads SDK both the version of the custom event adapter itself and the version of the third-party SDK the custom event interfaces with. Versions are reported as VersionInfo objects:

Java

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

public class SampleCustomEvent extends Adapter {

  @Override
  public VersionInfo getVersionInfo() {
    String versionString = new VersionInfo(1, 2, 3);
    String[] splits = versionString.split("\\.");

    if (splits.length >= 4) {
      int major = Integer.parseInt(splits[0]);
      int minor = Integer.parseInt(splits[1]);
      int micro = Integer.parseInt(splits[2]) * 100 + Integer.parseInt(splits[3]);
      return new VersionInfo(major, minor, micro);
    }

    return new VersionInfo(0, 0, 0);
  }

  @Override
  public VersionInfo getSDKVersionInfo() {
    String versionString = SampleAdRequest.getSDKVersion();
    String[] splits = versionString.split("\\.");

    if (splits.length >= 3) {
      int major = Integer.parseInt(splits[0]);
      int minor = Integer.parseInt(splits[1]);
      int micro = Integer.parseInt(splits[2]);
      return new VersionInfo(major, minor, micro);
    }

    return new VersionInfo(0, 0, 0);
  }
}

Request ad

To request an ad, refer to the instructions specific to the ad format: