clever_ads_solutions 0.5.1 copy "clever_ads_solutions: ^0.5.1" to clipboard
clever_ads_solutions: ^0.5.1 copied to clipboard

The CAS.AI Flutter plugin allows you to easily monetize your apps for iOS and Android using lot of Ads SDKs in mediation.

example/lib/main.dart

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

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final GlobalKey<BannerViewState> _bannerViewKey = GlobalKey();
  MediationManager? manager;
  CASBannerView? view;
  bool _isReady = false;

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Clever Ads Solutions Example App'),
        ),
        body: Center(
          child: SingleChildScrollView(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                ElevatedButton(
                  child: const Text('Initialize'),
                  onPressed: () => initialize(),
                ),
                if (_isReady)
                  BannerView(
                    key: _bannerViewKey,
                    size: AdSize.Banner,
                    isAutoloadEnabled: true,
                    refreshInterval: 20,
                    listener: BannerListener(size: AdSize.Banner),
                  ),
                if (_isReady)
                  ElevatedButton(
                    child: const Text('Load next add on upper widget'),
                    onPressed: () => _bannerViewKey.currentState?.loadNextAd(),
                  ),
                ElevatedButton(
                  child: const Text('Show interstitial'),
                  onPressed: () => showInterstitial(),
                ),
                if (_isReady)
                  BannerView(
                    size: AdSize.Leaderboard,
                    isAutoloadEnabled: true,
                    refreshInterval: 20,
                    listener: BannerListener(size: AdSize.Leaderboard),
                  ),
                ElevatedButton(
                  child: const Text('Show rewarded'),
                  onPressed: () => showRewarded(),
                ),
                if (_isReady)
                  BannerView(
                    size: AdSize.MediumRectangle,
                    isAutoloadEnabled: true,
                    refreshInterval: 20,
                    listener: BannerListener(size: AdSize.MediumRectangle),
                  ),
                ElevatedButton(
                  child: const Text('Create standart banner'),
                  onPressed: () => createStandartBanner(),
                ),
                ElevatedButton(
                  child: const Text('Create adaptive banner'),
                  onPressed: () => createAdaptiveBanner(),
                ),
                ElevatedButton(
                  child: const Text('Change banner position to top'),
                  onPressed: () => changeBannerTop(),
                ),
                ElevatedButton(
                  child: const Text('Change banner to bottom'),
                  onPressed: () => changeBannerBottom(),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }

  Future<void> initialize() async {
    CAS.setDebugMode(true);

    //CAS.validateIntegration();

    ManagerBuilder builder = CAS
        .buildManager()
        .withTestMode(true)
        .withCasId("example")
        .withAdTypes(AdTypeFlags.Banner |
            AdTypeFlags.Rewarded |
            AdTypeFlags.Interstitial)
        .withInitializationListener(InitializationListenerWrapper());

    manager = builder.initialize();
    bool isReady = await getInterStatus();
    debugPrint("isReady $isReady");
    setState(() {
      _isReady = manager != null;
    });
  }

  Future<bool> getInterStatus() async {
    bool isReady = false;
    final manager = this.manager;
    if (manager != null) {
      isReady = await manager.isInterstitialReady();
    }
    return isReady;
  }

  Future<void> showInterstitial() async {
    bool isReady = await getInterStatus();
    debugPrint("isReady $isReady");
    manager?.showInterstitial(InterstitialListenerWrapper());
  }

  Future<void> showRewarded() async {
    manager?.showRewarded(InterstitialListenerWrapper());
  }

  Future<void> createAdaptiveBanner() async {
    view = manager?.getAdView(AdSize.Adaptive);
    view?.setAdListener(BannerListener());
    view?.setBannerPosition(AdPosition.TopCenter);
    view?.showBanner();
  }

  Future<void> createStandartBanner() async {
    view = manager?.getAdView(AdSize.Banner);
    view?.setAdListener(BannerListener());
    view?.showBanner();
    view?.setBannerPositionWithOffset(25, 100);
  }

  void changeBannerTop() {
    view?.setBannerPosition(AdPosition.TopCenter);
  }

  void changeBannerBottom() {
    view?.setBannerPosition(AdPosition.BottomCenter);
  }
}

class InitializationListenerWrapper extends InitializationListener {
  @override
  void onCASInitialized(InitConfig config) {}
}

class InterstitialListenerWrapper extends AdCallback {
  @override
  void onClicked() {}

  @override
  void onClosed() {}

  @override
  void onComplete() {}

  @override
  void onImpression(AdImpression? adImpression) {}

  @override
  void onShowFailed(String? message) {}

  @override
  void onShown() {}
}

class BannerListener extends AdViewListener {
  AdSize? size;

  BannerListener({this.size});

  @override
  void onAdViewPresented() {
    debugPrint("Banner ${size.toString()} ad was presented!");
  }

  @override
  void onClicked() {
    debugPrint("Banner ${size.toString()} ad was pressed!");
  }

  @override
  void onFailed(String? message) {
    debugPrint("Banner ${size.toString()} error! $message");
  }

  @override
  void onImpression(AdImpression? adImpression) {
    debugPrint("Banner ${size.toString()} impression: $adImpression");
  }

  @override
  void onLoaded() {
    debugPrint("Banner ${size.toString()} ad was loaded!");
  }
}

class LoadCallback extends AdLoadCallback {
  @override
  void onAdFailedToLoad(AdType adType, String? error) {}

  @override
  void onAdLoaded(AdType adType) {}
}
12
likes
0
points
880
downloads

Publisher

unverified uploader

Weekly Downloads

The CAS.AI Flutter plugin allows you to easily monetize your apps for iOS and Android using lot of Ads SDKs in mediation.

Repository (GitHub)
View/report issues

Topics

#ads #android #ios

Documentation

Documentation

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on clever_ads_solutions