AdMob Mediation is a feature that lets you serve ads to your apps from multiple sources, including the AdMob Network, third-party ad networks, and AdMob campaigns. AdMob Mediation helps maximize your fill rate and increase your monetization by sending ad requests to multiple networks to ensure you find the best available network to serve ads.
This guide is your one stop shop for integrating mediation into your AdMob app.
Prerequisites
Before you can integrate mediation for an ad format, you need to integrate that ad format into your app:
Choosing your mediation networks
Google mediation supports over 30 third-party ad networks. Integrating mediation requires changes in these places:
- Third-party ad network UI - Sign up for the third-party ad network and create a placement in their frontend.
- AdMob UI - Update your ad unit's mediation settings to include the ad network. It is also recommended that you set up ad network optimization for ad networks that support it.
- App code - Update your app to include the third-party ad network's SDK, and an adapter library that communicates between Google and the third-party ad network to request and serve ads.
To begin, select an ad network from the below, and it will guide you through these changes.
Ad Network | Banner | Interstitial | Rewarded Video | Native Advanced | ANO support |
---|---|---|---|---|---|
Open source and versioned | |||||
AdColony | Country-specific | ||||
AppLovin | Country-specific | ||||
Chartboost | Country-specific | ||||
Country-specific | |||||
InMobi | Country-specific | ||||
IronSource | None | ||||
maio | Global | ||||
MoPub | Country-specific | ||||
myTarget | None | ||||
nend | Global | ||||
Tapjoy | Country-specific | ||||
Unity Ads | Country-specific | ||||
Vungle | Country-specific | ||||
Non-open source | |||||
AdFalcon | Country-specific | ||||
CrossChannel (MdotM) | Country-specific | ||||
Flurry | Country-specific | ||||
Fuse Powered | None | ||||
Fyber | Country-specific | ||||
HUNT Mobile Ads | None | ||||
i-mobile | Global | ||||
Leadbolt | Country-specific | ||||
LifeStreet | Country-specific | ||||
LG U+AD | None | ||||
MobFox | Global | ||||
ONE by AOL | Global | ||||
TapIt by Phunware | Global | ||||
Tencent GDT | None | ||||
Tremor Video | None | ||||
Vdopia | Global | ||||
Vpon | None | ||||
Zucks | Country-specific |
Open source and versioned adapters
If an adapter is labeled with "Open source and versioned" in the above table, it means the adapter source code is open-sourced in Google's GitHub repository, enabling you to debug issues yourself should you choose to do so.
It also means that there are versioned adapter builds in Google's bintray repository, built against a specific version of the third-party ad network SDK. You can also compile these adapters into your app with a single line change to your app's Podfile. Click on a specific ad network's guide for more details.
Adapter versioning
The adapter versioning scheme for versioned adapters is <third-party
SDK version>.<adapter patch version>
. For example, if an
ad network releases a new SDK version 1.2.3
, a new adapter version 1.2.3.0
will be released to Bintray after being tested against that new SDK.
If an adapter needs updating outside the lifecycle of a third-party SDK release,
the patch version will increase. A bug fix for adapter version 1.2.3.0
will
be released in version 1.2.3.1
.
ANO support
When you configure multiple ad networks for mediation, you have to specify what order to request these networks by setting their respective CPM. This can be difficult to manage, since ad network performance changes over time.
Ad network optimization (ANO) is a feature that enables you to generate the highest CPM from the ad networks in your mediation chain by automating the process of ordering the mediation chain to maximize revenue.The mediation networks table above has the following values for ANO support:
ANO support | What it means |
---|---|
Country-specific |
eCPM values are automatically updated on your behalf on a per-country basis. This is the optimal type of optimization. |
Global |
A single global eCPM value is automatically updated on your behalf. |
None |
You must manually configure an eCPM value for that ad network. |
Click on a specific ad network's guide for details on how to configure ANO for that network.
Deprecated ad networks
Remove deprecated ad networks from your mediation placements. See Delete an ad network from mediation for instructions.
Deprecated ad networks |
---|
Adfonic |
AdRally |
AMoAd |
Amobee |
AppFlood |
Appsfire |
BrightRoll |
Domob |
Drawbridge |
iAd |
Jumptap |
LiquidM |
Medialets |
Mojiva |
Pontiflex |
Rhythm NewMedia |
Vserv |
Custom events
If you're looking for an ad network and don't see it on the list above, you can use custom events to write your own integration with that ad network. See Custom Events for more details on how to create a custom event.
Check the value of adNetworkClassName
Each ad format class has an adNetworkClassName
property that returns the class
name of the ad network that fetched the current ad. This property only has a
value once an ad successfully loads.
For Google ads, the adNetworkClassName
property returns
GADMAdapterGoogleAdMobAds
. Ads fetched via custom events return
GADMAdapterCustomEvents
for all ad formats except rewarded video. For
rewarded video, the custom event's class name is returned.
Here is some sample code that logs the ad network class name for each ad format.
Banner
Swift
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
print("Banner adapter class name: \(bannerView.adNetworkClassName)")
}
Objective-C
- (void)adViewDidReceiveAd:(GADBannerView *)bannerView {
NSLog(@"Banner adapter class name: %@", bannerView.adNetworkClassName);
}
Interstitial
Swift
func interstitialDidReceiveAd(_ interstitial: GADInterstitial) {
print("Interstitial adapter class name: \(interstitial.adNetworkClassName)")
}
Objective-C
- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial {
NSLog(@"Interstitial adapter class name: %@", interstitial.adNetworkClassName);
}
Rewarded Video
Swift
func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
print("Rewarded video adapter class name: \(rewardBasedVideoAd.adNetworkClassName)")
}
Objective-C
-(void)rewardBasedVideoAdDidReceiveAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
NSLog(@"Rewarded video adapter class name: %@", rewardBasedVideoAd.adNetworkClassName);
}
Native
Swift
func adLoader(_ adLoader: GADAdLoader,
didReceive nativeAppInstallAd: GADNativeAppInstallAd) {
print("Native adapter class name: \(nativeAppInstallAd.adNetworkClassName)")
}
Objective-C
-(void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAppInstallAd:(GADNativeAppInstallAd *)nativeAppInstallAd {
NSLog(@"Native adapter class name: %@", nativeAppInstallAd.adNetworkClassName);
}
Passing location to mediation networks
The Google Mobile Ads SDK does not forward location information to mediation networks unless you explicitly provide it in the ad request. See the targeting guide for details on how to provide location information in the ad request.
Banner ads mediation
Make sure to disable refresh in all third-party ad networks UI for banner ad units used in AdMob mediation. This will prevent a double refresh since AdMob also triggers a refresh based on your banner ad unit's refresh rate.
Native ads mediation
The following are some best practices to consider when implementing native mediation.
Request both system-defined formats
The Mobile Ads SDK allows you to specify a preference for app install ads, content ads, or both for each request. However, not every mediated network offers both of these formats, and some are unable to filter by format. In order to make sure that ad requests have the best chance of being filled, it's highly recommended that apps request both formats when loading native ads and include rendering code that can display either one.
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.
AdChoices
The Mobile Ads SDK automatically places the AdChoices logo for you. Mediation adapters are also responsible for placing the AdChoices logo if applicable, so you don't need to take any action to display an AdChoices asset in your app.