Flutter广告集成插件admob_interface的使用

admob_interface

admob_interface 是一个用于在 Flutter 应用中集成广告的插件。它支持多种广告类型,包括激励视频广告(Rewarded Video)和插页式广告(Interstitial)。以下是详细的使用说明和完整示例。


Getting Started

Android 配置

AndroidManifest.xml 文件中添加以下配置:

<meta-data
  android:name="com.google.android.gms.ads.APPLICATION_ID"
  android:value="${ADMOB_APP_ID}"/>

iOS 配置

Info.plist 文件中添加以下配置:

<key>GADApplicationIdentifier</key>
<string>${ADMOB_APP_ID}</string>

示例代码

以下是一个完整的示例代码,展示如何在 Flutter 应用中集成并使用 admob_interface 插件。

示例代码

// example/lib/main.dart
import 'package:admob_interface/admob_interface.dart'; // 引入插件
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp()); // 启动应用
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState(); // 初始化状态
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化 AdMob 广告管理器
    final adMobAd = AdMobAd();
    AdManager().init(
      adMobAd,
      (tag) { // 回调函数用于获取广告 ID
        if (tag == '激励测试') return 'ca-app-pub-3940256099942544/5224354917'; // 激励视频广告 ID
        if (tag == '插页测试') return 'ca-app-pub-3940256099942544/1033173712'; // 插页广告 ID
        return ''; // 默认返回空字符串
      },
      preloadAds: { // 预加载广告
        AdType.rewardedVideo: ['激励测试'], // 预加载激励视频广告
        AdType.interstitial: ['插页测试'], // 预加载插页广告
      },
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp( // 创建 Material 应用
      home: Scaffold(
        appBar: AppBar(
          title: const Text('广告插件示例'), // 设置应用标题
        ),
        body: Center( // 设置页面居中布局
          child: Column(
            mainAxisSize: MainAxisSize.min, // 最小化列的高度
            children: [
              CupertinoButton( // 按钮组件
                child: const Text('激励视频测试'), // 按钮文字
                onPressed: () {
                  // 显示激励视频广告
                  AdManager().showAd('激励测试', AdType.rewardedVideo);
                },
              ),
              CupertinoButton(
                child: const Text('插页测试'),
                onPressed: () {
                  // 显示插页广告
                  AdManager().showAd('插页测试', AdType.interstitial);
                },
              ),
              CupertinoButton(
                child: const Text('测试面板'),
                onPressed: () {
                  // 打开 Google AdMob 测试面板
                  GoogleAdMob.mediationTestSuite();
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


admob_interface 是一个用于在 Flutter 应用中集成广告的插件,它提供了一个统一的接口来与不同的广告平台(如 AdMob)进行交互。这个插件的主要目的是简化广告集成过程,使开发者能够更容易地在应用中展示广告。

以下是如何在 Flutter 项目中使用 admob_interface 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  admob_interface: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化 AdMob

在使用广告之前,你需要初始化 AdMob。通常,你可以在 main.dart 文件中进行初始化:

import 'package:admob_interface/admob_interface.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  AdmobInterface.initialize(
    appId: 'your-admob-app-id',  // 替换为你的 AdMob 应用 ID
  );
  runApp(MyApp());
}

3. 创建广告实例

你可以创建不同类型的广告实例,例如横幅广告、插页式广告等。以下是一个创建横幅广告的示例:

import 'package:admob_interface/admob_interface.dart';

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

class _MyHomePageState extends State<MyHomePage> {
  late BannerAd _bannerAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _bannerAd = BannerAd(
      adUnitId: 'your-banner-ad-unit-id',  // 替换为你的横幅广告单元 ID
      size: AdSize.banner,
      listener: AdListener(
        onAdLoaded: (Ad ad) => print('Ad loaded.'),
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          ad.dispose();
          print('Ad failed to load: $error');
        },
        onAdOpened: (Ad ad) => print('Ad opened.'),
        onAdClosed: (Ad ad) => print('Ad closed.'),
        onAdImpression: (Ad ad) => print('Ad impression.'),
      ),
    );
    _bannerAd.load();
  }

  [@override](/user/override)
  void dispose() {
    _bannerAd.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AdMob Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Hello, world!'),
            Container(
              alignment: Alignment.center,
              child: AdWidget(ad: _bannerAd),
              width: _bannerAd.size.width.toDouble(),
              height: _bannerAd.size.height.toDouble(),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部