premium_ads_v2 1.0.0 copy "premium_ads_v2: ^1.0.0" to clipboard
premium_ads_v2: ^1.0.0 copied to clipboard

PremiumAds Google AdMob Adapter V2 — Flutter plugin for mediation through PremiumAds.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:premium_ads_v2/premium_ads_v2.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'PremiumAds Adapter V2 Example',
      theme: ThemeData.dark(),
      home: const AdsHome(),
    );
  }
}

class AdsHome extends StatefulWidget {
  const AdsHome({super.key});

  @override
  State<AdsHome> createState() => _AdsHomeState();
}

class _AdsHomeState extends State<AdsHome> {
  // AdMob ad unit IDs (replace with your own)
  static const String _bannerAdUnitId = 'ca-app-pub-2142338037257831/5013815038';
  static const String _interstitialAdUnitId = 'ca-app-pub-2142338037257831/1616542060';
  static const String _rewardedAdUnitId = 'ca-app-pub-2142338037257831/6768646189';
  static const String _rewardedInterstitialAdUnitId = 'ca-app-pub-2142338037257831/9846792399';
  static const String _appOpenAdUnitId = 'ca-app-pub-2142338037257831/3283026116';

  BannerAd? _bannerAd;
  InterstitialAd? _interstitialAd;
  RewardedAd? _rewardedAd;
  RewardedInterstitialAd? _rewardedInterstitialAd;
  AppOpenAd? _appOpenAd;

  bool _sdkInitialized = false;
  final List<String> _logs = [];

  @override
  void initState() {
    super.initState();
    _initSdk();
  }

  Future<void> _initSdk() async {
    _log('Initializing Google Mobile Ads SDK...');

    // Enable PremiumAds adapter debug logging
    await PremiumAdsV2.setDebug(true);

    final status = await MobileAds.instance.initialize();
    _log('MobileAds initialized.');
    status.adapterStatuses.forEach((name, st) {
      _log('$name | ${st.state}');
    });

    setState(() => _sdkInitialized = true);
    _log('Ready! Tap a button to load ads.');
  }

  void _log(String msg) {
    final ts = TimeOfDay.now().format(context).padLeft(8);
    setState(() => _logs.insert(0, '[$ts] $msg'));
  }

  void _loadBanner() {
    _log('Loading banner...');
    _bannerAd?.dispose();
    _bannerAd = BannerAd(
      adUnitId: _bannerAdUnitId,
      size: AdSize.banner,
      request: const AdRequest(),
      listener: BannerAdListener(
        onAdLoaded: (_) => _log('Banner loaded'),
        onAdFailedToLoad: (_, err) => _log('Banner failed: ${err.message}'),
        onAdImpression: (_) => _log('Banner impression'),
        onAdClicked: (_) => _log('Banner clicked'),
      ),
    )..load();
    setState(() {});
  }

  void _loadInterstitial() {
    _log('Loading interstitial...');
    InterstitialAd.load(
      adUnitId: _interstitialAdUnitId,
      request: const AdRequest(),
      adLoadCallback: InterstitialAdLoadCallback(
        onAdLoaded: (ad) {
          _log('Interstitial loaded');
          _interstitialAd = ad;
          ad.fullScreenContentCallback = FullScreenContentCallback(
            onAdShowedFullScreenContent: (_) => _log('Interstitial shown'),
            onAdDismissedFullScreenContent: (ad) {
              _log('Interstitial dismissed');
              ad.dispose();
            },
          );
          ad.show();
        },
        onAdFailedToLoad: (err) => _log('Interstitial failed: ${err.message}'),
      ),
    );
  }

  void _loadRewarded() {
    _log('Loading rewarded...');
    RewardedAd.load(
      adUnitId: _rewardedAdUnitId,
      request: const AdRequest(),
      rewardedAdLoadCallback: RewardedAdLoadCallback(
        onAdLoaded: (ad) {
          _log('Rewarded loaded');
          _rewardedAd = ad;
          ad.fullScreenContentCallback = FullScreenContentCallback(
            onAdShowedFullScreenContent: (_) => _log('Rewarded shown'),
            onAdDismissedFullScreenContent: (ad) {
              _log('Rewarded dismissed');
              ad.dispose();
            },
          );
          ad.show(onUserEarnedReward: (_, reward) {
            _log('Earned reward: ${reward.amount} ${reward.type}');
          });
        },
        onAdFailedToLoad: (err) => _log('Rewarded failed: ${err.message}'),
      ),
    );
  }

