google_admob_sdk 0.0.1 copy "google_admob_sdk: ^0.0.1" to clipboard
google_admob_sdk: ^0.0.1 copied to clipboard

A Flutter plugin for Google Mobile Ads (AdMob) with centralized Ad Unit ID management, load duration metrics, adKey tracking, and pre-built ad widgets & managers.

Google AdMob SDK for Flutter #

A comprehensive, production-ready Flutter SDK wrapper for Google Mobile Ads (google_mobile_ads) with built-in Ad Unit ID management per platform, load time performance tracking, Firebase Analytics integration, and pre-built ad widgets & managers.


Features #

  • Easy Initialization: Initialize Google Mobile Ads with custom or test configuration in a single line.
  • 🎯 Ad ID Management: Centralized AdIdConfig for Android & iOS with fallback to Google official test IDs.
  • 📊 Performance & Event Analytics: Built-in AdAnalyticsLogger supporting FirebaseAdLogger, ConsoleAdLogger, or custom loggers to track ad load duration (ms), impressions, clicks, and load failures.
  • 🖼️ Banner Ad Widget: BannerAdWidget widget with automatic state management, loading indicators, and error fallbacks.
  • 🎬 Interstitial Ad Manager: InterstitialAdManager with preloading, auto-reload on dismiss/fail, and lifecycle management.
  • 🎁 Rewarded Ad Manager: RewardedAdManager for incentivized video ads with reward callbacks.
  • 🚪 App Open Ad Manager: AppOpenAdManager with built-in ad expiration check (4 hours max age per Google guidelines).

Getting Started #

1. Add Dependency #

Add google_admob_sdk to your pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  google_admob_sdk:
    path: ../google_admob_sdk # Or git / pub package path

2. Platform Configuration #

Android Setup (AndroidManifest.xml)

Add your AdMob App ID inside the <application> tag:

<manifest>
    <application>
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-3940256099942544~3347511713"/> <!-- Test App ID -->
    </application>
</manifest>

iOS Setup (Info.plist)

Add GADApplicationIdentifier to ios/Runner/Info.plist:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string> <!-- Test App ID -->
<key>SKAdNetworkItems</key>
<array>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>cstr6suwn9.skadnetwork</string>
    </dict>
</array>

Usage #

1. SDK Initialization #

Initialize GoogleAdmobSdk in your main() function:

import 'package:flutter/material.dart';
import 'package:google_admob_sdk/google_admob_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await GoogleAdmobSdk.initialize(
    config: AdIdConfig(
      android: const PlatformAdIds(
        bannerId: 'ca-app-pub-xxx/android_banner',
        interstitialId: 'ca-app-pub-xxx/android_interstitial',
        rewardedId: 'ca-app-pub-xxx/android_rewarded',
        appOpenId: 'ca-app-pub-xxx/android_app_open',
      ),
      ios: const PlatformAdIds(
        bannerId: 'ca-app-pub-xxx/ios_banner',
        interstitialId: 'ca-app-pub-xxx/ios_interstitial',
        rewardedId: 'ca-app-pub-xxx/ios_rewarded',
        appOpenId: 'ca-app-pub-xxx/ios_app_open',
      ),
    ),
    logger: FirebaseAdLogger(), // Log performance metrics to Firebase Analytics
    enableConsoleLog: true,     // Print ad load duration and events in debug console
    testDeviceIds: ['YOUR_TEST_DEVICE_ID'],
  );

  runApp(const MyApp());
}

2. Banner Ad Widget #

Embed BannerAdWidget directly into your widget tree, optionally specifying adKey:

const BannerAdWidget(
  adKey: 'home_bottom_banner',
  adSize: AdSize.banner,
  // Optional callbacks
  onAdLoaded: (ad) => print('Banner Loaded'),
  onAdFailedToLoad: (error) => print('Banner Failed: $error'),
)

3. Interstitial Ad #

Use InterstitialAdManager to load and present interstitial ads with an optional adKey:

class MyScreenState extends State<MyScreen> {
  final _interstitialManager = InterstitialAdManager();

  @override
  void initState() {
    super.initState();
    // Preload Interstitial Ad with a custom placement key
    _interstitialManager.loadAd(adKey: 'level_complete_interstitial');
  }

  void _showAd() {
    if (_interstitialManager.isAdLoaded) {
      _interstitialManager.showAd(
        onAdDismissedFullScreenContent: () {
          print('Interstitial closed');
        },
      );
    }
  }

  @override
  void dispose() {
    _interstitialManager.dispose();
    super.dispose();
  }
}

4. Rewarded Ad #

Use RewardedAdManager to grant user rewards with an optional adKey:

class MyRewardScreenState extends State<MyRewardScreen> {
  final _rewardedManager = RewardedAdManager();

  @override
  void initState() {
    super.initState();
    _rewardedManager.loadAd(adKey: 'extra_lives_rewarded');
  }

  void _showRewardedAd() {
    if (_rewardedManager.isAdLoaded) {
      _rewardedManager.showAd(
        onUserEarnedReward: (ad, reward) {
          print('User earned: ${reward.amount} ${reward.type}');
        },
      );
    }
  }

  @override
  void dispose() {
    _rewardedManager.dispose();
    super.dispose();
  }
}

5. App Open Ad #

Use AppOpenAdManager for app startup or resume ads with an optional adKey:

final appOpenManager = AppOpenAdManager();

// Load App Open Ad
await appOpenManager.loadAd(adKey: 'app_launch_open_ad');

// Show ad when available (automatically checks 4-hour max age limit)
if (appOpenManager.isAdAvailable) {
  await appOpenManager.showAdIfAvailable();
}

Analytics & Performance Logging (adKey & key_<ad_type>) #

google_admob_sdk automatically measures ad loading times and logs events:

  • ad_load_performance: Duration in milliseconds (load_duration_ms), success status, error codes.
  • ad_impression_logged: Fired on ad impressions.
  • ad_click_logged: Fired on user ad clicks.

When you pass an adKey parameter (e.g. 'home_bottom_banner'), the SDK automatically passes both ad_key and dynamic key_<ad_type> parameters to Firebase Analytics:

Parameter Name in Analytics Value Example Description
ad_key 'home_bottom_banner' Generic ad placement key
key_banner 'home_bottom_banner' Type-specific key for Banner ads
key_interstitial 'level_complete_interstitial' Type-specific key for Interstitial ads
key_rewarded 'extra_lives_rewarded' Type-specific key for Rewarded ads
key_appOpen 'app_launch_open_ad' Type-specific key for App Open ads

You can use FirebaseAdLogger(), ConsoleAdLogger(), or implement AdAnalyticsLogger for custom tracking solutions.

0
likes
0
points
241
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for Google Mobile Ads (AdMob) with centralized Ad Unit ID management, load duration metrics, adKey tracking, and pre-built ad widgets & managers.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

firebase_analytics, firebase_core, flutter, google_mobile_ads

More

Packages that depend on google_admob_sdk

Packages that implement google_admob_sdk