Flutter广告集成插件google_ads_plus的使用

Flutter广告集成插件google_ads_plus的使用

本README描述了该包的功能。如果您将此包发布到pub.dev,则此README的内容将出现在您的包的首页上。

使用此包,开发者只需提供自己的Google广告ID,即可将广告无缝集成到应用中。

特性

  • 显示横幅广告
  • 显示插屏广告

开始使用

安装

要使用此包,请在pubspec.yaml文件中添加google_ads_plus作为依赖项:

dependencies:
  google_ads_plus:  # 替换为最新版本

然后,在Dart代码中导入该包:

import 'package:google_ads_plus/google_ads_plus.dart';

额外信息

想要了解更多关于如何在应用中实现此包的信息,请查看以下仓库:

时间允许时,我会更新此包以确保其顺畅且高效地使用。


示例代码

以下是一个完整的示例,展示了如何使用google_ads_plus插件来集成横幅广告和插屏广告。

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

import 'demo.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized(); // 确保Flutter绑定初始化
  await MobileAds.instance.initialize(); // 初始化移动广告
  runApp(const MyApp()); // 运行应用
}

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

  // 此小部件是应用的根
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo', // 应用标题
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), // 颜色方案
        useMaterial3: true, // 使用Material 3设计
      ),
      home: const MyHomePage(), // 主页面
    );
  }
}

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

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 垂直居中对齐
        children: [
          SizedBox(
            height: 80, // 横幅广告的高度
            child: BannerAdPlus(
              unitID: "ca-app-pub-3940256099942544/6300978111", // 添加Google横幅广告ID
              adSize: AdSize.fullBanner, // 横幅广告大小
            ),
          ),
          ElevatedButton( // 按钮用于触发插屏广告
            onPressed: () async {
              Navigator.push(context, MaterialPageRoute(
                builder: (context) {
                  return demo(); // 跳转到另一个页面
                },
              ));
              InterAdPlus().loadAndShowInterstitialAd(
                  unitID: "ca-app-pub-3940256099942544/1033173712"); // 添加Google插屏广告ID
            },
            child: Text("点击我展示插屏广告"), // 按钮文本
          )
        ],
      ),
    );
  }
}

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

1 回复

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


google_ads_plus 是一个Flutter插件,用于在Flutter应用中集成Google广告。它提供了对Google Ads的简化访问和集成,支持横幅广告、插页式广告、激励广告等多种广告类型。以下是如何在Flutter项目中集成和使用 google_ads_plus 插件的步骤。

1. 添加依赖

首先,在你的Flutter项目的 pubspec.yaml 文件中添加 google_ads_plus 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  google_ads_plus: ^latest_version

替换 latest_version 为最新的版本号。你可以在 pub.dev 上查找最新的版本。

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

2. 配置Google Ads

确保你已经在 Google AdMob 上创建了应用,并且获取到了广告单元ID(Ad Unit ID)。

3. 初始化插件

在你的Flutter应用启动时,初始化 google_ads_plus 插件。通常可以在 main.dart 文件中进行初始化。

import 'package:google_ads_plus/google_ads_plus.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await GoogleAdsPlus.initialize(
    appId: 'your_app_id', // 你的AdMob App ID
    testDeviceIds: ['your_test_device_id'], // 测试设备ID
  );
  runApp(MyApp());
}

替换 your_app_idyour_test_device_id 为实际的值。your_test_device_id 可以在运行应用时从日志中获取。

4. 显示横幅广告

要在应用中显示横幅广告,可以使用 BannerAdWidget

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Ads Plus Example'),
      ),
      body: Column(
        children: [
          Expanded(
            child: Center(
              child: Text('Hello, World!'),
            ),
          ),
          BannerAdWidget(
            adUnitId: 'your_banner_ad_unit_id', // 你的横幅广告单元ID
            adSize: AdSize.banner,
          ),
        ],
      ),
    );
  }
}

替换 your_banner_ad_unit_id 为你的横幅广告单元ID。

5. 显示插页式广告

要在应用中显示插页式广告,可以使用 InterstitialAd

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

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  InterstitialAd? _interstitialAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _loadInterstitialAd();
  }

  Future<void> _loadInterstitialAd() async {
    _interstitialAd = InterstitialAd(
      adUnitId: 'your_interstitial_ad_unit_id', // 你的插页式广告单元ID
      request: AdRequest(),
      listener: AdListener(
        onAdLoaded: (Ad ad) {
          print('Ad loaded.');
        },
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          ad.dispose();
          print('Ad failed to load: $error');
        },
        onAdClosed: (Ad ad) {
          ad.dispose();
          _loadInterstitialAd();
        },
      ),
    );
    await _interstitialAd?.load();
  }

  void _showInterstitialAd() {
    _interstitialAd?.show();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Ads Plus Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showInterstitialAd,
          child: Text('Show Interstitial Ad'),
        ),
      ),
    );
  }
}

替换 your_interstitial_ad_unit_id 为你的插页式广告单元ID。

6. 显示激励广告

要在应用中显示激励广告,可以使用 RewardedAd

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

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  RewardedAd? _rewardedAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _loadRewardedAd();
  }

  Future<void> _loadRewardedAd() async {
    _rewardedAd = RewardedAd(
      adUnitId: 'your_rewarded_ad_unit_id', // 你的激励广告单元ID
      request: AdRequest(),
      listener: AdListener(
        onAdLoaded: (Ad ad) {
          print('Ad loaded.');
        },
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          ad.dispose();
          print('Ad failed to load: $error');
        },
        onAdClosed: (Ad ad) {
          ad.dispose();
          _loadRewardedAd();
        },
        onRewardedAdUserEarnedReward: (RewardedAd ad, RewardItem reward) {
          print('User earned reward: ${reward.amount} ${reward.type}');
        },
      ),
    );
    await _rewardedAd?.load();
  }

  void _showRewardedAd() {
    _rewardedAd?.show();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Ads Plus Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showRewardedAd,
          child: Text('Show Rewarded Ad'),
        ),
      ),
    );
  }
}

替换 your_rewarded_ad_unit_id 为你的激励广告单元ID。

7. 处理生命周期

确保在应用的生命周期中正确处理广告的加载、显示和释放。可以在 dispose 方法中释放广告资源。

[@override](/user/override)
void dispose() {
  _interstitialAd?.dispose();
  _rewardedAd?.dispose();
  super.dispose();
}
回到顶部