  void _loadRewardedInterstitial() {
    _log('Loading rewarded interstitial...');
    RewardedInterstitialAd.load(
      adUnitId: _rewardedInterstitialAdUnitId,
      request: const AdRequest(),
      rewardedInterstitialAdLoadCallback: RewardedInterstitialAdLoadCallback(
        onAdLoaded: (ad) {
          _log('Rewarded interstitial loaded');
          _rewardedInterstitialAd = ad;
          ad.fullScreenContentCallback = FullScreenContentCallback(
            onAdShowedFullScreenContent: (_) => _log('Rewarded interstitial shown'),
            onAdDismissedFullScreenContent: (ad) {
              _log('Rewarded interstitial dismissed');
              ad.dispose();
            },
          );
          ad.show(onUserEarnedReward: (_, reward) {
            _log('Earned reward: ${reward.amount} ${reward.type}');
          });
        },
        onAdFailedToLoad: (err) => _log('Rewarded interstitial failed: ${err.message}'),
      ),
    );
  }

  void _loadAppOpen() {
    _log('Loading app open...');
    AppOpenAd.load(
      adUnitId: _appOpenAdUnitId,
      request: const AdRequest(),
      adLoadCallback: AppOpenAdLoadCallback(
        onAdLoaded: (ad) {
          _log('App open loaded');
          _appOpenAd = ad;
          ad.fullScreenContentCallback = FullScreenContentCallback(
            onAdShowedFullScreenContent: (_) => _log('App open shown'),
            onAdDismissedFullScreenContent: (ad) {
              _log('App open dismissed');
              ad.dispose();
            },
          );
          ad.show();
        },
        onAdFailedToLoad: (err) => _log('App open failed: ${err.message}'),
      ),
    );
  }

  @override
  void dispose() {
    _bannerAd?.dispose();
    _interstitialAd?.dispose();
    _rewardedAd?.dispose();
    _rewardedInterstitialAd?.dispose();
    _appOpenAd?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('PremiumAds Adapter V2 Example')),
      body: SafeArea(
        child: Column(
          children: [
            Expanded(
              child: SingleChildScrollView(
                padding: const EdgeInsets.all(8),
                child: Column(
                  children: [
                    _btn('Load Banner', _loadBanner),
                    _btn('Load Interstitial', _loadInterstitial),
                    _btn('Load Rewarded', _loadRewarded),
                    _btn('Load Rewarded Interstitial', _loadRewardedInterstitial),
                    _btn('Load App Open', _loadAppOpen),
                    if (_bannerAd != null)
                      Container(
                        margin: const EdgeInsets.only(top: 8),
                        height: _bannerAd!.size.height.toDouble(),
                        child: AdWidget(ad: _bannerAd!),
                      ),
                    const SizedBox(height: 8),
                    Container(
                      width: double.infinity,
                      padding: const EdgeInsets.all(8),
                      color: Colors.black26,
                      constraints: const BoxConstraints(minHeight: 200),
                      child: Text(
                        _logs.isEmpty ? 'Logs...' : _logs.join('\n'),
                        style: const TextStyle(fontFamily: 'monospace', fontSize: 11),
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }

  Widget _btn(String label, VoidCallback onPressed) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 4),
      child: SizedBox(
        width: double.infinity,
        height: 40,
        child: ElevatedButton(
          onPressed: _sdkInitialized ? onPressed : null,
          child: Text(label),
        ),
      ),
    );
  }
}
0
likes
140
points
72
downloads

Documentation

API reference

Publisher

verified publisherpremiumads.net

Weekly Downloads

PremiumAds Google AdMob Adapter V2 — Flutter plugin for mediation through PremiumAds.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on premium_ads_v2

Packages that implement premium_ads_v2