simple_ads_manager

Google Mobile Ads (AdMob) Made Simple for Flutter

A clean, centralized, and production-ready ads manager for Flutter apps using Google Mobile Ads ( AdMob).


✅ Platform Support

Android iOS

✨ Supported Ad Formats

Ad Type Preload Support Revenue Callback Lifecycle Aware
Banner Inline
Native (Template) Inline
Interstitial Manual
Rewarded Manual
Rewarded Interstitial Manual
App Open Foreground
Auto App Open Automatic

✨ Features

  • Banner Ads
  • Native Ads (Template-based)
  • Interstitial Ads (Preload support)
  • Rewarded Ads
  • Rewarded Interstitial Ads
  • App Open Ads
  • Auto App Open (Lifecycle-based)
  • Revenue callbacks
  • Availability checks
  • Cooldown control

📦 Installation

dependencies:
  simple_ads_manager: ^0.0.2

Run:

flutter pub get

⚙️ Setup

1️⃣ Add AdMob App ID

Android → AndroidManifest.xml


<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="REPLACE_WITH_YOUR_ANDROID_APP_ID" />

iOS → Info.plist


<key>GADApplicationIdentifier</key><string>REPLACE_WITH_YOUR_IOS_APP_ID</string>

2️⃣ Initialize SDK

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SimpleAdsManager.instance.init();
  runApp(const MyApp());
}

3️⃣ Optional: Enable Test Ads

SimpleAdsManager.alwaysTestADs = true;

🔥 Usage


🟢 Banner Ad

SimpleAdsManager.instance.banner
(
adUnitId
:
"
ca-app-pub-xxxxxxxxxxxxxxxx/banner-id
"
,
);

🟢 Native Ad

SimpleAdsManager.instance.nativeAd
(
adUnitId: "ca-app-pub-xxxxxxxxxxxxxxxx/native-id",
nativeTemplateStyle: NativeTemplateStyle(
templateType:
TemplateType
.
medium
,
)
,
);

Preload

SimpleAdsManager.instance.preloadInterstitial
(
adUnitId
:
"
ca-app-pub-xxxxxxxxxxxxxxxx/interstitial-id
"
,
);

Show

SimpleAdsManager.instance.showPreloadedInterstitial
(
context: context,
adUnitId: "ca-app-pub-xxxxxxxxxxxxxxxx/interstitial-id",
onDismiss: (shown) {},
);

🟢 Rewarded

SimpleAdsManager.instance.loadAndShowRewarded
(
adUnitId: "ca-app-pub-xxxxxxxxxxxxxxxx/rewarded-id",
context: context,
onCompleted: (reward, earned) {},
);

🟢 Rewarded Interstitial

SimpleAdsManager.instance.loadAndShowRewardedInterstitial
(
adUnitId: "ca-app-pub-xxxxxxxxxxxxxxxx/rewarded-interstitial-id",
context: context,
);

🟢 App Open

SimpleAdsManager.instance.loadAndShowAppOpen
(
adUnitId: "ca-app-pub-xxxxxxxxxxxxxxxx/app-open-id",
context: context,
);

🟢 Auto App Open (Best Practice)

SimpleAdsManager.instance.showAppStateAppOpen
(
adUnitId: "ca-app-pub-xxxxxxxxxxxxxxxx/app-open-id",
context: context,
);

🧠 Check Ad Availability


bool ready =
    SimpleAdsManager.instance.isInterstitialReady;

💡 Best Practices

  • Initialize SDK before showing ads.
  • Preload fullscreen ads for better UX.
  • Avoid showing ads back-to-back.
  • Use natural transition points.
  • Always use test ads during development.
  • Follow AdMob policies strictly.

👨‍💻 Author

Eng. Zeeshan Ali
Senior Software Engineer
Flutter • Android • iOS
Google Mobile Ads Specialist


📄 License

MIT License © 2025 Zeeshan Ali

Libraries

simple_ads_manager