ad_turbo

ad_turbo 以简单快捷的方式实现 Google Ads,支持所有类型的 Google Ads、原生广告(Android)、横幅广告、应用打开广告、插页式广告、应用打开广告、激励广告、激励插页式广告和原生视频广告(Android)到 Flutter 应用中。

给包打上 ? ? 并为仓库点赞 ? 以支持该项目

轻松将广告集成到您的 Flutter 应用中。

功能

Google 移动广告

  • 横幅广告
  • 插页式广告
  • 激励广告
  • 激励插页式广告
  • 应用打开广告
  • 原生小广告、原生广告、原生视频(仅限 Android)

入门

  • 将此依赖项添加到您的 pubspec.yaml 文件中

dependencies:
  ad_turbo: "<LATEST_VERSION>"

平台特定设置

Android

在 \android\app\build.gradle 文件中将 minSdkVersion 设置为 19

android {
    defaultConfig {   
        MinSdkVersion 19
    }                 
   }

应用需要 Multidex 支持

在 \android\app\build.gradle 文件中将 multiDexEnabled 设置为 true

android {
    defaultConfig {   
        multiDexEnabled true
    }                 
   }

更新 AndroidManifest.xml

在应用的 /android/app/src/main/AndroidManifest.xml 文件中,添加此项。

<manifest>
    <application>
         <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
       <meta-data
           android:name="com.google.android.gms.ads.APPLICATION_ID"
           android:value="ca-app-pub-3940256099942544~3347511713"/>
    </application>
</manifest>
这是一个测试 ID,您需要添加您的 admob ID 以获得真实广告:android:value=”ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy”

AdMob 应用 ID 必须包含在 AndroidManifest.xml 中。否则,应用启动时将崩溃。

iOS

更新您的 Info.plist

在应用的 ios/Runner/Info.plist 文件中,添加一个 GADApplicationIdentifier 键,其字符串值为您的 AdMob 应用 ID。

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~3347511713</string>
这是一个测试 ID,您需要添加您的 admob ID 以获得真实广告:ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy

有关将 Google 移动广告 SDK 集成到 Flutter 应用中的更多信息,请参阅 此指南

文档

ad_turbo 实现

初始化插件

您需要在您的 main 函数中添加此项,以便将插件广告集成到您的应用的主 dart 文件中。

import 'package:ad_turbo/ad_turbo.dart';

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

adTurbo() async{
  await AdTurbo.init();
  await AdTurbo.adTurboTestDevice(testDeviceIds: "BC754A812958EE7FF20599662417762B");
}

AdHelper

您可以为平台特定的 google mob id 创建 adhelper “

import 'dart:io' show Platform;

class AdTurboAdHelper {

  static String get bannerAdUnitId {
    if (Platform.isAndroid) {
      return "ca-app-pub-3940256099942544/6300978111";
    } else if (Platform.isIOS) {
      return "ca-app-pub-3940256099942544/2934735716";
    } else {
      throw new UnsupportedError("Unsupported platform");
    }
  }

  static String get appOpenAdUnitId {
    if (Platform.isAndroid) {
      return "ca-app-pub-3940256099942544/3419835294";
    } else if (Platform.isIOS) {
      return "ca-app-pub-3940256099942544/5662855259";
    } else {
      throw new UnsupportedError("Unsupported platform");
    }
  }
 }

有关如何指定 AdHelper 的更多详细信息,请在此处查看 ad_turbo AdTurboAdHelper 的示例:此处

横幅广告

####- 要实现横幅广告,您需要初始化 BannerAdTurbo

 final _bannerAdTurbo = BannerAdTurbo();

####- 加载横幅广告有一个函数 loadBannerAdTurbo

   loadAd() async{
    await _bannerAdTurbo.loadBannerAdTurbo(
        adUnitId: AdTurboAdHelper.bannerAdUnitId);
        }

####- 加载后,您可以通过此获取 bannerAd。

  • banner Ad 将作为小部件获取

_bannerAdTurbo.getBannerAdTurbo();

