Flutter广告集成插件mobad的使用

Flutter广告集成插件mobad的使用

在本教程中,我们将详细介绍如何在Flutter项目中集成并使用广告插件mobad。通过此插件,您可以轻松实现激励视频广告、Banner广告和插屏广告。

示例代码说明

1. 主应用文件 main.dart

// 导入必要的库
import 'package:flutter/material.dart';
import 'banner.dart'; // 引入Banner广告页面
import 'interstitial.dart'; // 引入插屏广告页面
import 'reward_video.dart'; // 引入激励视频广告页面

// 定义主应用类
void main() {
  runApp(MyApp()); // 启动应用
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData( // 设置主题
        primarySwatch: Colors.grey, // 主色调为灰色
        visualDensity: VisualDensity.adaptivePlatformDensity, // 自适应平台密度
        buttonTheme: ButtonThemeData(minWidth: 200), // 按钮最小宽度
      ),
      home: MyHomePage(), // 主页
      routes: <String, WidgetBuilder>{ // 路由配置
        '/reward-video': (BuildContext context) => RewardVideoPage(), // 激励视频广告页面
        '/banner': (BuildContext context) => BannerPage(), // Banner广告页面
        '/interstitial': (BuildContext context) => InterstitialPage(), // 插屏广告页面
      },
    );
  }
}

// 定义主页类
class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center( // 居中布局
        child: Column( // 垂直方向的子组件列
          mainAxisAlignment: MainAxisAlignment.center, // 子组件垂直居中
          children: <Widget>[ // 定义按钮列表
            RaisedButton( // 激励视频广告按钮
              onPressed: () {
                Navigator.of(context).pushNamed('/reward-video'); // 跳转到激励视频广告页面
              },
              child: Text("激励视频广告"), // 按钮文字
            ),
            RaisedButton( // Banner广告按钮
              onPressed: () {
                Navigator.of(context).pushNamed('/banner'); // 跳转到Banner广告页面
              },
              child: Text("Banner 广告"), // 按钮文字
            ),
            RaisedButton( // 插屏广告按钮
              onPressed: () {
                Navigator.of(context).pushNamed('/interstitial'); // 跳转到插屏广告页面
              },
              child: Text("插屏广告"), // 按钮文字
            ),
          ],
        ),
      ),
    );
  }
}

2. Banner广告页面 banner.dart

// Banner广告页面代码
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart'; // 导入mobad插件

class BannerPage extends StatefulWidget {
  @override
  _BannerPageState createState() => _BannerPageState();
}

class _BannerPageState extends State<BannerPage> {
  BannerAd? _bannerAd;

  @override
  void initState() {
    super.initState();
    _loadBannerAd(); // 初始化时加载Banner广告
  }

  void _loadBannerAd() async {
    _bannerAd = await MobAd.loadBannerAd( // 加载Banner广告
      adUnitId: "your_banner_ad_unit_id", // 替换为您的广告单元ID
      size: AdSize.BANNER, // 广告尺寸
    );
    if (_bannerAd != null) {
      _bannerAd!.show(); // 显示广告
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Banner广告")), // 设置标题
      body: Center(
        child: Text("请查看屏幕底部以查看Banner广告"), // 提示用户查看广告位置
      ),
    );
  }

  @override
  void dispose() {
    _bannerAd?.dispose(); // 销毁时释放资源
    super.dispose();
  }
}

3. 插屏广告页面 interstitial.dart

// 插屏广告页面代码
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart'; // 导入mobad插件

class InterstitialPage extends StatefulWidget {
  @override
  _InterstitialPageState createState() => _InterstitialPageState();
}

class _InterstitialPageState extends State<InterstitialPage> {
  InterstitialAd? _interstitialAd;

  @override
  void initState() {
    super.initState();
    _loadInterstitialAd(); // 初始化时加载插屏广告
  }

  void _loadInterstitialAd() async {
    _interstitialAd = await MobAd.loadInterstitialAd( // 加载插屏广告
      adUnitId: "your_interstitial_ad_unit_id", // 替换为您的广告单元ID
    );
    if (_interstitialAd != null) {
      _interstitialAd!.show(); // 显示广告
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("插屏广告")), // 设置标题
      body: Center(
        child: Text("点击按钮后会展示插屏广告"), // 提示用户点击后会展示广告
      ),
    );
  }

  @override
  void dispose() {
    _interstitialAd?.dispose(); // 销毁时释放资源
    super.dispose();
  }
}

4. 激励视频广告页面 reward_video.dart

// 激励视频广告页面代码
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart'; // 导入mobad插件

