This guide shows you how to integrate a mediation adapter with your Flutter 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.
Initialize the Mobile Ads SDK
The quick start guide shows you how to initialize the 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 ensure 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.
void main() {
WidgetsFlutterBinding.ensureInitialized();
MobileAds.instance.initialize()
.then((initializationStatus) {
initializationStatus.adapterStatuses.forEach((key, value) {
debugPrint('Adapter status for $key: ${value.description}');
});
});
runApp(MyApp());
}
Update your gradle settings (Android only)
Add the following lines to your settings.gradle
file, so you can use the
plugin's Android APIs:
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withInputStream { stream -> plugins.load(stream) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
Add dependencies for partner networks
The mediation adapters and their dependencies need to be added to your Android
and iOS projects. They can be added by updating your app level build.gradle
file on Android and Podfile
on iOS. Google has open source adapters in GitHub
for both
Android
and
iOS.
See the Android and iOS documentation for each partner network for detailed guidance of how to add their adapter in your app.
Check which ad network adapter class loaded the ad
The following sample code demonstrates how to log the ad network class name for a banner ad:
final bannerAd = AdManagerBannerAd(
size: [AdSize.banner],
adUnitId: '<your-ad-unit>',
listener: AdManagerBannerAdListener(
onAdLoaded: (ad) {
debugPrint('$ad loaded: ${ad.responseInfo?.mediationAdapterClassName}');
},
),
request: AdManagerAdRequest(),
);
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.
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.