有关如何实现 BannerAd 的更多详细信息,请在此处查看 ad_turbo bannerAd 的示例:此处

插页式广告

####- 要实现插页式广告,您需要初始化 InterstitialAdTurbo

 final _interstitialAdTurbo = InterstitialAdTurbo();

####- 加载插页式广告有一个函数 loadInterstitialAdTurbo

   loadAd() async{
    await _interstitialAdTurbo.loadInterstitialAdTurbo(
            adUnitId: AdTurboAdHelper.interstitialAdUnitId);
        }

####- 加载插页式广告后,您可以通过此函数获取插页式广告。

  • 插页式广告可以点击打开
  • 您还可以获取插页式广告的回调函数

ElevatedButton(onPressed: ()async{

          await _interstitialAdTurbo.interstitialAd?.show();
          await _interstitialAdTurbo.interstitialCallback();
      },
      
child: const Text("InterstitialAd")),

有关如何实现插页式广告的更多详细信息,请在此处查看 ad_turbo interstitialAd 的示例:此处

激励广告

####- 要实现激励广告,您需要初始化 RewardedAdTurbo

   final _rewardedAdTurbo = RewardedAdTurbo();

####- 加载激励广告有一个函数 loadRewardedAdTurbo

   loadAd() async{
    await _rewardedAdTurbo.loadRewardedAdTurbo(
            adUnitId: AdTurboAdHelper.rewardedAdUnitId);
        }

####- 加载激励广告后,您可以通过此函数获取激励广告。

  • 激励广告可以点击打开
  • 您还可以获取激励广告的回调函数

ElevatedButton(onPressed: ()async{

          await _rewardedAdTurbo.rewardedAd.show();
          await _rewardedAdTurbo.rewardedCallback();
      },
      
child: const Text("RewardedAd")),

有关如何实现激励广告的更多详细信息,请在此处查看 ad_turbo RewardedAd 的示例:[此处]

(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/rewarded_ad_turbo.dart)。

激励插页式广告

####- 要实现激励插页式广告,您需要初始化 RewardedInterstitialAdTurbo

  final _rewardedInterstitialAdTurbo = RewardedInterstitialAdTurbo();

####- 加载激励插页式广告有一个函数 loadRewardedInterstitialAdTurbo

   loadAd() async{
    await _rewardedInterstitialAdTurbo.loadRewardedInterstitialAdTurbo
			(adUnitId: AdTurboAdHelper.rewardedInterstitial);
        }

####- 加载激励插页式广告后,您可以通过此函数获取激励插页式广告。

  • 激励插页式广告可以点击打开
  • 您还可以获取激励插页式广告的回调函数

ElevatedButton(onPressed: ()async{

          _rewardedInterstitialAdTurbo.rewardedInterstitial?.show();
          await _rewardedInterstitialAdTurbo.rewardedInterstitialCallback();
      },
      
child: const Text("RewardedInterstitialAd")),

有关如何实现激励插页式广告的更多详细信息,请在此处查看 ad_turbo RewardedInterstitial 的示例:[此处]

(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/rewarded_interstitial_ad_turbo.dart)。

应用打开广告

####- 要实现应用打开广告,您需要初始化 AppOpenAdTurbo

  final _appOpenAdTurbo = AppOpenAdTurbo();