class RewardVideoPage extends StatefulWidget {
  @override
  _RewardVideoPageState createState() => _RewardVideoPageState();
}

class _RewardVideoPageState extends State<RewardVideoPage> {
  RewardVideoAd? _rewardVideoAd;

  @override
  void initState() {
    super.initState();
    _loadRewardVideoAd(); // 初始化时加载激励视频广告
  }

  void _loadRewardVideoAd() async {
    _rewardVideoAd = await MobAd.loadRewardVideoAd( // 加载激励视频广告
      adUnitId: "your_reward_video_ad_unit_id", // 替换为您的广告单元ID
    );
    if (_rewardVideoAd != null) {
      _rewardVideoAd!.setRewardListener((rewardAmount, rewardType) { // 设置奖励监听器
        print("用户获得奖励:金额 $rewardAmount 类型 $rewardType");
      });
      _rewardVideoAd!.show(); // 显示广告
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("激励视频广告")), // 设置标题
      body: Center(
        child: Text("点击按钮后会展示激励视频广告"), // 提示用户点击后会展示广告
      ),
    );
  }

  @override
  void dispose() {
    _rewardVideoAd?.dispose(); // 销毁时释放资源
    super.dispose();
  }
}

注意事项

  1. 在使用mobad插件之前,请确保已经在pubspec.yaml文件中添加了插件依赖:
    dependencies:
      mobad: ^1.0.0
    

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

1 回复

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


在Flutter项目中集成广告是常见的需求,MobAd 是一个常用的广告插件,支持多种广告类型,如横幅广告、插屏广告、激励视频广告等。以下是集成 MobAd 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 MobAd 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  mobad: ^latest_version  # 请替换为最新版本

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

2. 初始化 MobAd

在你的 main.dart 文件中初始化 MobAd。通常,你可以在 main() 函数中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 MobAd
  await MobAd.init(
    appId: 'your_app_id',  // 替换为你的 App ID
    appKey: 'your_app_key',  // 替换为你的 App Key
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

3. 添加横幅广告

横幅广告通常是显示在屏幕底部或顶部的矩形广告。你可以在页面中添加横幅广告:

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('MobAd Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Hello, MobAd!'),
          ],
        ),
      ),
      bottomNavigationBar: Container(
        height: 50,
        child: MobAdBanner(
          adUnitId: 'your_banner_ad_unit_id',  // 替换为你的横幅广告单元 ID
          adSize: AdSize.banner,
          listener: (AdEvent event) {
            // 处理广告事件
            if (event == AdEvent.loaded) {
              print('Banner Ad Loaded');
            }
          },
        ),
      ),
    );
  }
}

4. 添加插屏广告

插屏广告是在用户操作(如点击按钮)后弹出的全屏广告。你可以按需加载和显示插屏广告:

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

class MyHomePage extends StatelessWidget {
  MobAdInterstitial _interstitialAd;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('MobAd Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Hello, MobAd!'),
            ElevatedButton(
              onPressed: _showInterstitialAd,
              child: Text('Show Interstitial Ad'),
            ),
          ],
        ),
      ),
    );
  }

  void _showInterstitialAd() {
    _interstitialAd = MobAdInterstitial(
      adUnitId: 'your_interstitial_ad_unit_id',  // 替换为你的插屏广告单元 ID
      listener: (AdEvent event) {
        // 处理广告事件
        if (event == AdEvent.loaded) {
          _interstitialAd.show();
        } else if (event == AdEvent.closed) {
          _interstitialAd.dispose();
        }
      },
    );
    _interstitialAd.load();
  }
}

5. 添加激励视频广告

激励视频广告通常用于奖励用户,如游戏中的额外生命或积分。你可以按需加载和显示激励视频广告:

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

class MyHomePage extends StatelessWidget {
  MobAdRewardedVideo _rewardedVideoAd;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('MobAd Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Hello, MobAd!'),
            ElevatedButton(
              onPressed: _showRewardedVideoAd,
              child: Text('Show Rewarded Video Ad'),
            ),
          ],
        ),
      ),
    );
  }

  void _showRewardedVideoAd() {
    _rewardedVideoAd = MobAdRewardedVideo(
      adUnitId: 'your_rewarded_video_ad_unit_id',  // 替换为你的激励视频广告单元 ID
      listener: (AdEvent event, {RewardItem reward}) {
        // 处理广告事件
        if (event == AdEvent.loaded) {
          _rewardedVideoAd.show();
        } else if (event == AdEvent.rewarded) {
          print('Reward: ${reward.amount} ${reward.type}');
        }
      },
    );
    _rewardedVideoAd.load();
  }
}
回到顶部