Flutter广告展示插件display_ads的使用

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

Flutter广告展示插件display_ads的使用

display_ads 插件是一个用于在 Flutter 应用中轻松展示 Google 移动广告的封装。以下是该插件的基本使用方法。

特性

  • 显示横幅广告(Banner Ads)
  • 显示插屏广告(Interstitial Ads)

开始使用

平台特定设置

Android

确保你的应用使用的最小 SDK 版本为 19 或更高,并且编译 SDK 版本为 33 或更高。

AndroidManifest.xml 文件中添加 AdMob 应用 ID:

<manifest>
    <application>
        <!-- Sample AdMob app ID for testing : ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>

iOS

Info.plist 文件中添加 AdMob 应用 ID 和 SKAdNetwork 信息:

<!-- Sample AdMob app ID for testing : ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-################~##########</string>
<key>SKAdNetworkItems</key>
<array>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cstr6suwn9.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4fzdc2evr5.skadnetwork</string>
  </dict>
  <!-- 更多 SKAdNetworkIdentifier -->
</array>

使用插件

初始化插件

首先需要初始化插件,并提供相应的广告单元 ID。

import 'package:display_ads/display_ads.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  DisplayAds.instance.initialize(
    isShowAds: true,
    interstitialAdUnitIdIOS: "Put your interstitial AdUnitId for iOS here",
    interstitialAdUnitIdAndroid: "Put your interstitial AdUnitId for Android here",
    bannerAdUnitIdIOS: "Put your banner AdUnitId for iOS here",
    bannerAdUnitIdAndroid: "Put your banner AdUnitId for Android here",
  );
  runApp(const MyApp());
}

显示横幅广告

你可以通过以下方法来显示横幅广告:

DisplayAds.instance.bannerAd()

这个方法返回一个 Widget,可以将其插入到你的 Flutter 界面中。

显示插屏广告

你可以通过以下方法来加载并显示插屏广告:

DisplayAds.instance.loadInterstitialAds();

此方法将加载插屏广告,并可以在任何你希望展示插屏广告的地方调用它。

完整示例代码

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await DisplayAds.instance.initialize(
    isShowAds: true,
    interstitialAdUnitIdIOS: 'ca-app-pub-3940256099942544/4411468910',
    interstitialAdUnitIdAndroid: 'ca-app-pub-3940256099942544/1033173712',
    bannerAdUnitIdIOS: 'ca-app-pub-3940256099942544/2934735716',
    bannerAdUnitIdAndroid: 'ca-app-pub-3940256099942544/6300978111',
  );
  runApp(const MyApp());
}

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

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

class _MyAppState extends State<MyApp> {
  void _showInterstitialAds() {
    DisplayAds.instance.loadInterstitialAds();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Theme.of(context).colorScheme.inversePrimary,
          title: const Text("Example of Display Ads"),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              DisplayAds.instance.bannerAd(), // 显示横幅广告
              ElevatedButton(
                onPressed: _showInterstitialAds,
                child: const Text('Show Interstitial Ads'), // 按钮点击时显示插屏广告
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成并使用display_ads插件来展示广告的示例代码。这个示例将涵盖基本的集成步骤和展示横幅广告(Banner Ad)的代码。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  display_ads: ^最新版本号  # 请替换为实际的最新版本号

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

2. 配置Android平台

android/app/src/main/AndroidManifest.xml中添加必要的权限和广告配置。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

    <!-- 添加必要的权限 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <!-- 配置广告 -->
    <application
        ...>
        <!-- AdMob应用ID -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx"/>

        <!-- 其他配置 -->
        ...
    </application>
</manifest>

3. 配置iOS平台

ios/Runner/Info.plist中添加必要的广告配置。

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx</string>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

4. 初始化并展示广告

在你的Flutter代码中,初始化并展示横幅广告。以下是一个简单的示例:

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

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

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

  @override
  void initState() {
    super.initState();
    createBannerAd();
  }

  void createBannerAd() {
    BannerAd.createBannerAd(
      adUnitId: 'ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx',  // 替换为你的横幅广告单元ID
      adSize: AdSize.banner,
      request: AdRequest()
        ..addTestDevice('YOUR_TEST_DEVICE_ID')  // 可选:添加测试设备ID进行调试
        ..targetInfo = targetingInfo,
    )
      .then((bannerAd) {
        _bannerAd = bannerAd;
        
        // 加载广告
        _bannerAd!.load();

        // 展示广告
        _bannerAd!.show(
          anchorType: AnchorType.bottom,
          anchorOffset: 0.0,
          horizontalAlignment: HorizontalAlignment.center,
        );
      })
      .catchError((error) {
        print('Failed to load banner ad: $error');
      });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Ad Demo'),
      ),
      body: Center(
        child: Text('Check the bottom for the banner ad!'),
      ),
    );
  }

  @override
  void dispose() {
    // 释放广告资源
    _bannerAd?.dispose();
    super.dispose();
  }
}

注意事项

  1. 广告单元ID:确保使用你自己的AdMob广告单元ID。
  2. 测试设备ID:在开发过程中,你可以添加测试设备ID来确保广告请求不会计入实际展示次数。你可以通过日志输出找到设备ID。
  3. 权限和配置:确保在AndroidManifest.xmlInfo.plist中正确配置了广告所需的权限和配置。

这只是一个基本的示例,实际项目中你可能需要处理更多的错误处理和广告生命周期管理。希望这个示例能帮助你快速集成并展示广告!

回到顶部