####- 加载应用打开广告有一个函数 loadAppOpenAdTurbo

   loadAd() async{
    await _appOpenAdTurbo.loadAppOpenAdTurbo(
			(AdTurboAdHelper.appOpenAdUnitId);
        }

####- 加载应用打开广告后,您可以通过此函数获取应用打开广告。

  • 应用打开广告可以点击打开
  • 您还可以获取应用打开广告的回调函数

ElevatedButton(onPressed: ()async{

          await _appOpenAdTurbo.appOpenAd?.show();
           await _appOpenAdTurbo.appOpenCallback();
      },
      
child: const Text("AppOpenAd")),

有关如何实现应用打开广告的更多详细信息,请在此处查看 ad_turbo AppOpen 的示例:[此处]

(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/appOpen_ad_turbo.dart)。

原生广告

####- 要实现原生广告,您需要初始化 NativeAdTurbo

  final _nativeAdTurbo = NativeAdTurbo();

原生小广告

####- 加载原生小广告有一个函数 loadNativeSmallAdTurbo

   loadAd() async{
    await _nativeAdTurbo.loadNativeSmallAdTurbo(
			adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId);
        }

####- 加载原生小广告后,您可以像这样获取原生小广告小部件。

		Container(height: 102,child: _nativeAdTurbo.getNativeSmallAdTurbo())
  

有关如何实现原生小广告的更多详细信息,请在此处查看 ad_turbo NativeSmall 的示例:[此处]

(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/native_small_ad_turbo.dart)。

原生中广告

####- 加载原生中广告有一个函数 loadNativeMediumAdTurbo

   loadAd() async{
    await _nativeAdTurbo.loadNativeMediumAdTurbo(
			adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId);
        }

####- 加载原生中广告后,您可以像这样获取原生中广告小部件。

		Container(height: 255,child: _nativeAdTurbo.getNativeMediumAdTurbo())
  

有关如何实现原生中广告的更多详细信息,请在此处查看 ad_turbo NativeMedium 的示例:[此处]

(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/native_medium_ad_turbo.dart)。

原生视频广告

####- 加载原生视频广告有一个函数 loadNativeVideoAdTurbo

   loadAd() async{
    await loadNativeVideoAdTurbo(
	nativeVideoID: AdTurboAdHelper.nativeAdvancedVideoAdUnitId);
        }

####- 加载原生视频广告后,您可以像这样获取原生视频广告小部件。

		Container(height: 310,child: _nativeAdTurbo.getNativeVideoAdTurbo(context: context))
  

有关如何实现原生视频广告的更多详细信息,请在此处查看 ad_turbo NativeVideo 的示例:[此处]

(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/native_video_ad_turbo.dart)。

详细的加载函数

###- 这些函数必须在 init 方法中调用。

loadBannerAdTurbo

  loadAd() async{
    await _bannerAdTurbo.loadBannerAdTurbo(
        adUnitId: AdTurboAdHelper.bannerAdUnitId,
      // Called when an TurboBannerAd is successfully received.
      onAdLoaded: (ad) {
      log("ad_turbo_plugin : TurboBannerAd loaded");
        isBannerAdReady = true;
        setState((){});
      },
      // Called when an TurboBannerAd request failed.
      onAdFailedToLoad: (ad, error) {
        // Dispose the TurboBannerAd here to free resources.
        isBannerAdReady = false;
        ad.dispose();
        print('TurboBannerAd failed to load: $error');
        loadAd();
      },
      // Called when an TurboBannerAd opens an overlay that covers the screen.
      onAdOpened: (ad) => print('TurboBannerAd opened.'),

      // Called when an TurboBannerAd removes an overlay that covers the screen.
      onAdClosed: (ad) => print('TurboBannerAd closed.'),

      // Called when an impression occurs on the TurboBannerAd.
      onAdImpression: (ad) => print('TurboBannerAd impression.'),
        adSize: BannerAdTurbo.banner);
  }
  

loadInterstitialAdTurbo

  loadAd() async{
    await _interstitialAdTurbo.loadInterstitialAdTurbo(adUnitId: AdTurboAdHelper.interstitialAdUnitId,
      onAdLoaded: (ad) {
        print('$ad loaded.');
        // Keep a reference to the ad so you can show it later.
        _interstitialAdTurbo.interstitialAd = ad;
        isInterstitialAdReady = true;
      },
      onAdFailedToLoad: (error) {
        isInterstitialAdReady = false;
        print('Failed to load an interstitial ad: ${error.message}');
        loadAd();
      });

  }
  

loadRewardedAdTurbo

  loadAd() async{
    await _rewardedAdTurbo.loadRewardedAdTurbo(adUnitId: AdTurboAdHelper.rewardedAdUnitId,
        onAdLoaded: (ad) {
          print('$ad loaded.');
          // Keep a reference to the ad so you can show it later.
          _rewardedAdTurbo.rewardedAd = ad;
          isRewardedAdReady = true;
        },
        onAdFailedToLoad: (error) {
          isRewardedAdReady = false;
          print('RewardedAd failed to load: $error');
          loadAd();
        });
  }
  

loadRewardedInterstitialAdTurbo

  loadAd() async{
    await _rewardedInterstitialAdTurbo.loadRewardedInterstitialAdTurbo(adUnitId: AdTurboAdHelper.rewardedInterstitial,
        onAdLoaded: (ad) {
          print('$ad loaded.');
          // Keep a reference to the ad so you can show it later.
          _rewardedInterstitialAdTurbo.rewardedInterstitial = ad;
          isRewardedInterstitialAdReady = true;
        },
        onAdFailedToLoad: (error) {
          isRewardedInterstitialAdReady = false;
          print('RewardedInterstitialAd failed to load: $error');
          loadAd();
        });

  }
  

loadAppOpenAdTurbo

  loadAd() async{
    await _appOpenAdTurbo.loadAppOpenAdTurbo(
        adUnitId: AdTurboAdHelper.appOpenAdUnitId,
        orientation: AppOpenAdTurbo.orientationPortrait,
      onAdLoaded: (ad) {
        print('$ad loaded');
        _appOpenAdTurbo.appOpenAd = ad;
        isAppOpenAdAdReady = true;
      },
      onAdFailedToLoad: (error) {
        isAppOpenAdAdReady = false;
        print('AppOpenAd failed to load: $error');
        loadAd();
      },
    );
  }
  

loadNativeSmallAdTurbo

  loadAd() async{
    await _nativeAdTurbo.loadNativeSmallAdTurbo(
      adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId,
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          print('Ad loaded.');
          isNativeSmallAdReady = true;
          setState(()=>"");
        },
        // Called when an ad request failed.

        onAdFailedToLoad:(ad, error) {
          isNativeSmallAdReady = false;
          // Dispose the ad here to free resources.
          ad.dispose();
          print('Ad load failed (code=${error.code} message=${error.message})');
          loadAd();
        },
        // Called when an ad opens an overlay that covers the screen.
        onAdOpened: (ad) => print('Ad opened.'),
        // Called when an ad removes an overlay that covers the screen.
        onAdClosed: (ad) => print('Ad closed.'),
        // Called when an impression occurs on the ad.
        onAdImpression: (ad) => print('Ad impression.'),
        // Called when a click is recorded for a NativeAd.
        onNativeAdClicked: (ad) => print('Ad clicked.'));
  }
  

loadNativeMediumAdTurbo

  loadAd() async{
    await _nativeAdTurbo.loadNativeMediumAdTurbo(
        adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId,
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          print('Ad loaded.');
          isNativeMediumAdReady = true;
          setState(()=>"");
        },
        // Called when an ad request failed.

        onAdFailedToLoad:(ad, error) {
          isNativeMediumAdReady = false;
          // Dispose the ad here to free resources.
          ad.dispose();
          print('Ad load failed (code=${error.code} message=${error.message})');
          loadAd();
        },
        // Called when an ad opens an overlay that covers the screen.
        onAdOpened: (ad) => print('Ad opened.'),
        // Called when an ad removes an overlay that covers the screen.
        onAdClosed: (ad) => print('Ad closed.'),
        // Called when an impression occurs on the ad.
        onAdImpression: (ad) => print('Ad impression.'),
        // Called when a click is recorded for a NativeAd.
        onNativeAdClicked: (ad) => print('Ad clicked.'));
  }
  

loadNativeVideoAdTurbo

  loadAd() async{
    await _nativeAdTurbo.loadNativeVideoAdTurbo(nativeVideoID: AdTurboAdHelper.nativeAdvancedVideoAdUnitId);
  }
  

GitHub

查看 Github