Flutter广告加速插件ad_turbo的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter广告加速插件ad_turbo的使用

ad_turbo 实现了Google Ads,简单且快速的方式支持所有类型的Google Ads(包括Android上的原生广告),包括横幅广告、开屏广告、插屏广告、应用内视频广告等。

展示一些爱心吧,点赞包并星标仓库以支持该项目

要轻松地将广告集成到您的Flutter应用程序中。

特性

Google Mobile Ads

  • 横幅广告
  • 插屏广告
  • 奖励广告
  • 奖励插屏广告
  • 开屏广告
  • 小型原生广告、原生广告、原生视频广告(仅限Android)

入门指南

在您的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  ad_turbo: "<LATEST_VERSION>"

平台特定设置

Android

设置 minSdkVersion 为 19

编辑 \android\app\build.gradle 文件,设置 minSdkVersion 为 19:

android {
    defaultConfig {   
        minSdkVersion 19
    }                 
}
需要启用多DEX支持

编辑 \android\app\build.gradle 文件,启用多DEX支持:

android {
    defaultConfig {   
        multiDexEnabled true
    }                 
}
更新 AndroidManifest.xml

在您的应用的 /android/app/src/main/AndroidManifest.xml 文件中添加以下内容:

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

请注意,这是一个测试ID。您需要添加自己的AdMob ID以投放实际广告。

iOS

更新 Info.plist

在您的应用的 ios/Runner/Info.plist 文件中添加以下内容:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~3347511713</string>

同样,这是一个测试ID。您需要添加自己的AdMob ID以投放实际广告。

文档

初始化插件

您需要在 main 函数中初始化插件:

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:

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");
    }
  }
}

横幅广告

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

final _bannerAdTurbo = BannerAdTurbo();

void loadAd() async{
  await _bannerAdTurbo.loadBannerAdTurbo(
    adUnitId: AdTurboAdHelper.bannerAdUnitId,
    onAdLoaded: (ad) {
      print("ad_turbo_plugin : TurboBannerAd loaded");
      isBannerAdReady = true;
      setState(() {});
    },
    onAdFailedToLoad: (ad, error) {
      isBannerAdReady = false;
      ad.dispose();
      print('TurboBannerAd failed to load: $error');
      loadAd();
    },
    onAdOpened: (ad) => print('TurboBannerAd opened.'),
    onAdClosed: (ad) => print('TurboBannerAd closed.'),
    onAdImpression: (ad) => print('TurboBannerAd impression.'),
    adSize: BannerAdTurbo.banner
  );
}

// 获取横幅广告
_bannerAdTurbo.getBannerAdTurbo();

插屏广告

要实现插屏广告,您需要初始化 InterstitialAdTurbo

final _interstitialAdTurbo = InterstitialAdTurbo();

void loadAd() async{
  await _interstitialAdTurbo.loadInterstitialAdTurbo(
    adUnitId: AdTurboAdHelper.interstitialAdUnitId,
    onAdLoaded: (ad) {
      print('$ad loaded.');
      _interstitialAdTurbo.interstitialAd = ad;
      isInterstitialAdReady = true;
    },
    onAdFailedToLoad: (error) {
      isInterstitialAdReady = false;
      print('Failed to load an interstitial ad: ${error.message}');
      loadAd();
    }
  );
}

// 显示插屏广告
ElevatedButton(
  onPressed: ()async{
    await _interstitialAdTurbo.interstitialAd?.show();
    await _interstitialAdTurbo.interstitialCallback();
  },
  child: const Text("InterstitialAd")
);

奖励广告

要实现奖励广告,您需要初始化 RewardedAdTurbo

final _rewardedAdTurbo = RewardedAdTurbo();

void loadAd() async{
  await _rewardedAdTurbo.loadRewardedAdTurbo(
    adUnitId: AdTurboAdHelper.rewardedAdUnitId,
    onAdLoaded: (ad) {
      print('$ad loaded.');
      _rewardedAdTurbo.rewardedAd = ad;
      isRewardedAdReady = true;
    },
    onAdFailedToLoad: (error) {
      isRewardedAdReady = false;
      print('RewardedAd failed to load: $error');
      loadAd();
    }
  );
}

// 显示奖励广告
ElevatedButton(
  onPressed: ()async{
    await _rewardedAdTurbo.rewardedAd.show();
    await _rewardedAdTurbo.rewardedCallback();
  },
  child: const Text("RewardedAd")
);

奖励插屏广告

要实现奖励插屏广告,您需要初始化 RewardedInterstitialAdTurbo

final _rewardedInterstitialAdTurbo = RewardedInterstitialAdTurbo();

void loadAd() async{
  await _rewardedInterstitialAdTurbo.loadRewardedInterstitialAdTurbo(
    adUnitId: AdTurboAdHelper.rewardedInterstitial,
    onAdLoaded: (ad) {
      print('$ad loaded.');
      _rewardedInterstitialAdTurbo.rewardedInterstitial = ad;
      isRewardedInterstitialAdReady = true;
    },
    onAdFailedToLoad: (error) {
      isRewardedInterstitialAdReady = false;
      print('RewardedInterstitialAd failed to load: $error');
      loadAd();
    }
  );
}

