This guide shows you how to integrate a mediation adapter with your Android app.
Prerequisites
Before you can integrate mediation for an ad format, you need to integrate that ad format into your app:
New to mediation? Read Introduction to mediation.
For bidding: Google Mobile Ads SDK 18.3.0 or higher.
Initialize Google Mobile Ads SDK
The quick start guide shows you how to initialize the Google Mobile Ads SDK . During that initialization call, mediation adapters also get initialized. It is important to wait for initialization to complete before you load ads in order to verify full participation from every ad network on the first ad request.
The following sample code shows how you can check each adapter's initialization status prior to making an ad request.
Java
public void initialize(Context context) {
new Thread(
() ->
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(context, this::logAdapterStatus))
.start();
}
private void logAdapterStatus(InitializationStatus initializationStatus) {
// Check each adapter's initialization status.
Map<String, AdapterStatus> statusMap = initializationStatus.getAdapterStatusMap();
for (Map.Entry<String, AdapterStatus> entry : statusMap.entrySet()) {
String adapterClass = entry.getKey();
AdapterStatus status = entry.getValue();
Log.d(
TAG,
String.format(
"Adapter name: %s, Description: %s, Latency: %d",
adapterClass, status.getDescription(), status.getLatency()));
}
}
Kotlin
fun initialize(context: Context) {
CoroutineScope(Dispatchers.IO).launch {
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(context, ::logAdapterStatus)
}
}
private fun logAdapterStatus(initializationStatus: InitializationStatus) {
// Check each adapter's initialization status.
for ((adapterClass, status) in initializationStatus.adapterStatusMap) {
Log.d(
TAG,
"Adapter: $adapterClass, Status: ${status.description}, Latency: ${status.latency}ms",
)
}
}
Check which ad network adapter class loaded the ad
Here is some sample code that logs the ad network class name for a banner ad:
Java
Java
ResponseInfo responseInfo = ad.getResponseInfo();
String adapterClassName = null;
if (responseInfo != null) {
adapterClassName = responseInfo.getMediationAdapterClassName();
}
Log.d(TAG, "Adapter class name: " + adapterClassName);
Kotlin
Log.d(TAG, "Adapter class name:" + ad.responseInfo?.mediationAdapterClassName)
Refer to the ResponseInfo
documentation on getMediationAdapterClassName()
for details about this method.
Initialize your ad object with an Activity instance
In the constructor for a new ad object (for example,
AdManagerAdView
),
you must pass in an object of type
Context
.
This Context
is passed on to other ad networks when using mediation. Some
ad networks require a more restrictive Context
that is of type
Activity
and may not be able to serve ads without an Activity
instance. Therefore,
we recommend passing in an Activity
instance when initializing ad objects
to verify a consistent experience with your mediated ad networks.
Use banner ads with mediation
Make sure to disable refresh in all third-party ad source UIs for banner ad units used in mediation. This prevents a double refresh since Ad Manager also triggers a refresh based on your banner ad unit's refresh rate.
Use native ads with mediation
The following are some best practices to consider when implementing native mediation.
- Native ad presentation policy
- Each ad network has its own policies. When using mediation, it's important to remember that your app still needs to abide by the policies of the mediated network that provided the ad.
- Use
loadAd()
instead ofloadAds()
- The
loadAds()
method serves only Google ads. For mediated ads, useloadAd()
instead.
US states privacy laws and GDPR
If you need to comply with the U.S. states privacy laws or General Data Protection Regulation (GDPR), follow the steps in US state regulations settings or GDPR settings to add your mediation partners in Ad Manager Privacy & messaging's US states or GDPR ad partners list. Failure to do so can lead to partners failing to serve ads on your app.
Learn more about enabling restricted data processing (RDP) and obtaining GDPR consent with the Google User Messaging Platform (UMP) SDK.