initialize static method
Before creating any native ads, you must initalize the admob. This can be done only once, ideally at app launch. If you try to initialize it more than once, an AssertionError is thrown
void main() async {
MobileAds.initialize();
runApp(MyApp());
}
This method must be called in the main thread/isolate
You can find a complete example here
For more info on intialization, read the documentation
Implementation
static Future<void> initialize({
String? nativeAdUnitId,
String? bannerAdUnitId,
String? interstitialAdUnitId,
String? rewardedAdUnitId,
String? appOpenAdUnitId,
String? rewardedInterstitialAdUnitId,
bool? useHybridComposition,
}) async {
assertPlatformIsSupported();
WidgetsFlutterBinding.ensureInitialized();
assert(
!isInitialized,
'''The mobile ads sdk is already initialized. It can be initialized only once
Check if it's initialized before trying to initialize it using `MobileAds.isInitialized`
For more info on initialization, visit https://github.com/bdlukaa/native_admob_flutter/wiki/Initialize#initialize-the-mobile-ads-sdk''',
);
// Ad Ids
MobileAds.nativeAdUnitId ??= nativeAdUnitId ?? nativeAdTestUnitId;
_debugCheckIsTestId(MobileAds.nativeAdUnitId, [
nativeAdTestUnitId,
nativeAdVideoTestUnitId,
]);
MobileAds.bannerAdUnitId ??= bannerAdUnitId ?? bannerAdTestUnitId;
_debugCheckIsTestId(MobileAds.bannerAdUnitId, [bannerAdTestUnitId]);
MobileAds.interstitialAdUnitId ??=
interstitialAdUnitId ?? interstitialAdTestUnitId;
_debugCheckIsTestId(MobileAds.interstitialAdUnitId, [
interstitialAdTestUnitId,
interstitialAdVideoTestUnitId,
]);
MobileAds.rewardedAdUnitId ??= rewardedAdUnitId ?? rewardedAdTestUnitId;
_debugCheckIsTestId(MobileAds.rewardedAdUnitId, [rewardedAdTestUnitId]);
MobileAds.appOpenAdUnitId ??= appOpenAdUnitId ?? appOpenAdTestUnitId;
_debugCheckIsTestId(MobileAds.appOpenAdUnitId, [appOpenAdTestUnitId]);
MobileAds.rewardedInterstitialAdUnitId =
rewardedInterstitialAdUnitId ?? rewardedInterstitialAdTestUnitId;
_debugCheckIsTestId(MobileAds.rewardedInterstitialAdUnitId, [
rewardedInterstitialAdTestUnitId,
]);
// Make sure the version is supported
_version = (await _pluginChannel.invokeMethod<int>('initialize'))!;
assertVersionIsSupported(false);
if (Platform.isAndroid) {
// hybrid composition is enabled in android 19 and can't be disabled
MobileAds.useHybridComposition =
osVersion == 19 ? true : useHybridComposition ?? false;
if (osVersion >= 29 && MobileAds.useHybridComposition) {
print(
'It is NOT recommended to use hybrid composition on Android 10 or greater. '
'It has some performance drawbacks',
);
}
} else {
if (!(useHybridComposition ?? true))
print(
'Virtual display is not avaiable on iOS. Using hybrid composition',
);
}
_initialized = true;
}