Flutter网页广告管理插件admanager_web的使用

Flutter网页广告管理插件admanager_web的使用

简单包,允许我们在Flutter Web中显示来自Ad Manager的广告。最初创建此插件是为了在Flutter Web上显示Adsense广告。

特性

  • 请求Ad Manager网络中的广告
  • 可以在Flutter Web应用中运行Adsense广告

使用

pubspec.yaml文件中添加admanager_web作为依赖项。

dependencies:
  admanager_web: ^x.x.x

导入包:

import 'package:admanager_web/admanager_web.dart';

初始化我们的插件以加载所有JS(需要在第一次广告请求之前调用):

AdManagerWeb.init();

只需将AdBlock小部件添加到你希望显示广告的位置:

[
  AdBlock(
    size: [AdBlockSize.largeRectangle],
    adUnitId: "/6355419/Travel/Europe",
  )
]

加载奖励广告:

[
  AdRewarded().load(
    adUnitId: '/22639388115/rewarded_web_example',
    onAdLoaded: (){},
  )
]

显示奖励广告:

[
  AdRewarded().show(
    onAdClosed: (){},
    onGranted: (int amount){},
  )
]

额外信息

为了提高性能,可以直接在index.html文件的头部添加GPT.js库:

<script
  async
  src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"
></script>

该插件是为了简单地在Flutter Web上显示Google Adsense广告而创建的。它还处于初级阶段,任何帮助使其更好更高效都将受到欢迎。

完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter Web应用中使用admanager_web插件来显示广告和奖励广告。

import 'dart:math';

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化AdManager插件
  AdManagerWeb.init();

  // 运行应用
  runApp(const MyApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'AdManager Web Flutter',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'AdManager Web Flutter'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _adRewarded = AdRewarded();
  bool _adRewardedReady = false;

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

    WidgetsBinding.instance.addPostFrameCallback((_) {
      loadRewarded();
    });
  }

  List<Widget> content = [
    const Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Padding(
          padding: EdgeInsets.all(8.0),
          child: Text("点击+按钮添加内容和广告示例"),
        ),
      ],
    )
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: SingleChildScrollView(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: content,
        ),
      ),
      floatingActionButton: Column(
        mainAxisSize: MainAxisSize.min,
        mainAxisAlignment: MainAxisAlignment.end,
        children: [
          if (_adRewardedReady)
            FloatingActionButton(
              mini: true,
              backgroundColor: Colors.green,
              onPressed: _askRewarded,
              tooltip: '奖励广告',
              child: const Icon(Icons.attach_money),
            ),
          const SizedBox(height: 8),
          FloatingActionButton(
            onPressed: _addMoreContent,
            tooltip: '添加内容',
            child: const Icon(Icons.add),
          ),
        ],
      ),
    );
  }

  void _addMoreContent() {
    List<Widget> newContent = [];

    // 文本用于随机化内容
    List<String> lorem = [
      "牛肉汉堡,猪肉香肠,短肋排骨,猪肉香肠,猪肉香肠,猪肉香肠,猪肉香肠。",
      "牛肉汉堡,猪肉香肠,短肋排骨,猪肉香肠,猪肉香肠,猪肉香肠,猪肉香肠。",
      "牛肉汉堡,猪肉香肠,短肋排骨,猪肉香肠,猪肉香肠,猪肉香肠,猪肉香肠。",
      "牛排,猪肉香肠,短肋排骨,猪肉香肠,猪肉香肠,猪肉香肠,猪肉香肠。",
      "牛排,猪肉香肠,短肋排骨,猪肉香肠,猪肉香肠,猪肉香肠,猪肉香肠。",
    ];

    // 添加AdManager广告
    newContent.add(const Padding(
      padding: EdgeInsets.all(8.0),
      child: AdBlock(
        size: [AdBlockSize.mediumRectangle],
        adUnitId: "/6355419/Travel/Europe",
      ),
    ));

    // 添加随机文本
    newContent.add(
      Padding(
        padding: const EdgeInsets.all(8.0),
        child: Text(lorem[Random().nextInt(lorem.length)]),
      ),
    );

    // 再次添加AdManager广告
    newContent.add(const Padding(
      padding: EdgeInsets.all(8.0),
      child: AdBlock(
        size: [AdBlockSize.mediumRectangle],
        adUnitId: "/6355419/Travel/Europe",
      ),
    ));

    setState(() {
      content.addAll(newContent);
    });
  }

  void _askRewarded() {
    setState(() {
      _adRewardedReady = false;
    });
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: const Text("奖励广告"),
          content: const Text("你想看一个奖励广告吗?"),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: const Text("不"),
            ),
            TextButton(
              onPressed: () {
                Navigator.of(context).pop(true);
                _adRewarded.show(
                  onAdClosed: loadRewarded,
                  onGranted: grantReward,
                );
              },
              child: const Text("是"),
            ),
          ],
        );
      },
    );
  }

  void loadRewarded() {
    _adRewarded.load(
      adUnitId: '/22639388115/rewarded_web_example',
      onAdLoaded: () => setState(() {
        _adRewardedReady = true;
      }),
    );
  }

  void grantReward(int amount) {
    loadRewarded();
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: const Text("奖励广告"),
          content: Text("你获得了$amount"),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: const Text("确定"),
            ),
          ],
        );
      },
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用Flutter网页广告管理插件 admanager_web 的代码示例。这个示例将展示如何在Flutter应用中集成并使用该插件来展示网页广告。