// 显示奖励插屏广告
ElevatedButton(
  onPressed: ()async{
    _rewardedInterstitialAdTurbo.rewardedInterstitial?.show();
    await _rewardedInterstitialAdTurbo.rewardedInterstitialCallback();
  },
  child: const Text("RewardedInterstitialAd")
);

开屏广告

要实现开屏广告,您需要初始化 AppOpenAdTurbo

final _appOpenAdTurbo = AppOpenAdTurbo();

void 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();
    },
  );
}

// 显示开屏广告
ElevatedButton(
  onPressed: ()async{
    await _appOpenAdTurbo.appOpenAd?.show();
    await _appOpenAdTurbo.appOpenCallback();
  },
  child: const Text("AppOpenAd")
);

原生广告

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

原生小广告
final _nativeAdTurbo = NativeAdTurbo();

void loadAd() async{
  await _nativeAdTurbo.loadNativeSmallAdTurbo(
    adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId,
    onAdLoaded: (ad) {
      print('Ad loaded.');
      isNativeSmallAdReady = true;
      setState(() => "");
    },
    onAdFailedToLoad: (ad, error) {
      isNativeSmallAdReady = false;
      ad.dispose();
      print('Ad load failed (code=${error.code} message=${error.message})');
      loadAd();
    },
    onAdOpened: (ad) => print('Ad opened.'),
    onAdClosed: (ad) => print('Ad closed.'),
    onAdImpression: (ad) => print('Ad impression.'),
    onNativeAdClicked: (ad) => print('Ad clicked.')
  );
}

// 获取原生小广告
Container(height: 102, child: _nativeAdTurbo.getNativeSmallAdTurbo())
原生中广告
final _nativeAdTurbo = NativeAdTurbo();

void loadAd() async{
  await _nativeAdTurbo.loadNativeMediumAdTurbo(
    adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId,
    onAdLoaded: (ad) {
      print('Ad loaded.');
      isNativeMediumAdReady = true;
      setState(() => "");
    },
    onAdFailedToLoad: (ad, error) {
      isNativeMediumAdReady = false;
      ad.dispose();
      print('Ad load failed (code=${error.code} message=${error.message})');
      loadAd();
    },
    onAdOpened: (ad) => print('Ad opened.'),
    onAdClosed: (ad) => print('Ad closed.'),
    onAdImpression: (ad) => print('Ad impression.'),
    onNativeAdClicked: (ad) => print('Ad clicked.')
  );
}

// 获取原生中广告
Container(height: 255, child: _nativeAdTurbo.getNativeMediumAdTurbo())
原生视频广告
final _nativeAdTurbo = NativeAdTurbo();

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

// 获取原生视频广告
Container(height: 310, child: _nativeAdTurbo.getNativeVideoAdTurbo(context: context))

更多关于Flutter广告加速插件ad_turbo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告加速插件ad_turbo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用ad_turbo插件来加速广告加载的一个示例代码案例。请注意,这只是一个基本的示例,具体实现可能会根据实际需求有所不同。

首先,确保你已经在pubspec.yaml文件中添加了ad_turbo依赖:

dependencies:
  flutter:
    sdk: flutter
  ad_turbo: ^最新版本号  # 替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,你可以按照以下步骤在你的Flutter应用中使用ad_turbo插件:

  1. 初始化AdTurbo

在你的应用的主入口文件(通常是main.dart)中,初始化AdTurbo

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

void main() {
  // 初始化AdTurbo
  AdTurbo.instance.init(
    apiKey: '你的API_KEY',  // 替换为你的AdTurbo API密钥
    appId: '你的APP_ID',    // 替换为你的应用ID
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Ad Turbo Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}
  1. 加载并显示广告

在你的主页面或其他需要显示广告的页面,使用AdTurbo加载并显示广告。

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  AdWidget? _adWidget;

  @override
  void initState() {
    super.initState();
    // 加载广告
    _loadAd();
  }

  void _loadAd() async {
    // 创建广告配置
    final AdConfiguration adConfig = AdConfiguration(
      adUnitId: '你的AD_UNIT_ID',  // 替换为你的广告单元ID
      placementId: '你的PLACEMENT_ID',  // 替换为你的广告位ID(如果有的话)
      // 其他配置参数,如广告尺寸、格式等,可以根据需要设置
    );

    // 创建AdWidget
    _adWidget = await AdWidget.load(
      context: context,
      configuration: adConfig,
    );

    // 如果广告加载成功,可以将其添加到widget树中
    if (_adWidget != null) {
      setState(() {});
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Ad Turbo Demo'),
      ),
      body: Center(
        child: _adWidget ?? CircularProgressIndicator(),  // 显示加载指示器直到广告加载完成
      ),
    );
  }
}

在上面的代码中,我们首先初始化了AdTurbo实例,并设置了API密钥和应用ID。然后,在MyHomePage页面中,我们通过AdConfiguration配置广告参数,并使用AdWidget.load方法加载广告。加载完成后,我们将广告widget添加到widget树中显示。

请注意,以上代码仅作为示例,实际使用时可能需要根据具体的广告网络和需求进行调整。同时,确保你已经正确配置了AdTurbo的相关参数,并且已经获得了必要的API密钥和广告单元ID。

另外,由于广告网络可能会更新其SDK和API,因此建议查阅最新的ad_turbo插件文档以获取最新的使用方法和最佳实践。

回到顶部