Flutter广告展示插件basic_ads的使用

Flutter广告展示插件basic_ads的使用

本文将详细介绍如何在Flutter项目中使用basic_ads插件来展示广告。

基本介绍

basic_ads 是一个简单的广告包,基于Google移动广告。它易于使用且可定制。

开始使用

1. 添加依赖

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

dependencies:
  basic_ads: ^1.0.0

2. 平台特定设置

Android

确保你的Android SDK版本不低于20,并在android/app/build.gradle文件中设置compileSdkVersioncompileSdk为28或更高版本。

AndroidManifest.xml文件中添加以下代码:

<application>
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-################~##########"/>
</application>

注意:ca-app-pub-################~##########替换为你的AdMob应用ID。

iOS

Info.plist文件中添加以下代码:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-################~##########</string>

注意:ca-app-pub-################~##########替换为你的AdMob应用ID。

3. 初始化

在主函数中添加以下代码以初始化广告:

import 'package:basic_ads/basic_ads.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await BasicAds.instance.initialize(
    config: const BasicAdsConfig(),
  );
}

注意: 你可以通过传递BasicAdsConfig对象来自定义广告。如果不传递BasicAdsConfig对象,则会使用默认配置(使用测试广告单元ID)。

4. 展示横幅广告

在你的widget中添加以下代码以展示横幅广告:

Scaffold(
  body: Center(),
  bottomNavigationBar: BasicAdsBanner(),
);

5. 展示插屏广告

在你的widget中添加以下代码以展示插屏广告:

ElevatedButton(
  onPressed: () async {
    try {
      await BasicAds.instance.interstitialAd.show();
    } catch (error, stackTrace) {
      log('Error: $error\n$stackTrace');
    }
  },
  child: const Text('Show Interstitial Ad'),
);

6. 展示激励视频广告

在你的widget中添加以下代码以展示激励视频广告:

FilledButton.tonal(
  onPressed: () async {
    try {
      await BasicAds.instance.rewardedAd.show(
        (value) => log('Rewarded Ad Reward: $value'),
      );
    } catch (error, stackTrace) {
      log('Error: $error\n$stackTrace');
    }
  },
  child: const Text('Rewarded Ad'),
);

7. 展示开屏广告

BasicAppOpenAdWidget包裹到你的widget树的顶部。你也可以将其包裹到runApp方法或MaterialApp widget中。

runApp(
  const BasicAppOpenAdWidget(
    displayMode: AppOpenAdDisplayMode.onlyAppStateChangedToForeground,
    replayInterval: Duration(days: 1),
    child: MainApp(),
  ),
);

显示模式枚举

关于何时展示广告,可以选择以下选项之一:

  • AppOpenAdDisplayMode.onlyFirstOpen

    • 只在首次打开应用程序时展示广告。如果应用程序切换到后台再回到前台,则不会展示广告。
  • AppOpenAdDisplayMode.firstOpenAndAppStateChangedToForeground

    • 在首次打开应用程序或应用程序切换到后台再回到前台时展示广告。
  • AppOpenAdDisplayMode.onlyAppStateChangedToForeground

    • 只在应用程序切换到后台再回到前台时展示广告。

重新播放间隔

关于广告展示频率,可以设置值为每天一次。默认值为一天。

replayInterval: Duration(days: 1)

完整示例

以下是一个完整的示例代码,展示了如何在Flutter项目中使用basic_ads插件:

import 'dart:developer';

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

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await BasicAds.instance.initialize(
    config: const BasicAdsConfig(),
  );

  runApp(
    const BasicAppOpenAdWidget(
      displayMode: AppOpenAdDisplayMode.onlyAppStateChangedToForeground,
      replayInterval: Duration(days: 1),
      child: MainApp(),
    ),
  );
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const BasicAppOpenAdWidget(
      child: MaterialApp(
        home: HomeView(),
      ),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                try {
                  await BasicAds.instance.interstitialAd.show();
                } catch (error, stackTrace) {
                  log('Interstitial Ad Error: ', error: error, stackTrace: stackTrace);
                }
              },
              child: const Text('Interstitial Ad'),
            ),
            FilledButton.tonal(
              onPressed: () async {
                try {
                  await BasicAds.instance.rewardedAd.show(
                    (value) => log('Rewarded Ad Reward: $value'),
                  );
                } catch (error, stackTrace) {
                  log('Rewarded Ad Error: ', error: error, stackTrace: stackTrace);
                }
              },
              child: const Text('Rewarded Ad'),
            ),
          ],
        ),
      ),
      bottomNavigationBar: const BasicAdsBanner(),
    );
  }
}

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

1 回复

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


basic_ads 是一个用于在 Flutter 应用中展示广告的插件。它支持多种广告格式,如横幅广告、插页式广告和激励视频广告。以下是如何使用 basic_ads 插件的基本步骤:

1. 添加依赖

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

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

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

2. 初始化广告插件

在你的应用的 main.dart 文件中,初始化 basic_ads 插件。通常,你需要在 main() 函数中调用初始化方法。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await BasicAds.initialize(
    appId: 'YOUR_APP_ID', // 替换为你的广告应用ID
    testMode: true, // 设置为 true 以启用测试模式
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Ads Demo',
      home: HomeScreen(),
    );
  }
}

3. 展示横幅广告

在需要展示横幅广告的页面中,使用 BannerAdWidget 来展示广告。

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

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Ads Demo'),
      ),
      body: Column(
        children: [
          Expanded(
            child: Center(
              child: Text('Your app content here'),
            ),
          ),
          BannerAdWidget(
            adUnitId: 'YOUR_BANNER_AD_UNIT_ID', // 替换为你的横幅广告单元ID
            adSize: AdSize.banner,
          ),
        ],
      ),
    );
  }
}

4. 展示插页式广告

插页式广告通常在全屏显示,比如在用户完成某个操作后展示。你可以使用 InterstitialAd 来加载和展示插页式广告。

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

class HomeScreen extends StatelessWidget {
  Future<void> _showInterstitialAd() async {
    await InterstitialAd.load(
      adUnitId: 'YOUR_INTERSTITIAL_AD_UNIT_ID', // 替换为你的插页式广告单元ID
    );
    await InterstitialAd.show();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Ads Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showInterstitialAd,
          child: Text('Show Interstitial Ad'),
        ),
      ),
    );
  }
}

5. 展示激励视频广告

激励视频广告通常用于奖励用户观看视频。你可以使用 RewardedAd 来加载和展示激励视频广告。

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

class HomeScreen extends StatelessWidget {
  Future<void> _showRewardedAd() async {
    await RewardedAd.load(
      adUnitId: 'YOUR_REWARDED_AD_UNIT_ID', // 替换为你的激励视频广告单元ID
    );
    await RewardedAd.show(
      onRewarded: (reward) {
        // 处理用户奖励
        print('User earned reward: $reward');
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Ads Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showRewardedAd,
          child: Text('Show Rewarded Ad'),
        ),
      ),
    );
  }
}

6. 处理广告生命周期

确保在你的应用生命周期中正确处理广告的加载和销毁。例如,在页面销毁时销毁广告。

@override
void dispose() {
  BannerAdWidget.dispose();
  InterstitialAd.dispose();
  RewardedAd.dispose();
  super.dispose();
}

7. 测试广告

在开发阶段,使用测试广告单元 ID 来确保广告功能正常工作。你可以在广告平台(如 AdMob)中找到测试广告单元 ID。

8. 发布应用

在发布应用之前,确保将测试模式关闭,并使用真实的广告单元 ID。

await BasicAds.initialize(
  appId: 'YOUR_APP_ID',
  testMode: false, // 设置为 false 以禁用测试模式
);
回到顶部