首先,确保你已经在你的 pubspec.yaml 文件中添加了 admanager_web 依赖:

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

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

接下来,在你的 Flutter 项目中,你可以按照以下步骤使用 admanager_web 插件:

  1. 初始化插件

在你的 main.dart 文件中,你需要初始化 AdManagerWeb 插件。

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

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

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

class AdManagerDemo extends StatefulWidget {
  @override
  _AdManagerDemoState createState() => _AdManagerDemoState();
}

class _AdManagerDemoState extends State<AdManagerDemo> {
  late AdManagerWeb adManager;

  @override
  void initState() {
    super.initState();
    // 初始化 AdManagerWeb 插件
    adManager = AdManagerWeb(
      // 你可以在这里配置你的广告参数,例如广告单元ID等
      adUnitId: '你的广告单元ID', // 替换为你的实际广告单元ID
      // 其他配置...
    );

    // 加载广告(通常会在页面加载完成后调用)
    adManager.loadAd();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AdManagerWeb Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 显示广告位
            Container(
              height: 250, // 根据你的广告尺寸调整
              width: AdSize.banner.width.toDouble(), // 假设使用banner广告
              child: AdWidget(
                adManager: adManager,
                // 你可以在这里添加错误处理或加载状态的显示
                onError: (error) {
                  // 处理广告加载错误
                  print('广告加载失败: $error');
                },
                onLoad: () {
                  // 处理广告加载成功
                  print('广告加载成功');
                },
              ),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                // 重新加载广告(例如,在用户点击按钮后)
                adManager.loadAd();
              },
              child: Text('重新加载广告'),
            ),
          ],
        ),
      ),
    );
  }
}
  1. 定义 AdWidget

AdWidget 是用于展示广告的自定义小部件。你可以根据需求自定义这个小部件的行为和外观。在这个例子中,我们假设 AdManagerWeb 插件提供了一个 AdWidget 来展示广告。

注意:实际的 AdWidget 可能需要根据你的插件文档进行调整。上面的代码是一个假设性的示例,具体实现可能有所不同。

  1. 处理广告生命周期

确保你处理广告的生命周期事件,例如加载成功、加载失败、点击等。这可以通过监听 AdManagerWeb 插件提供的事件回调来实现。

  1. 运行应用

现在,你可以运行你的 Flutter 应用,并查看广告是否成功加载和显示。

请确保你已经按照 admanager_web 插件的文档正确配置了广告单元ID和其他必要的参数。

注意:由于我无法直接访问外部库或插件的最新文档和代码,上述示例可能需要根据 admanager_web 插件的实际API进行调整。建议查阅最新的插件文档和示例代码来获取最准确的使用指南。

回到顶部