Flutter广告集成插件admob_widgets的使用

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

Flutter广告集成插件admob_widgets的使用

admob_widgets 是一个方便使用 AdMob 广告单元的 Flutter 插件。本文将介绍如何在 Flutter 应用中集成和使用 admob_widgets 插件。

开始使用

Android

首先,你需要在 AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

然后,在 <application> 标签内添加你的应用 ID:

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-{your application ID}"/>

最后,在 main 函数中初始化插件并运行应用:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  AdMobWidgets.instance(
    androidBannerAdUnitId: "{Your banner ad unit Id}", 
    androidInterstitialAdUnitId: "{Your interstitial ad unit Id}"
  );
  await MobileAds.instance.initialize();
  runApp(const MainApp());
}

使用示例

Banner Widget

要在应用中展示横幅广告,只需插入 BannerWidget 组件即可:

// 只需调用该组件
const BannerWidget();

插入式广告(Interstitial)

首先,创建一个 InterstitialUnit 类实例,并加载广告:

// 初始化插件类 InterstitialUnit
final interstitialUnit = InterstitialUnit();

// 初始化 InterstitialAd
InterstitialAd? _interstitialAd;

[@override](/user/override)
void initState() {
  super.initState();
  // 加载广告
  interstitialUnit.loadAd();
}

// 在按钮点击事件中显示广告
setState(() {
  // 将类中的 interstitial 赋值给本地变量
  _interstitialAd = interstitialUnit.interstitialAd;
  
  // 检查 interstitial 是否不为空
  if (_interstitialAd != null) {
    // 显示广告
    _interstitialAd!.show();
    
    // 重新加载广告
    interstitialUnit.loadAd();
  }
});

完整示例代码

以下是完整的示例代码,展示了如何在 Flutter 应用中集成和使用 admob_widgets 插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  AdMobWidgets.instance(
    // 测试用的 ID
    androidBannerAdUnitId: "ca-app-pub-3940256099942544/6300978111",
    androidInterstitialAdUnitId: "ca-app-pub-3940256099942544/1033173712"
  );
  await MobileAds.instance.initialize();
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final interstitialUnit = InterstitialUnit();
  InterstitialAd? _interstitialAd;

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      home: Scaffold(
        body: Column(
          children: [
            Expanded(
              child: Center(
                child: MaterialButton(
                  onPressed: () {
                    _interstitialAd = interstitialUnit.interstitialAd;
                    if (_interstitialAd != null) {
                      _interstitialAd!.show();
                      interstitialUnit.loadAd();
                    }
                  },
                  child: const Text('Launch interstitial'),
                ),
              ),
            ),
            const BannerWidget(),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用admob_widgets插件来集成Google AdMob广告的示例代码。这个插件可以简化在Flutter应用中展示广告的过程。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加admob_widgets依赖:

dependencies:
  flutter:
    sdk: flutter
  admob_widgets: ^0.x.x  # 请替换为最新版本号

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

2. 配置AdMob

确保你已经在Google AdMob中创建了一个应用,并获取了应用的Ad Unit ID。你还需要在AndroidManifest.xmlInfo.plist文件中配置AdMob权限和设置。

对于Android:

android/app/src/main/AndroidManifest.xml中添加以下权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

对于iOS:

ios/Runner/Info.plist中添加以下键值对:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx</string> <!-- 替换为你的AdMob应用ID -->
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

3. 初始化并展示广告

在你的Flutter代码中,你可以按照以下方式使用admob_widgets来展示广告。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  // 替换为你的Ad Unit ID
  final String bannerAdUnitId = 'ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx';
  final String interstitialAdUnitId = 'ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AdMob Integration Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 展示Banner广告
            AdmobBanner(
              adUnitId: bannerAdUnitId,
              adSize: AdmobBannerSize.BANNER,
            ),
            SizedBox(height: 20),
            // 展示按钮,点击时展示Interstitial广告
            ElevatedButton(
              onPressed: () {
                showInterstitialAd();
              },
              child: Text('Show Interstitial Ad'),
            ),
          ],
        ),
      ),
    );
  }

  // 展示Interstitial广告的函数
  void showInterstitialAd() {
    AdmobInterstitial(
      adUnitId: interstitialAdUnitId,
      listener: (AdmobAdEvent event, Map<String, dynamic> info) {
        if (event == AdmobAdEvent.closed) {
          print('Interstitial ad closed.');
        }
      },
    )..load()..show();
  }
}

注意事项

  1. 测试广告:在开发过程中,请使用测试广告单元ID,以避免影响你的广告收入。
  2. 真实广告:发布应用时,请确保使用真实的Ad Unit ID。
  3. 权限:确保你的应用已正确配置网络权限,以便AdMob能够加载和展示广告。

以上代码展示了如何在Flutter中使用admob_widgets插件来集成并展示Banner和Interstitial广告。根据你的需求,你可以进一步定制广告的行为和样式。

回到顶部